[VBA] Boucle While
modjibe
Messages postés
45
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je ne comprends pas pourquoi ma boucle plante.
Voilà la condition :
Do While a > b And Left(cellExcel.Value, 5) <> "Total"
Au niveau logique le And me choque mais ca ne marche pas avec un Or (les conditions ne peuvent pas être vraies en même temps....).
Cette boucle parcourt les lignes d'un tableau à la recherche de "Total". En passant dessus ça ne s'arrête pas et ça plante puisque à l'intérieur de ma boucle je traite la valeur cellExcel.Value en partant du principe que c'est un entier. Alors voilà ...
Y'a -t-il des choses à savoir ? J'ai essayé en séparant mes blocs par des parenthèses etc mais ça ne marche pas. C'est mon dernier bug avant que mon petit programme soit exploitable...
Je ne comprends pas pourquoi ma boucle plante.
Voilà la condition :
Do While a > b And Left(cellExcel.Value, 5) <> "Total"
Au niveau logique le And me choque mais ca ne marche pas avec un Or (les conditions ne peuvent pas être vraies en même temps....).
Cette boucle parcourt les lignes d'un tableau à la recherche de "Total". En passant dessus ça ne s'arrête pas et ça plante puisque à l'intérieur de ma boucle je traite la valeur cellExcel.Value en partant du principe que c'est un entier. Alors voilà ...
Y'a -t-il des choses à savoir ? J'ai essayé en séparant mes blocs par des parenthèses etc mais ça ne marche pas. C'est mon dernier bug avant que mon petit programme soit exploitable...
3 réponses
Bonjour,
chez moi, de cette façon, le [And] et le [Or] fonctionne !
Lupin
chez moi, de cette façon, le [And] et le [Or] fonctionne !
Option Explicit Sub Test() Dim cellExcel As Range Dim a As Long, b As Long Set cellExcel = Range("A1") a = 10: b = 5 While ((a > b) Or (Left(cellExcel.Value, 5) <> "Total")) '... DoEvents a = (a - 1) ActiveCell.Offset(1, 0).Select Set cellExcel = ActiveCell Wend Set cellExcel = Nothing End Sub ' Sub Test2() Dim cellExcel As Range Dim a As Long, b As Long Range("A1").Select Set cellExcel = ActiveCell a = 7: b = 5 While ((a > b) And (Left(cellExcel.Value, 5) <> "Total")) '... DoEvents a = (a - 1) ActiveCell.Offset(1, 0).Select Set cellExcel = ActiveCell Wend Set cellExcel = Nothing End Sub '
Lupin
modjibe
Messages postés
45
Date d'inscription
Statut
Membre
Dernière intervention
3
Bon ben je vais parenthéser à mort alors :)