Sub Macro1()
Dim OS As Worksheet 'déclare la variable OS (onglet Source)
Dim OD As Worksheet 'déclare la variable OD (onglet Destination)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Set OS = Worksheets("Feuil1") 'définit l'onglet source OS
Set OD = Worksheets("Feuil2") 'définit l'onglet destination OD
TV = OS.Range("A21").CurrentRegion 'définit le tableau des valeurs TV
OD.Range("B3").CurrentRegion.ClearContents 'efface d'eventuelles anciennes données de l'onglet destination
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
D(TV(I, 1)) = D(TV(I, 1)) + 1 'alimente le distionnaire D
Next I 'prochaine ligne de la boucle
OD.Range("B3").Resize(D.Count).Value = Application.Transpose(D.keys) 'renvoie à partir de B3 la liste des éléments du dictionnaire D sans doublons
OD.Range("D3").Resize(D.Count).Value = Application.Transpose(D.Items) 'renvoie à partir de D3 le nombre d'occurrences de chaque élément du dictionnaire D sans doublons
End Sub