Bonjour,
Je n’arrive pas à comprendre le fonctionnement du code si dessous et donc de pouvoir trouver un remède, car lorsque j’utilise ma variable l_nblig dans une autre procédure, elle est à 0 et donc ma procédure ne fonctionne pas.
Je m’explique,
Je lance ma procédure, le code si dessous,
Tous se passe bien, mais la séquence se termine presque toujours après le code SET même si je supprime la ligne On Error GoTo fin et fin : ?
Donc les lignes l_nblig = Int(PixH) et l_nbcol = Int(PixW) ne sont pas exécutées ?
Procédure dans module 1,
Option Explicit
'*** ajout 2015 ****
Public seuil_Luminance As Long
Public l_nblig As Long, l_nbcol As Long
Procédure dans module 2,
Function GetPointsImage(Ctrl As MSForms.Control, Quadrillage As Boolean) As Range
Dim col&, Lgn&
Dim cHDC&, PixW!, PixH!
Dim Tabl() As Long
On Error GoTo fin
cHDC = DCCtrl(Ctrl)
With Ctrl
PixW = PointsToPixels(.Width)
PixH = PointsToPixels(.Height)
End With
ReDim Tabl(1 To Int(PixH), 1 To Int(PixW))
For Lgn = 1 To UBound(Tabl)
For col = 1 To UBound(Tabl, 2)
Tabl(Lgn, col) = GetPixel(cHDC, col, Lgn)
Next col
Next Lgn
Set GetPointsImage = Tapisse(Tabl, Quadrillage)
'***ajout 2015***
l_nblig = Int(PixH)
l_nbcol = Int(PixW)
'***********
fin:
End Function
Merci de l'aide
Bien cordialement
Mercie pour les remarques.
J’ai supprimé le SET mais ça ne fonctionne plus.
Dans le nom de mes macros j’avais un code qui faisait appel à un autre fichier qui n’existe plus sur mon PC, mais le même code est bien sur mon PC. J’ai rétabli la situation et c’est rentré dans l’ordre ???
Pour faire un pas à pas j’ai mis un stop dans mon code, puis je commande par le bouton pas à pas détaillé. Faut-il bien pratiqué comme cela ?
Bien cordialement
j'avais lu un peu rapidement et pas fait attention que ta fonction était As Range.Le Set est donc justifié.
Pour faire un pas à pas j’ai mis un stop dans mon code, puis je commande par le bouton pas à pas détaillé. Faut-il bien pratiqué comme cela ?
oui, et contrôler le contenu de tes variables.
Tu te plains que l_nblig = 0,
or l_nblig = Int(PixH) et PixH est calculé ici :
Il faut donc contrôler que Ctrl soit bien l'objet que tu attends, et voir la valeur sa propriété .Height et celle de sa conversion PointsToPixels(.Height)
Et si dans ton autre procédure tu as déclaré une autre variable l_nblig tu utiliseras celle-ci non initialisée à la place de Public l_nblig calculée
eric
Merci pour toutes les explications.
ça remarque correctement.
Bien cordialement