Voici mon petit probleme: For i = 2 To N If (Cells(i, 38) = 9156) Then Rows(i).Delete i = i - 1 End If Next
Lorsque j'exécute cette macro effectivement il m'elimine bien toutes les lignes dont la cellule en colonne 38 est égale à 9156 mais maintenant si je souhaite modifier cette macro en :
For i = 2 To N If (Cells(i, 38) <> 9156) Then Rows(i).Delete i = i - 1 End If Next
ben cette fois-ci il tourne indéfiniement dans le vide. Pourquoi ?
Merci de m'apporter une aide.
LeSqual.
Publicité
Posté le 22-04-2006 à 09:48:37
olivthill
Posté le 22-04-2006 à 10:39:54
La variable i recule d'un pas (ligne i = i-1), puis avance d'un pas (ligne Next).
Autrement dit, i fait du sur-place, sauf lorsque une cellule contient 9156.
Donc, pour que la boucle se termine, il faut qu'il existe N-2 cellules contenant 9156.
porcinet82
Posté le 22-04-2006 à 13:51:17
Salut,
Lorsque l'on veut supprimer des lignes, il faut partir du bas pour aller vers le haut avec un pas de -1. Ainsi, ta boucle serait plutot de ce genre la :