remplir une Listbox en fonction d'une autre

  • Initiateur de la discussion Initiateur de la discussion Chappoe
  • 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 !

Chappoe

XLDnaute Nouveau
bonjour 🙂

Voila, j'ai ce tableau récapitulatif a faire pour le boulot, et j'ai besoin de me servir d'un userform.

Dans ce userforme je retrouve une listbox que j'ai rempli des nom de lignes voulu. Jusque la tout va bien. C'est apres que ca se gate. Ma 2e listbox est censé afficher les differentes valeurs (sans doublons) se trouvant des les lignes de la 1er listbox.

Je ne voit pas du tout comment procéder.
Quelqu'un aurait il une petite idée?

merci d'avance 🙂
 
Re : remplir une Listbox en fonction d'une autre

Bonjour Chappoe et bienvenue sur le forum 😉

Sans fichier, cela va être difficile !
Mais pour te donner un ordre d'idée ..

Dans l'évènement Click de ta Listbox1 tu fais une boucle sur toutes les lignes de la colonne qui t'intéresse
et si la ligne correspond au choix de la Listbox1, tu ajoutes la valeur de ta colonne à ta LB2

A+
 
Re : remplir une Listbox en fonction d'une autre

Bonjour BrunoM45,

merci pour ta reponse. Malheureusement cela ne m'aide pas beaucoup. j'ai une idée de la trame que je doit suivre mon prebleme est un connaiscence des thermes de vba.

par exemple, je veut que la seconde listbox réponde a : " pour la variable MaLigne, je veux que toutes les valeurs de la ligne s'affiche dans la listbox"
Mais impossible de le traduire en language vba 🙁
 
Re : remplir une Listbox en fonction d'une autre

Salut Chappoe et merci 😉

Voici ton code corrigé
VB:
Private Sub ListBox1_Click()
  Dim Unique As New Collection
  Dim Cel As Range
  Dim Valeur As Range
  Dim j As Integer
  Dim MaLigne As Integer


  MaLigne = 6 + ListBox1.ListIndex
  'Rows(MaLigne).Select
  ' Créer la collection = valeur sans doublon
  On Error Resume Next
  For Each Cel In Range(Cells(MaLigne, 2), Cells(MaLigne, "ZZ"))
    Unique.Add Cel, CStr(Cel)
  Next Cel
  On Error GoTo 0
  ' Pour chaque valeur de ma collection
  For Each Valeur In Unique
    Me.ListBox2.AddItem Valeur
  Next Valeur
End Sub

A+
 
Re : remplir une Listbox en fonction d'une autre

Merci beaucoup 🙂

ca fonctionne!!! a un petit detaille pres. Au lieu de m'afficher seulement les valeurs des celleules de la ligne selectionne, il ajoute a la 1er ligne selectionner les valeurs de celles que je selectionne ensuite.

Une idée? ^^'
 
Re : remplir une Listbox en fonction d'une autre

Bonjour le fil, bonjour le forum,

Ton code n'est pas correct si tu as des doublons en colonne A. Pour récupérer le numéro de ligne de l'élément sélectionné dans la ListBox1 tu utilises la propriété Listindex + 6 et en cas de doublons ça ne fonctionnera pas...
Si tu es sûre de ne jamais avoir de doublons en colonne A, il faut revoir le code d'initialisation de l'UserForm car l'utilisation d'une Collection devient inutile...
 
Re : remplir une Listbox en fonction d'une autre

Re,
Merci beaucoup 🙂
ca fonctionne!!! a un petit detaille pres. Au lieu de m'afficher seulement les valeurs des celleules de la ligne selectionne, il ajoute a la 1er ligne selectionner les valeurs de celles que je selectionne ensuite.
Une idée? ^^'
Il faut effacer le contenu de la liste avant de la remplir
Code:
Private Sub ListBox1_Click()
  Dim Unique As New Collection
  Dim Cel As Range
  Dim Valeur As Range
  Dim MaLigne As Integer

  MaLigne = 6 + ListBox1.ListIndex + 1
  'Rows(MaLigne).Select
 ' Créer la collection = valeur sans doublon
 On Error Resume Next
  For Each Cel In Range(Cells(MaLigne, 2), Cells(MaLigne, "ZZ"))
    Unique.Add Cel, CStr(Cel)
  Next Cel
  On Error GoTo 0
  ' Effacer le contenu de la liste
  Me.ListBox2.Clear
  ' Pour chaque valeur de ma collection
 For Each Valeur In Unique
    Me.ListBox2.AddItem Valeur
  Next Valeur
End Sub

Je n'avais pas prêté attention, mais Mister Robert à raison concernant le remplissage de ta Listbox1
Tu utilise le même principe de suppression des doublons, donc tu auras un problème de ligne 😉

Il faudra utiliser
Code:
Private Sub UserForm_Initialize()  Dim DLig As Long, Lig As Long
  'Récupère la derniere ligne non vide dans la colonne A
  DLig = Range("A" & Rows.Count).End(xlUp).Row
  'Boucle sur le contenu de la collection pour alimenter la ListBox
  For Lig = 7 To DLig
    Me.ListBox1.AddItem Range("A" & Lig).Value
  Next Lig
End Sub


A+
 
Dernière modification par un modérateur:
- 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

Retour