Bonjour à vous
Déjà, je débute en VBA...
J'ai cherché une explication et une solution sur différents forums, mais je n'arrive pas à faire ce que je souhaite:
J'utilise excel de office 365. Mon fichier est donc sauvegardé en ****.xlsm
J'ai deux feuilles, la feuille 1 avec le bouton d'appel du formulaire dans lequel il y a plusieurs combobox alimentées par la feuille n°2.
La feuille n°2 s'appelle "tissu". il y a 4 colonnes, avec pour chaque enregistrement Famille, SousFamille, Produit et prix.
Une fois le formulaire affiché:
je choisis dans le ComboBox1 la Famille
Puis dans le ComboBox2 la sous-famille (en fonction du choix de la famille dans la ComboBox1)
Dans le n°3 je choisis le produite (en fonction de la sous-famille du ComboBox2)
Dans le 4 je récupère le prix. Aucun intéret de le récupérer dans un ComboBox, mais c'est pour voir comment cela fonctionne...
Par la suite, je vais modifier le code pour que j'affiche dans une cellule d'une feuille donnée le prix dès que j'aurais sélectionné le produit dans la ComboBox3....
Alors mon code fonctionne bien pour tous les ComboBox, sauf pour le 2ème...
Dans la 2ème il m'affiche autant de lignes de sous-famille qu'il y a de résultat correspondant .
Il me gère bien les lignes vides, pas de soucis de ce côté là.
Voici la portion qui ne fonctionne pas correctement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 ' ***************************** ' ** combo n°2 famille tissu ** ' ***************************** Private Sub ComboBox1_Change() Dim Dico Dim Cel As Range Set Dico = CreateObject("Scripting.Dictionary") With Worksheets("tissu") For Each Cel In .Range("A2", .Range("A" & Rows.Count).End(xlUp)) If Cel.Value = Me.ComboBox1.Value Then Me.ComboBox2.AddItem Cel.Offset(, 1).Value End If Next Cel End With End Sub
Pourriez-vous me dire et m'expliquer comment faire?
Merci
Jean-Yves
Partager