Suppression ligne tableau

Suppression ligne tableau - VB/VBA/VBS - Programmation

Marsh Posté le 22-04-2006 à 09:48:37    

Bonjour,
 
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.

Reply

Marsh Posté le 22-04-2006 à 09:48:37   

Reply

Marsh 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.
 
 
 

Reply

Marsh 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 :

Code :
  1. For i = N To 2 Step -1
  2.   If (Cells(i, 38) = 9156) Then
  3.     Rows(i).Delete
  4.   End If
  5. Next


 
@+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed