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