Public NomComboBox$ 'mémorise la variable
Sub CreeListeDispo()
'Mise à jour des ComboBox, dont le nom commence par "ComboListe" (préfixe), de la feuille "Données" qui puisent tous leurs items dans la même base de données (feuille "BD").
'Chaque item ne peut être choisi qu'une fois dans un seul ComboBox ; il disparaît automatiquement des listes des autres ComboBox.
'En somme, on ne peut pas choisir plusieurs fois le même item.
'BOISGONTIER / Magic_Doctor/job75
Dim f1 As Worksheet, f2 As Worksheet, c, liste As Scripting.Dictionary
Set f1 = Sheets("Données")
Set f2 = Sheets("BD")
Set liste = New Dictionary 'le dictionnaire
With f2.Range("ListeItems").Offset(, 2)
.Value = .Offset(, -2).Value
.Sort .Cells, xlAscending, Header:=xlNo 'tri
For Each c In .Cells
If Len(c) Then liste(c.Value) = "" 'on remplit le dictionnaire
Next
.ClearContents
End With
For Each c In f1.OLEObjects
If TypeName(c.Object) = "ComboBox" And Left(c.Name, 10) = "ComboListe" Then _
If c.Name <> NomComboBox Then If liste.Exists(c.Object.Value) Then liste.Remove c.Object.Value
Next
f1.OLEObjects(NomComboBox).Object.List = liste.Keys
f1.OLEObjects(NomComboBox).Object.DropDown 'déeoule la liste
End Sub