Sub Macro1()
Dim OC As Worksheet 'déclare la variable OC (Onglet Choix)
Dim OL As Worksheet 'déclare la variable OL (Onglet Liste)
Dim CC As Range 'déclare la variable CC (Cellule Cible)
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)
Dim L As String 'déclare la variable L (Liste)
Set OC = Worksheets("Choix") 'définit l'onglet OC
Set OL = Worksheets("Liste") 'définit l'onglet OL
Set CC = OC.Range("C5") 'définit la cellule cible CC
TV = OL.Range("C4").CurrentRegion 'définit le tableau des valeurs TV
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)) = "" 'alimente le dictionnaire D avec les données en colonne 1 de TV
Next I 'prochaine ligne de la boucle
L = Join(D.Keys, ",") 'définit la liste L (la réunion de l'ensemble des éléments du dictionnaire D sans doublon (les clés), séparés par une virgule)
With CC.Validation 'prend en compote la validation de donnée de la cellule CC
.Delete 'efface une eventuelle validation
.Add xlValidateList, Formula1:=Lst 'ajoute la validation avec L comme Liste
End With 'fin de la prise en compte de validation de données de la cellule CC
End Sub