XL 2019 Comparer deux listes en VBA

eduraiss

XLDnaute Accro
Bonjour le forum

Je joins un fichier avec toute les explications

Il me faudrait si possible une automatisation VBA me permettant de comparer deux colonnes A et B et extraire en colonne C les noms présent en colonne B mais pas en colonne A

Merci de votre retour

Cordialement,
 

Pièces jointes

  • Eric 1.xlsm
    10.5 KB · Affichages: 13

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Eduraiss, Chris,
Avec un peu de retard, un essai en PJ avec :
VB:
Sub Tri()
Dim DerLig As Integer, Lc As Integer, L As Integer
DerLig = Range("B65500").End(xlUp).Row
Range("C2:C1000").ClearContents
Lc = 2
For L = 2 To DerLig
    If Application.CountIf(Range("A:A"), Cells(L, "B")) = 0 Then
        Cells(Lc, "C") = Cells(L, "B")
        Lc = Lc + 1
    End If
Next L
End Sub
 

Pièces jointes

  • Eric 1.xlsm
    15.7 KB · Affichages: 16

Paf

XLDnaute Barbatruc
Bonjour Eduraiss, Chris, sylvanu,

une autre solution par tableaux et dictionary pour la rapidité:

VB:
Private Sub Eduraiss()
Dim DL1 As Long, DL2 As Long, Dico, i As Long, WS1 As Worksheet, T1, T2

Set WS1 = Worksheets("Feuil1")
Set Dico = CreateObject("Scripting.Dictionary")

DL1 = WS1.Range("A" & Rows.Count).End(xlUp).Row
DL2 = WS1.Range("B" & Rows.Count).End(xlUp).Row
T1 = WS1.Range("A2:A" & DL1)
T2 = WS1.Range("B2:B" & DL2)

For i = LBound(T2) To UBound(T2)
    Dico(T2(i, 1)) = ""
Next
For i = LBound(T1) To UBound(T1)
    If Dico.Exists(T1(i, 1)) Then Dico.Remove (T1(i, 1))
Next

If Dico.Count > 0 Then WS1.Range("C2").Resize(Dico.Count, 1) = Application.Transpose(Dico.keys)

End Sub
à adapter éventuellement

A+

edit : trop tard !!
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 153
Membres
103 137
dernier inscrit
Billly