Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Long '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)
Dim TEMP As Variant 'déclare la variable TEMP (tableau TEMPoraire)
Dim Liste As String 'déclare la variable Liste (Liste de validation)
Set O = Sheets("REF") 'définit l'onglet O
DL = O.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 O
Set PL = O.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
D(CEL.Value) = "" 'alimente le dictionnaire D
Next CEL 'prochaine cellule de la boucle
TEMP = D.keys 'récupèr dans le tableau temporaire TEMP les données sans doublon
Call Tri(TEMP, LBound(TEMP), UBound(TEMP)) 'tri alphabétique du tableau TEMP
Liste = Join(TEMP, ",") 'définit la liste Liste en plaçant une virgule enrte chaque donnée
With Sheets("Validation").Range("A1").Validation 'prend en compte la validation de la cellule A1 de l'onglet "Validation"
.Delete 'efface une éventuelle ancienne validation de données
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:=Liste 'attribue la variable Liste comme liste de validation de données
End With 'fin de la prose en compte de...
End Sub