Comment initialiser une listbox à partir d'une autre listbox
Bonjour,
Je suis en train de créer un userform à choix multiple avec une listbox aussi à choix multiple.
A l'appel du userform, la listbox1 s'initialise avec plusieurs valeurs parmi lesquelles l'utilisateur fait un choix qui peut être multiple.
J'aimerai que si une valeur particulière est sélectionnée, cela initialise une lisbox2 sur le même userform avec des valeurs défini pour offrir un complément de choix et si la valeur est désélectionnée que cette listbox2 se vide.
Je n'arrive pas à formuler l'idée: if Listbox1.SelectedItem = "valeur A" then Listbox2 AddItem "valeurB"
Pouvez vous m'aider?
Une autre solution serait de remplir la listbox2 en même temps que la Listbox1 en "grisant" les valeurs et rendre ces valeurs actives si on sélectionne la bonne donnée dans la listbox1 mais j'ai pas la moindre idée de comment faire....
Merci.
Salut,
Dans le fichier ci-joint, si tu cliques sur l'image du carton, ça ouvre un UserForm. Si tu choisis tel ou tel client dans la partie 1, le choix dans la partie 2 est différent. Est-ce à quelque chose de semblable que tu penses ?
Si oui, est-ce que ce tu arrives à transformer le code pour ton fichier ou non ?
Si non, ce serait bien d'avoir ton fichier à disposition
Cordialement.
Merci, j'ai fini par y arriver.
En fait il me manquait la notion de "Listbox_Change()", en cherchant des solution dans "Listbox_Click()" j'arrivais à rien.
Tout se passe en 2 étapes, d'abord initialisation du userform: on rentre en manuel les choix.
Private Sub UserForm_Initialize()
ListBox1.AddItem "Code_Espèce"
ListBox1.AddItem "Espèce-à-Id"
ListBox1.AddItem "Info_connue_sp"
ListBox1.AddItem "Piège"
ListBox1.AddItem "Code_lieux"
ListBox1.AddItem "Date_récolte_individus (jour)"
ListBox1.AddItem "Date_récolte_individus (mois)"
ListBox1.AddItem "Date_récolte_individus (année)"
end subPuis on met une condition de remplissage des autres listbox si il y a selection dans la listbox1:
Dim Mondico As Object
Dim i As Integer
Set Mondico = CreateObject("Scripting.Dictionary")
Me.ListBox2.Clear
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then Mondico(ListBox1.List(i)) = ""
Next i
If Mondico.exists("Code_Espèce") Then
ListBox2.AddItem "Ordre"
ListBox2.AddItem "SS_Ordre"
ListBox2.AddItem "Super_Famille"
ListBox2.AddItem "Famille"
ListBox2.AddItem "SS_Famille"
ListBox2.AddItem "Tribu"
ListBox2.AddItem "Genre"
ListBox2.AddItem "Espèce"
ListBox2.AddItem "Nom commun"
End If
end subDonc au final tous les choix de l'utilisateur fait dans la listbox1 sont stockés dans un dictionnaire. Si ce dictionnaire contient la clé choisi ("Code_Espèce" ici) on alimente la listbox2.
Les listbox peuvent aussi s'alimenter à partir d'une liste sur une feuille.
A+
Ci-joint mon fichier de travail, le but ici est de récupérer les champs sélectionné en ligne pour ensuite aller chercher des infos en fonction de ces champs dans une base Access (et ça c'est pas gagné
Re-bonjour,
Tu m'expliques comment j'ai réalisé mon fichier ou tu poses une question ?
A te relire.
Non, c'est en fait la solution que j'ai fini par trouver avant de voir ta réponse.
Merci quand même