J'ai deux combobox liées

Fermé
FZOLK Messages postés 1 Date d'inscription dimanche 25 décembre 2016 Statut Membre Dernière intervention 25 décembre 2016 - 25 déc. 2016 à 22:50
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 26 déc. 2016 à 11:03
Bonjour tt le monde,

ça fait des jours que j'essaie de faire une petite appli;
En fait j'ai deux combobox, la première me permet de choisir un article de la colonne A. EN fonction de ce choix je voudrais que ma seconde combobox m'affiche l'information de la colonne B qui correspond à cet article ( sachant que le même article de répète dans mon tableau);

Merci par avance


A voir également:

1 réponse

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
26 déc. 2016 à 11:03
Bonjour Fzolk, bonjour le forum,

Si tes données sont placées comme ci-dessous :

Colonne A / Colonne B
Articles / Info_Article
Article1 / info 1.1
Article1 / info 1.2
Article1 / info 1.3
Article1 / info 1.4
Article1 / info 1.5
Article1 / info 1.6
Article1 / info 1.7
Article2 / info2.1
Article2 / info2.2
Article2 / info2.3
Article2 / info2.4
Article2 / info2.5
Article 3 / info 3.1
Article 3 / info 3.2
Article 3 / info 3.3
Article 3 / info 3.4
Article 4 / info4.1
Article 4 / info4.2
Article 4 / info4.3
Article 4 / info4.4
Article 5 / info5.1
Article 5 / info5.2
Article 5 / info5.3
Article 5 / info5.4
Article 5 / info5.5
Article 5 / info5.6
Article 5 / info5.7

Le code qui suit devrait convenir :
Private O As Worksheet 'déclare la variable O (onglet)
Private TV As Variant 'déclare la variable TV (Tableau des Valeurs)

Private Sub UserForm_Initialize() 'à l'initialisation de l'userForm
Dim D As Object 'déclare la variable D (Dictionnaire)
Dim I As Integer 'déclare la variable I (Incrément)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
TV = O.Range("A1").CurrentRegion 'définit le tableau des valeur TV
Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    D(TV(I, 1)) = "" 'alimente le dictionnaire D avec les données en colonne 1 (les Articles)
Next I 'prochaine ligne de la boucle
Me.ComboBox1.List = D.Keys 'alimente la ComboBox1 avec la liste des éléments du dictionnaire D sans doublon
End Sub

Private Sub ComboBox1_Change() 'au changement dans la ComboBox1
Dim I As Integer 'déclare la variable I (Incrément)

Me.ComboBox2.Clear 'vide la ComboBox2
If Me.ComboBox1.Value = "" Then Exit Sub 'si la ComboBox1 est effacée, sort de la procédure
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    'si la donnée en colonne 1 de TV est églale à la valeur de la ComboBox1, ajoute la donnée en colonne 2 de TV dans la ComboBox2
    If TV(I, 1) = Me.ComboBox1 Then Me.ComboBox2.AddItem TV(I, 2)
Next I 'prochaine ligne de la boucle
End Sub
0