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 =...

sylvanu

XLDnaute Barbatruc
Supporter XLD
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

  • UserForm.xlsm
    18.9 KB · Affichages: 29

Dranreb

XLDnaute Barbatruc
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.
 

Edoliie

XLDnaute Nouveau
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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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
 

Membres actuellement en ligne

Statistiques des forums

Discussions
291 805
Messages
1 918 120
Membres
179 933
dernier inscrit
louys
Haut Bas