XL 2019 Création d'une ComboBox de sous-catégorie

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Edoliie

XLDnaute Nouveau
Bonjour,

Je cherche à créer une liste de choix (combobox) dans un formulaire (userform) de deuxième catégorie.
C'est à dire, si une donnée est sélectionner dans la ComboBox1 cela paramètre différemment la ComboBox2.

Exemple :
J'ai une ComboBox1 (paramétré RowSource = "ListCat")

Dans à la suite de cette liste j'ai réalisé 5 sous-liste :
- La liste "Paie" = ListPaie
- La liste "Congés" = ListCong
- La liste "Absence" = ListAbs
- La liste "Avantage en nature" = ListAvtg
- La liste "Mutuelle" = ListMut

J'aimerai un code pour paramétré la ComboBox2

If ComboBox1.value = Paie
ComboBox2.RowSource = ListPaie
End if

Malheureusement rien ne marche et je ne sais pas ou faire mon code :
- Private Sub_Ajouter_Click()
- Private Sub ComboBox2_Change()
- Private Sub UserForm_Active()


Je ne sais plus quoi faire pour réaliser cette manipulation.
Je vous remercie d'avance pour le temps passer à chercher une solution.
Edoliie
 
Solution
Bonjour Edoliie,
En PJ un essai avec une init des userforms :
VB:
Sub Lance()
With UserForm1
    .ComboBox1.List = Sheets("feuil1").[Liste].Value
    .ComboBox1.ListIndex = 0
    .ComboBox2.List = Sheets("feuil1").[ListPaie].Value
    .ComboBox2.ListIndex = 0
    .Show
End With
End Sub
et le chargement du combobox2 :
Code:
Private Sub ComboBox1_Change()
With UserForm1.ComboBox2
    Select Case ComboBox1.Value
        Case "Paie"
            .List = Sheets("feuil1").[ListPaie].Value
            .ListIndex = 0
       Case "Congés"
            .List = Sheets("feuil1").[ListCong].Value
            .ListIndex = 0
       Case "Absence"
            .List = Sheets("feuil1").[ListAbs].Value
            .ListIndex = 0
       Case "Avantage"
            .List =...
Bonjour Edoliie,
En PJ un essai avec une init des userforms :
VB:
Sub Lance()
With UserForm1
    .ComboBox1.List = Sheets("feuil1").[Liste].Value
    .ComboBox1.ListIndex = 0
    .ComboBox2.List = Sheets("feuil1").[ListPaie].Value
    .ComboBox2.ListIndex = 0
    .Show
End With
End Sub
et le chargement du combobox2 :
Code:
Private Sub ComboBox1_Change()
With UserForm1.ComboBox2
    Select Case ComboBox1.Value
        Case "Paie"
            .List = Sheets("feuil1").[ListPaie].Value
            .ListIndex = 0
       Case "Congés"
            .List = Sheets("feuil1").[ListCong].Value
            .ListIndex = 0
       Case "Absence"
            .List = Sheets("feuil1").[ListAbs].Value
            .ListIndex = 0
       Case "Avantage"
            .List = Sheets("feuil1").[ListAvtg].Value
            .ListIndex = 0
       Case "Mutuelle"
            .List = Sheets("feuil1").[ListMut].Value
            .ListIndex = 0
    End Select
End With
End Sub
 

Pièces jointes

Bonjour.
Si les informations sont dans un tableau à consulter, voire mettre à jour, avec une colonne contenant les valeurs à inventorier, classées et sans doublon, pour la liste de la ComboBox1 et une autre pour celle de la ComboBox2, la programmation de ce complément se charge de tout.
Pas besoin de s'occuper des listes, juste dire, dans une Private Sub UserForm_Initialize, à un objet ComboBoxLiées quelles ComboBox sont à prendre en charge et à quelles colonnes elles correspondent.
 
Bonjour Edoliie,
En PJ un essai avec une init des userforms :

Code:
Private Sub ComboBox1_Change()
With UserForm1.ComboBox2
    Select Case ComboBox1.Value
        Case "Paie"
            .List = Sheets("feuil1").[ListPaie].Value
            .ListIndex = 0
       Case "Congés"
            .List = Sheets("feuil1").[ListCong].Value
            .ListIndex = 0
       Case "Absence"
            .List = Sheets("feuil1").[ListAbs].Value
            .ListIndex = 0
       Case "Avantage"
            .List = Sheets("feuil1").[ListAvtg].Value
            .ListIndex = 0
       Case "Mutuelle"
            .List = Sheets("feuil1").[ListMut].Value
            .ListIndex = 0
    End Select
End With
End Sub
Bonjour sykvanu

Je vous remercie pour votre réactivité.
Le deuxième code suffi amplement pour le fonctionnement de mon formulaire.

Cdt
 
On peut le simplifier à l'écriture :
VB:
Private Sub ComboBox1_Change()
Set F = Sheets("feuil1")
With UserForm1.ComboBox2
    Select Case ComboBox1.Value
        Case "Paie":        .List = F.[ListPaie].Value
        Case "Congés":      .List = F.[ListCong].Value
        Case "Absence":     .List = F.[ListAbs].Value
        Case "Avantage":    .List = F.[ListAvtg].Value
        Case "Mutuelle":    .List = F.[ListMut].Value
    End Select
    .ListIndex = 0
End With
End Sub
Mais ça fait exactement la même chose
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Z
Réponses
1
Affichages
2 K
Jacques
J
Retour