Problème lors de la suppression de lignes VBA

Fermé
2pax.cruz - 29 juin 2010 à 16:59
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 30 juin 2010 à 00:24
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
29 juin 2010 à 17:15
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 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
29 juin 2010 à 22:41
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 mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
30 juin 2010 à 00:24
Salut Eric,

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

Rows(i).Delete fonctionne aussi.

;o)
0