Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Lier deux listes déroulantes VBA

  • Initiateur de la discussion Initiateur de la discussion ludosipm
  • Date de début Date de début

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 !

L

ludosipm

Guest
Bonjour,


Je suis novice dans VBA, c'est pourquoi j'ai besoin d'aide !

J'ai créé une UserForm et y ai ajouté deux listes déroulantes (listbox).
L'une étant "Famille" et l'autre "Sousfamille".

Actuellement la liste des "sous familles" est complète, j'aimerais lier les deux listes afin que lorsque je clique sur une ligne de ma liste "Famille" seulement les lignes de des sous familles associées apparaissent dans ma listbox "Sousfamille".

j'espère avoir été suffisamment clair. Je vous remercie d'avance pour votre aide.

Mes amitiés,
Ludo
 
Re : Lier deux listes déroulantes VBA

Bonjour et bienvenue sur ce forum

il faut 'recharger' votre liste de sous famille lors de la sélection d'une famille.
ce rechargement sera une liste contrainte par la séléction, il faut donc un tableau de correspondance et un morceau de code pour opérer

Pouvez-vous joindre un fichier exemple (sans données confidentielles) svp ?
 
Re : Lier deux listes déroulantes VBA

J'ai joint mon fichier, j'ai classé les sous familles en fonction des familles des la feuille "Mat".
Quelles lignes de code je dois rentrer pour prendre en compte ces contraintes ?

Merci
 
Dernière modification par un modérateur:
Re : Lier deux listes déroulantes VBA

Je suis sous XL2003 et il n'arrive pas à convertir votre fichier pour l'ouvrir. Pouvez vous l'"enregistrer sous" un format plus ancien svp ?
 
Re : Lier deux listes déroulantes VBA

Bonjour

dans un premier temps, pous pouvez essyer ceci :

(en remplacement de l'existant qui est resté vide)

Code:
Public Sub Famille_change()
For i = 1 To Famille.ListCount
    If Me.Famille.Selected(i) = True Then
        ma_selection = i
        Exit For
    End If
Next i
MsgBox "Sélection : " & Me.Famille.List(ma_selection)
End Sub

Je mets la suite un peu plus tard
 
Re : Lier deux listes déroulantes VBA

Maintenant, il faut remplacer tout le code par ceci (attention si vous avez rajouté des améliorations, à ne pas écraser ce qu'il ne faut pas, attention aussi, il y a des "publics" tout en haut, il faut bien les conserver)

Code:
Public tab_famille As Variant
Public tab_sous_famille As Variant


Public Sub Famille_change()
For i = 0 To Famille.ListCount
    If Me.Famille.Selected(i) = True Then
        ma_selection = i
        famille_selectionnee = Me.Famille.List(ma_selection)
        Exit For
    End If
Next i

'MsgBox "Sélection : " & famille_selectionnee

'recherche de l'index
For i = 1 To UBound(tab_famille, 1)
    If famille_selectionnee = tab_famille(i, 1) Then
        famille_selectionnee_index = tab_famille(i, 2)
        
        Exit For
    End If
Next i


'remplir les listes
Stockfrm.Sousfamille.Clear
For i = 1 To UBound(tab_sous_famille, 1)
    If tab_sous_famille(i, 2) = famille_selectionnee_index Then
        Stockfrm.Sousfamille.AddItem tab_sous_famille(i, 1)
    End If
Next i

End Sub

Public Sub UserForm_Activate()

With Sheets("Adresses")
'création d'un tableau pour les familles
tab_famille = .Range("A2:B" & .Range("B65000").End(xlUp).Row).Value

'création d'un tableau pour les sous-familles
tab_sous_famille = .Range("C2:D" & .Range("D65000").End(xlUp).Row).Value

End With

'remplir les listes
Stockfrm.Famille.Clear
For i = 1 To UBound(tab_famille, 1)
    Stockfrm.Famille.AddItem tab_famille(i, 1)
Next i

'remplir les listes
Stockfrm.Sousfamille.Clear
For i = 1 To UBound(tab_sous_famille, 1)
    Stockfrm.Sousfamille.AddItem tab_sous_famille(i, 1)
Next i

End Sub

Le programme 'recharge' la sous-liste, avec les élements qui correspondent à votre liste de 'N°'. ce qui au passage permet de rajouter autant de sous-famille que souhaité, sans avoir à changer l'ordre des items.

Cordialement
olivier
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

O
Réponses
1
Affichages
1 K
A
Réponses
3
Affichages
777
D
Réponses
2
Affichages
931
David10
D
G
  • Question Question
Réponses
4
Affichages
915
C
  • Question Question
Réponses
4
Affichages
3 K
clem67
C
K
Réponses
38
Affichages
10 K
kinders59
K
C
Réponses
10
Affichages
15 K
M
  • Question Question
Réponses
5
Affichages
2 K
Réponses
2
Affichages
1 K
F
Réponses
13
Affichages
2 K
floni62
F
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…