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

Soyez le premier à donner votre avis sur cette source.

Vue 16 568 fois - Téléchargée 1 641 fois

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

Ajouter un commentaire

Commentaires

dedederidiny
Messages postés
43
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
15 mai 2011
-
un petit zip et ce serait genial
dedederidiny
Messages postés
43
Date d'inscription
dimanche 1 février 2004
Statut
Membre
Dernière intervention
15 mai 2011
-
merci
info19
Messages postés
17
Date d'inscription
lundi 27 septembre 2010
Statut
Membre
Dernière intervention
28 décembre 2012
-
merci bien

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.