1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| Private Sub UserForm_Activate()
Dim dicoA, dicoB, i, e, a, tabloA, tabloB, tablo2col
'on créé les deux dictionnaires
Set dicoA = CreateObject("Scripting.Dictionary")
Set dicoB = CreateObject("Scripting.Dictionary")
With Sheets(1)
'on met les 2 colonne séparément dans une variable tableau en memoire
tabloA = .Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
tabloB = .Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row)
'on dimention le tablo de destination sur 2 colonne et le nombre de lignes utilisés dans le sheets
ReDim tablo2col(.UsedRange.Rows.Count, 2)
'on rempli la colonne 1 du tablo de destination en memoire en testant l'existence de l'item dans le dicoA
For i = 1 To UBound(tabloA)
If dicoA.exists(tabloA(i, 1)) = False Then
dicoA(tabloA(i, 1)) = tabloA(i, 1)
e = e + 1
tablo2col(e, 1) = tabloA(i, 1)
End If
Next i
'on rempli la colonne 2 du tablo de destination en memoire en testant l'existence de l'item dans le dicoA et le dicoB
'de la colonne 1 et la colonne2
For i = 1 To UBound(tabloB)
If dicoB.exists(tabloB(i, 1)) = False And dicoA.exists(tabloB(i, 1)) = False Then
dicoB(tabloB(i, 1)) = tabloB(i, 1)
a = a + 1
tablo2col(a, 2) = tabloB(i, 1)
End If
Next i
End With
With ListBox1: .ColumnWidths = "50;50": .List = tablo2col: .ColumnCount = 2: End With
End Sub |
Partager