Sub Macro1()
Dim O1 As Object 'déclare la variable O1 (Onglet 1)
Dim O2 As Object 'déclare la variable O2 (Onglet 2)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim cel As Range 'déclare la variable CEL (CELlule)
Dim D As Object 'déclare la variable D (Dictionnaire)
Set O1 = Sheets("Feuil1") 'définit l'onglet O1
Set O2 = Sheets("Feuil2") 'définit l'onglet O2
DL = O1.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 1 (=A) de l'onglet O1
Set PL = O1.Range("A2:A" & DL) 'définit la plage PL
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For Each cel In PL 'boucle sur toutes les cellules CEL de la plage PL
If cel.Value <> "" Then D(cel.Value) = D(cel.Value) + 1 'alimente le dictionnaire
Next cel 'prochaine valeur de la boucle
'renvoie en A1 de l'onglet O2 la liste des élément uniques
O2.Range("A1").Resize(D.Count, 1) = Application.Transpose(D.keys)
'renvoie en B1 de l'onglet O2 le nombre de fois que l'élément apparaît dans la liste
O2.Range("B1").Resize(D.Count, 1) = Application.Transpose(D.Items)
End Sub