Problème lors de la suppression de lignes VBA
2pax.cruz
-
Polux31 Messages postés 7219 Statut Membre -
Polux31 Messages postés 7219 Statut Membre -
Bonjour,
je suis en train de travailler sous VBA et j'ai un soucis.
Je dois supprimer les lignes qui ne commencent pas par un point.
J'ai fais cela :
For i = 1 To 250
If Not Cells(i, 1) Like ".*" Then
Cells(i, 1).Delete
End If
Next i
Le seul soucis, c'est qu'il reste encore des lignes qui ne sont pas correctes.
En fait, je crois que c'est du au fait qu'il remonte les lignes à chaque fois. Je m'explique.
Il analyse la ligne 1 : imaginons qu'elle soit mauvaise, il la supprime. Donc tout remonte d'une ligne.
Il analyse ensuite la ligne 2. Mais ce qui était auparavant dans la ligne 2 est dorénavant dans la ligne 1. Donc il n'a pas analysé cela.
Je sais pas si c'est compréhensible.
Comment faire?
Merci.
je suis en train de travailler sous VBA et j'ai un soucis.
Je dois supprimer les lignes qui ne commencent pas par un point.
J'ai fais cela :
For i = 1 To 250
If Not Cells(i, 1) Like ".*" Then
Cells(i, 1).Delete
End If
Next i
Le seul soucis, c'est qu'il reste encore des lignes qui ne sont pas correctes.
En fait, je crois que c'est du au fait qu'il remonte les lignes à chaque fois. Je m'explique.
Il analyse la ligne 1 : imaginons qu'elle soit mauvaise, il la supprime. Donc tout remonte d'une ligne.
Il analyse ensuite la ligne 2. Mais ce qui était auparavant dans la ligne 2 est dorénavant dans la ligne 1. Donc il n'a pas analysé cela.
Je sais pas si c'est compréhensible.
Comment faire?
Merci.
2 réponses
-
Bonjour,
Il faut décrémenté i de 1 si la ligne est supprimée. Il faut également sortir de la boucle dès qu'une cellule en A est vide, sous peine de faire une boucle infinie:
For i = 1 To 250 If Cells(i,1).Value = "" Then Exit For If Not Cells(i, 1) Like ".*" Then Cells(i, 1).Delete i = i - 1 End If Next i
;o) -
Bonsoir,
Ou bien faire ta boucle en partant du bas :
For i = 250 To 1 step -1
D'autre part tu parles de supprimer la ligne, pour ça tu devrais modifier ainsi :
Cells(i, 1).entirerow.Delete
eric