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 Sub

Merci 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 Sub

Seule 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,

Rechercher des sujets similaires à "suppression ligne suivant liste"