Suppression de ligne suivant une liste
Bonjour,
J'aimerai mettre le code ci-dessous que j'ai trouvé sur le web en application.
Je veux supprimer les lignes dans la feuille "Cockpit" et cela à partir de la ligne 7 dont les valeurs de la colonne E sont dans la feuille "Liste" de la colonne A à partir de A1.
Qq'un peut il m'aider ?
Sub supLignesListeRapide()
Application.ScreenUpdating = False
Set f1 = Sheets("Cockpit")
Set f2 = Sheets("Liste")
colcode = 5
colListe = 1
n = f2.Cells(65000, colListe).End(xlUp).Row
liste = f2.Cells(2, colListe).Resize(n - 1)
Set d = CreateObject("scripting.dictionary")
For Each c In liste: d(c) = "": Next c
n = f1.Cells(65000, colcode).End(xlUp).Row
a = f1.Cells(2, colcode).Resize(n - 1)
For i = LBound(a) To UBound(a)
If d.exists(a(i, 1)) Then a(i, 1) = 0 Else a(i, 1) = "sup"
Next i
Columns("b:b").Insert Shift:=xlToRight
[B2].Resize(UBound(a)) = a
[A2].CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes
On Error Resume Next
Range("B2:B65000").SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
Columns("b:b").Delete Shift:=xlToLeft
End SubMerci d'avance pour votre aide :)
Bonjour,
Voici un essai si j'ai compris :
Sub supLignesListeRapide()
Dim temp(), d As Dictionary
Set d = CreateObject("scripting.dictionary")
With Sheets("Liste")
dl1 = .Cells(.Rows.Count, 1).End(xlUp).Row
For i = 1 To dl1
d(.Cells(i, 1).Value) = ""
Next i
End With
With Sheets("Cockpit")
dl2 = .Cells(.Rows.Count, 5).End(xlUp).Row
ReDim temp(1 To dl2 - 7 + 1, 1 To .UsedRange.Columns.Count)
For i = 7 To dl2
If Not d.exists(.Cells(i, 5).Value) Then
n = n + 1
For k = 1 To UBound(temp, 2)
temp(n, k) = .Cells(i, k).value
Next k
End If
Next i
If n > 0 Then
.Cells(7, 1).Resize(dl2, UBound(temp, 2)).ClearContents
.Cells(7, 1).Resize(n, UBound(temp, 2)) = temp
End If
End With
End SubSeule la fin diffère vraiment. J'ai donc ajusté de manière à commencer à partir de A1 de Liste et à partir de E7 de Cockpit.
Au lieu de dire : si la valeur existe dans Liste, on met 0 sinon on met "sup" puis on filtre et on supprime les lignes répondant au critère, je suis resté en mémoire. Et j'ai fait l'impasse sur la mise à 0 de la colonne 5.
Ce sera peut-être à modifier un peu...
Cdlt,