VBA - Supprimer des lignes dans une boucle

Vinvol

XLDnaute Junior
Bonjour,

J'ai une macro qui, sous conditions, copie des lignes d'un fichier dans un autre onglet, puis supprime ces lignes.
Le code correspond à ça :

HTML:
If Y.Cells(j, 5) = "I" And Not Y.Cells(j, 18) Like "*TRM*" Then
Y.Rows(j).EntireRow.Copy Destination:=Z1.Range("A65536").End(xlUp).Offset(1, 0)
Y.Rows(j).EntireRow.Delete
End If
Next j

Ca marche très bien, à un détail près : si plusieurs lignes répondant aux conditions se suivent, alors seule une ligne sur 2 est traitée.
Par exemple, si mes lignes 5,6 et 7 sont concernées, j'aurai d'abord j=5, donc ma ligne 5 est copiée puis supprimée. Du coup, ma ligne 6 devient 5, mais mon j passe à 6 (et traite la ligne qui était précédemment 7, et est devenue 6 après la suppression de 5).

Je suppose qu'il doit y avoir un système de boucle à mettre en place, mais je ne sais pas comment le tourner...

Quelqu'un aurait-il une proposition ?

Merci,
Vincent
 

Efgé

XLDnaute Barbatruc
Re : VBA - Supprimer des lignes dans une boucle

Bonjour Vinvol
Quand on supprime des lignes il faut partir du bas vers le haut.
Je pense que tu fais
For J = 2 to 1000
Il faut faire
For J = 1000 to 2 step -1

Cordialement
 

Vinvol

XLDnaute Junior
Re : VBA - Supprimer des lignes dans une boucle

Bonjour Efgé,

Efficace, comme toujours !!!
Y'a des réponses comme ça... on se sent bête d'avoir posé la question tellement ça tombe sous le sens. Et pourtant, ça ne me venait pas.

Merci beaucoup, ça marche (évidemment) très bien.
Vincent
 

Discussions similaires

Réponses
7
Affichages
456