Combobox dependant d'une autre

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

  • Essai.xls
    39 KB · Affichages: 278
  • Essai.xls
    39 KB · Affichages: 269
  • Essai.xls
    39 KB · Affichages: 289

skoobi

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

Discussions similaires

Statistiques des forums

Discussions
312 316
Messages
2 087 173
Membres
103 490
dernier inscrit
zatougraf