Sub DresseCombosListes(ComboName$)
'Mise à jour des ComboBox, dont le nom commence par "ComboListe" et dont le suffixe est <= "NbSolvants" (on ne tient compte que des ComboBox visibles sur la feuille),
'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.
'- ComboName : le nom du ComboBox (parmi les ComboBox "ComboListe")
'BOISGONTIER / Magic_Doctor / job75 / Peter_SSs
Dim i As Byte, f1 As Worksheet, f2 As Worksheet, c, ListeSolvTriés As Object, listeST As Object, obj As Object
Set f1 = Sheets("Données")
Set f2 = Sheets("BD")
Set ListeSolvTriés = CreateObject("System.Collections.ArrayList")
Set listeST = CreateObject("Scripting.Dictionary")
'Chargement du tableau "ListeSolvTriés"
For Each c In f2.[ListeItems]
ListeSolvTriés.Add c.Text
Next
ListeSolvTriés.Sort 'tri du tableau par ordre alphabétique
'Chargement du dictionnaire "listeST" à partir du tableau "ListeSolvTriés"
For Each c In ListeSolvTriés.ToArray
listeST(c) = ""
Next c
For Each obj In f1.OLEObjects
If TypeName(obj.Object) = "ComboBox" And ExtractText(obj.Name) = ExtractText(ComboName) Then _
If obj.Name <> ComboName Then If ExtractNumber(obj.Name) <= NbSolvants + 1 Then _
If listeST.Exists(obj.Object.Value) Then listeST.Remove obj.Object.Value
Next
f1.OLEObjects(ComboName).Object.List = listeST.Keys 'transfert du dictionnaire "listeST" dans la liste du ComboBox
f1.OLEObjects(ComboName).Object.DropDown 'déroule la liste
End Sub