Combobox dependant d'une autre

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 !

dureiken

XLDnaute Junior
Bonjour,

dans mon formulaire je souhaiterai que la liste de choix de ma combobox2 soit dépendante du choix que je fais dans ma combobox1.

J'ai presque réussi en m'inspirant d'exemples sur les forums mais ça ne marche pas tout a fait.

La combobox1 a 5 choix différents (notés EOB1 à 5), la liste se remplit bien en allant piocher dans des cellules.

La combobox2 (notés SitesX) a une 40aine de choix, chacun etant attaché à un EOB, et je voudrai que s'affiche dans la 2 uniquement ceux choisis dans la combobox1.

Ca marche pour EOB1, j'ai les Sites correspondant, mais pour EOB2 j'ai les sites de EOB1 et EOB2, pour EOB5 je les ai tous.

J'ai mis un fichier joint, ce doit être un petit détail mais je bute dessus.

J'aimerai aussi rester sur la feuille1 lorsque je remplis le formulaire mais il va sur la feuille2 car il va piocher des données dedans.

Merci d'avance !
 

Pièces jointes

Re : Combobox dependant d'une autre

Bonjour dureiken,

il faut imbriquer les conditions If:

Code:
    For j = 3 To Range("C65536").End(xlUp).Row
        If Range("B" & j) = EOB.Value Then
          Site_Amenagement.Value = Range("C" & j)
        'et filtre les doublons
          If Site_Amenagement.ListIndex = -1 Then Site_Amenagement.AddItem Range("C" & j)
        End If
    Next j

Edit:

J'aimerai aussi rester sur la feuille1 lorsque je remplis le formulaire mais il va sur la feuille2 car il va piocher des données dedans.
Dans ce cas il ne faut pas sélectionner la feuille mais utiliser With ... End With. Voici tout le code mis à jour:

Code:
Private Sub UserForm_Initialize()
'****CREATION DE LA PREMIERE LISTE DEROULANTE A L'INITIALISATION DU FORMULAIRE****
    Dim j As Integer
    'Récupère les données de la colonne B...
    [COLOR=blue][B]With Sheets("Donnees")[/B][/COLOR]
    For j = 3 To [SIZE=5][COLOR=blue][B].[/B][/COLOR][/SIZE]Range("B65536").End(xlUp).Row
        EOB = [SIZE=5][COLOR=blue][B].[/B][/COLOR][/SIZE]Range("B" & j)
        'et filtre les doublons
        If EOB.ListIndex = -1 Then EOB.AddItem [B][SIZE=5][COLOR=blue].[/COLOR][/SIZE][/B]Range("B" & j)
    Next j
    [B][COLOR=blue]End With[/COLOR][/B]
EOB.Value = ("EOB")
End Sub
Private Sub EOB_Click()
'****CREATION DE LA SECONDE LISTE DEROULANTE EN FONCTION DU CHOIX DE LA PREMIERE****
    Site_Amenagement.Clear 'On vide la liste à chaque changement
    Site_Amenagement.Visible = True 'La liste est visible si on a choisi une valeur dans EOB
 
    Dim j As Integer
    'Récupère les données de la colonne C...
    [B][COLOR=blue]With Sheets("Donnees")[/COLOR][/B]
    For j = 3 To [B][SIZE=5][COLOR=blue].[/COLOR][/SIZE][/B]Range("C65536").End(xlUp).Row
        If [B][SIZE=5][COLOR=blue].[/COLOR][/SIZE][/B]Range("B" & j) = EOB.Value Then
          Site_Amenagement.Value = [B][SIZE=5][COLOR=blue].[/COLOR][/SIZE][/B]Range("C" & j)
        'et filtre les doublons
          If Site_Amenagement.ListIndex = -1 Then Site_Amenagement.AddItem [B][SIZE=5][COLOR=blue].[/COLOR][/SIZE][/B]Range("C" & j)
        End If
    Next j
    [B][COLOR=blue]End With[/COLOR][/B]
Site_Amenagement.Value = ("Site d'Aménagement")
'Sheets("MTN_2009").Select
End Sub
 
Dernière édition:
- 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

Réponses
10
Affichages
642
Réponses
4
Affichages
934
Retour