Problème lors de la suppression de lignes VBA

2pax.cruz -  
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

2 réponses

Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
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)
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 275
 
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
0
Polux31 Messages postés 6917 Date d'inscription   Statut Membre Dernière intervention   1 204
 
Salut Eric,

Exact il manque Entirerow et en bouclant à rebours ça le fait bien aussi.

Rows(i).Delete fonctionne aussi.

;o)
0