Vba excel, remplissage d'un combobox ou d'une listbox

Description

Fonction permettant de charger un combobox ou une listbox de choix par défaut indiquer par le programmeur et de choix figurant dans un tableau.

>>>>> Nécessite la fonction Derniere_Ligne présente sur code source.<<<<<<

Source / Exemple :


'Charge un combobox ou une listbox (pas les deux en même temps!) de choix définis au départ puis saisi dans la base de données
'Nécessite la fonction Derniere_Ligne
'Feuille: nom de la feuille. Attention pas celui de l'onglet!!!
'Cellules: mettre entre guillemets Ex:"A2" ou "A2:D2" si A1 et le titre du tableau
'Controle: indiquer nom de la fenêtre suivi du nom du controle (Listbox ou Combobox)
'Choix_Defini: Liste de choix définis au départ
'Ex: Liste_Choix Feuil2, "C2", UserForm1.Co_theme, "Action", "Aventure", "Policier", "Drame", "Dessin Animé", "Romantique"

Public Function Liste_Choix(Feuille As Worksheet, Cellules As String, Controle As Control, ParamArray Choix_Defini() As Variant)
Dim Choix As New Collection
Dim List As Variant
Dim a As Long
Dim b As Long
Dim c As Long '= nombre de choix
Dim Temp_Choix As String
Dim Temp_Num As Integer

If UBound(Choix_Defini()) <> -1 Then
    For a = 0 To UBound(Choix_Defini())
        Choix.Add UCase(Choix_Defini(a)), CStr(Choix_Defini(a))
    Next a
End If

For a = 0 To Derniere_Ligne(Feuille, Cellules)
    If Feuille.Range(Cellules).Offset(a).Value <> "" Then
        On Error Resume Next
        Choix.Add UCase(Feuille.Range(Cellules).Offset(a).Value), CStr(Feuille.Range(Cellules).Offset(a).Value)
        On Error GoTo 0
    End If
Next a

c = Choix.Count
b = c

' Charge la liste de choix du + petit au + grand
Do While c <> Controle.ListCount
    Temp_Choix = Choix.Item(1)
    Temp_Num = 1
    For a = 1 To b
        
        If Temp_Choix <> Choix.Item(a) Then
            If StrComp(Temp_Choix, Choix.Item(a), vbTextCompare) = 1 Then
                Temp_Choix = Choix.Item(a)
                Temp_Num = a
            End If
        End If
    Next a
    Controle.AddItem Temp_Choix
    Choix.Remove (Temp_Num)
    b = Choix.Count
    Temp_Choix = ""
    Temp_Num = 0
Loop
End Function

Conclusion :


Exemple d'utilisation:
Liste_Choix Feuil2, "C2", UserForm1.Co_theme, "Action", "Aventure", "Policier", "Drame", "Dessin Animé", "Romantique"

Charge le combobox du userform1 qui s'appelle Co_theme des valeurs par défaut de "Action" jusqu'à "Romantique" (pas de limite) et ajoute ceux de la Feuil2 ( mettre le nom réelle de la feuille qui se trouve à gauche du nom entre parenthèse dans l'exploratuer de VBE) de la colonne C2 jusqu'a la fin de cette colonne (d'où l'utilisation de Derniere_Ligne) en supprimant les doublons!

Ce qui permets de faire vivre le combobox en chargeant les nouveau choix insérer au fur et à mesure par les utilisateurs du fichier.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.