|
Publicité | ||||||||||||||||||||||
|
|
#1 (permalink) |
|
Membre du Club
![]() Date d'inscription: novembre 2008
Messages: 109
|
Bonjour,
Il faut que j'exécute 3 fois ce code sur ma feuille Histo contenant 388 lignes pour supprimer celles dont je ne trouve pas la référence dans la feuille OF. Code :
i = Sheets("Histo").Range("B65536").End(xlUp).Row For Each c In Sheets("Histo").Range("A" & i & ":A2") Set v = Sheets("OF").Range("G:G").Find(What:= c.Value, LookIn:=xlValues, LookAt:=xlPart) If v Is Nothing Then k = c.Row Rows(k).Delete j = j + 1 End If Next c MsgBox j & " lignes supprimées" j = 0 Code :
i = Sheets("Histo").Range("B65536").End(xlUp).Row For Each c In Sheets("Histo").Range("A" & i & ":A2") Set v = Sheets("OF").Range("G:G").Find(What:= c.Value, LookIn:=xlValues, LookAt:=xlPart) If v Is Nothing Then c.Interior.ColorIndex = 4 j = j + 1 End If Next c Bruno |
|
|
|
|
|
#3 (permalink) |
|
Membre du Club
![]() Date d'inscription: novembre 2008
Messages: 109
|
Bonjour mapeh,
merci de ta réponse rapide. L'ajout de Step -1 me génère une erreur de compilation : Erreur de syntaxe. De toute façon, si je fait : Code :
For Each c In Sheets("HistoriqueGSI").Range("A2:A" & i) As-tu une autre idée ? Bruno |
|
|
|
|
|
#4 (permalink) |
|
Membre actif
![]() Date d'inscription: octobre 2007
Localisation: 29
Messages: 176
|
Re-,
essaie avec ce code : pour une suppression de lignes, il faut toujours aller du bas vers le haut.... Code :
Sub suppr() Dim Derlig As Long, I As Long With Sheets("Histo") Derlig = .Range("B65536").End(xlUp).Row For I = Derlig To 2 Step -1 Set v = Sheets("OF").Range("G:G").Find(What:=.Cells(I, 1).Value, LookIn:=xlValues, LookAt:=xlPart) If v Is Nothing Then Rows(I).Delete j = j + 1 End If Next I End With MsgBox j & " lignes supprimées" j = 0 End Sub |
|
|
|
|
|
#6 (permalink) |
|
Expert Confirmé
![]() Date d'inscription: juillet 2008
Localisation: Elsass
Âge: 24
Messages: 1 887
|
Le problème du for each est qu'il a de haut en bas
Tu test la ligne 1 c'est bon tu tests la ligne 2 tu la supprime, la ligne 3 monte a la place de la ligne 2 Tu test la ligne 3 (qui est l'ancienne ligne 4) .... Il y a des ligne que tu ne testera jamais, du coup tu doit lancer le code plusieurs fois Regarde a l'envers ce que cela donne, tu comprendra l'intérêt |
|
|
|
|
|
#7 (permalink) |
|
Membre du Club
![]() Date d'inscription: novembre 2008
Messages: 109
|
Bonjour Krovax,
Le For Each qui pose problème teste bien les lignes de bas en haut. Code :
For Each c In Sheets("Histo").Range("A" & i & ":A2") Ce qui est curieux c'est que quelque soit la méthode de test des lignes, le code me supprime 61 lignes, puis 26 et enfin 1. As-tu une autre idée, car je ne vois pas où se trouve l'erreur. Cordialement. Bruno |
|
|
|
|
|
![]() |
||
[XL-2000] Suppression de lignes
|
||
| Outils de la discussion | |
|
|