Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range, r As Range, f$, a
Set cel = [G20] 'à adapter
cel.Validation.Delete 'RAZ
If Target.Address <> cel.Address Then Exit Sub
Set r = Feuil2.Range("G9", Feuil2.Range("G" & Rows.Count).End(xlUp)) 'à adapter
If r.Row < 9 Then Exit Sub
For Each r In r
If r <> "" Then If InStr(f & Chr(1), Chr(1) & r & Chr(1)) = 0 Then f = f & Chr(1) & r
Next
a = Split(Mid(f, 2), Chr(1))
tri a, 0, UBound(a)
[J:J].ClearContents 'colonne masquée
[J1].Resize(UBound(a) + 1) = Application.Transpose(a) 'Transpose est limitée à 65536 lignes
cel.Validation.Add xlValidateList, Formula1:="=$J$1:$J$" & UBound(a) + 1 'création de la liste
End Sub