Sub CreeListeDispo(nomCombo$)
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) 'on tri, par ordre alphabétique, dans une colonne "fantôme" dédiée sur la feuille "BD"
.Value = .Offset(, -2).Value 'récupération dans la colonne "fantôme" de l'intégralité de "ListeItems"
.Sort .Cells, xlAscending, Header:=xlNo 'tri
For Each c In .Cells
If Len(c) Then liste(c.Value) = "" 'on remplit le dictionnaire
Next
.ClearContents 'la colonne "fantôme" est purgée
End With
For Each c In f1.OLEObjects
If TypeName(c.Object) = "ComboBox" And Left(c.Name, 10) = nomCombo Then 'on passe en revue tous les ComboBox présents dans la feuille et on ne retient que ceux dont le nom commence par "ComboListe"
If liste.Exists(c.Object.Value) Then liste.Remove c.Object.Value
End If
Next
For Each c In f1.OLEObjects
If TypeName(c.Object) = "ComboBox" And Left(c.Name, 10) = nomCombo Then 'on passe en revue tous les ComboBox présents dans la feuille et on ne retient que ceux dont le nom commence par "ComboListe"
c.Object.List = liste.Keys
End If
Next
End Sub