Bonjour,
Dans les 2 cas c'est la même explication :
Y est un booléen donc Vrai ou Faux donc on ramène tout à Vrai ou Faux
Prenons la 2ème expression :
lbl1.Visible = TextBox1 = ""
Si TextBox1 est évalué comme "Vide" alors TextBox1 = ""
est vrai et lbl.Visible est = Vrai
Si ça peut t'aider à mieux comprendre, on pourrait aussi écrire l'expression avec une parenthèse :
lbl1.Visible = (TextBox1 = "")
Si ce qui est entre parenthèse est vrai alors lbl1.Visible = Vrai...
Dans l'autre expression :
If Ctrl.Name Like "lbl*" Then Y = Y Or Ctrl.Visible
Là encore on pourrait écrire avec une parenthèse si ça peut t'aider à comprendre :
If Ctrl.Name Like "lbl*" Then Y = (Y Or Ctrl.Visible)
Y prend la valeur du contenu de la parenthèse...
C'est la même explication : Y est Vrai ou Faux selon le cheminement dans la boucle For
Tout au début, à l'initialisation Y est Faux
Après le premier passage dans la boucle For si le 1er Ctrl est visible c'est que le TextBox est vide donc Y est Vrai car dans une évaluation logique (Y or Vrai) est évalué comme Vrai : Quel que soit le nombre de Vrai, s'il y a un seul Vrai alors Y or Expression est évalué comme Vrai. Donc tant qu'il y aura un Ctrl.Visible, Y restera Vrai.
Pour t'en convaincre tu peux exécuter cette macro :
Sub test()
Dim Y As Boolean, Resultat As Boolean
Resultat = Y Or Y
MsgBox Resultat
Resultat = Y Or True Or True Or True
MsgBox Resultat
End Sub
Dans le premier MsgBox tous les Y étant Faux (et pour cause !) le résultat est "Faux"
Dans le 2ème Msgbox, Y est toujours Faux mais il y a au moins un Vrai (Quel qu'en soit le nombre) donc le résultat est Vrai...
C'est Logique : Pas Vrai ?
A+