Un contrôle ComboBox permet d’afficher une liste de données.
Nous sommes parfois confronté à afficher une liste présente dans une colonne sans les doublons et trié par ordre croissant.
Le but de ce billet est de vous présenter une procédure permettant de réaliser ce travail pour tout contrôle ComboBox. Il suffit de passer son nom comme paramètre.
Cette procédure peut se trouver soit dans le module de la feuille où se trouve le contrôle ou dans un module standard permettant ainsi de l’utiliser pour plusieurs UserForm
Code de la procédure
Function LoadComboBox(Cbo As msforms.ComboBox, ColumnData As Range) As Boolean ' Arguments ' Cbo (Objet contrôle) - Contrôle ComboBox (Exemple ComboBox1) ' ColumnData (Range) - Colonne dont on veut afficher les éléments uniques et triés Dim Tabl(), TableTemp As Variant, Elem1 As Integer, Elem2 As Integer If ColumnData.Columns.Count <> 1 Then Exit Function ' Sortie de la fonction Tabl = ColumnData.Value ' Crée une table Cbo.Clear ' Tri Croissant For Elem1 = 1 To UBound(Tabl) For Elem2 = 1 To UBound(Tabl) If Tabl(Elem1, 1) < Tabl(Elem2, 1) Then TableTemp = Tabl(Elem1, 1): Tabl(Elem1, 1) = Tabl(Elem2, 1): Tabl(Elem2, 1) = TableTemp End If Next Next ' Exclusion des doublons Cbo.AddItem Tabl(1, 1) For Elem1 = 2 To UBound(Tabl) If Tabl(Elem1, 1) <> Tabl(Elem1 - 1, 1) Then Cbo.AddItem Tabl(Elem1, 1) Next LoadComboBox = True End Function
Exemple de son utilisation
Private Sub UserForm_Initialize() Set rng = shtDb.Range("A1").CurrentRegion With rng LoadComboBox ComboBox1, .Offset(1, columnoffset:=4).Resize(.Rows.Count - 1, 1) ' End With End Sub
Commentaires récents