Je vais devenir FOU
Mon code ne donne pas les résultats escomptés, et pourtant les affichages que j'ai mis pour débugger vont dans le sens de ce que je veux!
Voici mon code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Dim i As Integer i = 7 With Worksheets("Mouvements - Autres attributs") While ((.Range("A" & i).Value <> TextBoxNoMvt.Value) _ Or (.Range("C" & i).Value <> ComboBoxPeriodeHoraire.Value)) _ And (.Range("A" & i).Value <> "") MsgBox .Range("A" & i).Value & " " & TextBoxNoMvt.Value & " " & .Range("C" & i).Value & " " & ComboBoxPeriodeHoraire.Value ' Affiche 1 1 HPM HPM i = i + 1 Wend MsgBox i End With
Bon. C'est pas bien compliqué.
Dans mon while, j'ai 3 conditions.
Parlons des 2 premières tout d'abord.
Mon msgBox me donne :
.Range("A" & i).Value : 1
TextBoxNoMvt.Value : 1
.Range("C" & i).Value : HPM
ComboBoxPeriodeHoraire.Value : HPM
Par conséquent ces deux choses là sont égales deux à deux
Donc mon "Or" devrait renvoyer "False" vu que les deux égalités sont vraies.
Donc au final False And kkchose ça devrait donner False aussi, et il ne devrait jamais rentrer dans la boucle, et i devrait valoir 7
Or il y rentre une fois, et la valeur de i à la sortie est donc 8.
Je ne comprends pas, je vais devenir fou
Qq minutes plus tard ....
Bon je viens de pousser le débuggage plus loin, et j'ai fais afficher la valeur des booléens que sont chacune des trois conditions.
Et c'est la premiere qui cause problème. Elle renvoie True au lieu de False, alors que les deux valeurs valent toutes les deux 1 .
C'est à rien n'y comprendre
Partager