Bonsoir le fil, bonsoir le forum,
Une autre proposition avec la macro événementielle SelectionChange ci-dessous :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim TC As Variant 'déclare la variable TC (Tableau de Cellules)
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)
Dim L As Variant 'déclare la variable L (Liste)
If Target.Address <> "$C$3" Then Exit Sub 'si la cellue sélectionnée n'est pas la cellue C3, sort de la procédure
TC = Range("A1:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row) 'définit le tableau de Cellules TC
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 1 To UBound(TC, 1) 'boucle sur toutes les lignes du tableau TC
D(TC(I, 1)) = "" 'alimente le dictionnaire D
Next I 'prochaine cellule de la boucle
L = Join(D.keys, ",") 'définit la liste L avec les éléments uniques (sans doublon) du dictionnaire D
With Target.Validation 'prend en compte la validation de donnée de la cellule C3
.Delete 'efface la validation de données
.Add xlValidateList, Formula1:=L 'ajoute la validation avec L comme liste
End With 'fin de la prise en compte de la validation de données de la cellule C3
End Sub