ComboBox avec deux conditions
Bonjour,
Je reviens vers vous car je sèche encore...
J'utilise excel 365
j'ai un tableau sur une feuille excel 'tissu' avec 5 colonnes. La 1ere est la famille, la 2eme est sous-famille, la 3eme est le nom du produit, la 4 est le prix et la 5 la largeur du produit
Crosscut |
Dacron |
HSX 625 |
12,20 € |
1,37 |
Crosscut |
Dacron |
HSX 626 |
13,20 € |
1,35 |
Crosscut |
Dacron |
HSX 627 |
14,20 € |
1,33 |
|
|
|
|
|
Crosscut |
Dacron |
HSX 628 |
15,20 € |
1,29 |
Crosscut |
Dacron |
HSX 629 |
16,20 € |
1,27 |
Crosscut |
Polyester |
HPX 433 |
8,40 € |
1,25 |
Crosscut |
Polyester |
HPX 533 |
9,85 € |
1,23 |
Crosscut |
Polyester |
HPX 633 |
10,76 € |
1,21 |
Crosscut |
Polyester |
HPX 733 |
11,42 € |
1,19 |
Crosscut |
Polyester |
HPX 833 |
13,02 € |
1,17 |
Tri-radial |
CL |
CL 25 |
19,50 € |
1,15 |
Tri-radial |
CL |
CL 35 |
22,50 € |
1,13 |
|
|
|
|
|
Tri-radial |
CL |
CL 45 |
25,50 € |
1,09 |
Tri-radial |
DC |
DC 12 |
23,00 € |
1,07 |
Tri-radial |
DC |
DC 22 |
26,25 € |
1,05 |
Tri-radial |
DC |
DC 32 |
29,50 € |
1,03 |
|
|
|
|
|
Tri-radial Spi |
Nylon |
Nylite 0,75 |
8,12 € |
0,99 |
biradiale |
CZ |
CZ 15 |
18,40 € |
0,97 |
|
|
|
|
|
biradiale |
Monofilm |
MN45 |
12,00 € |
0,93 |
Comment faire pour afficher une liste dans une combobox avec deux conditions?
Dans ma combobox3, une fois que j'ai choisi ma sous-famille, ça me récupère tous les produits qui correspondent à la sous-famille, alors que je souhaiterais tous les produits qui correspondent à la sous-famille ET à la famille (l'info du combobox1) ...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
Option Explicit
' *********************
' ** combo n°1 coupe **
' *********************
Private Sub UserForm_Initialize()
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 Not Dico.Exists(Cel.Value) Then
Dico.Add Cel.Value, Cel.Value
Me.ComboBox1.AddItem Cel.Value
End If
Next Cel
End With
End Sub
' *****************************
' ** combo n°2 famille tissu **
' *****************************
Private Sub ComboBox1_Change()
Dim Dico
Dim Cel As Range
With Worksheets("tissu")
For Each Cel In .Range("A2", .Range("A" & Rows.Count).End(xlUp))
If Cel.Value = Me.ComboBox1.Value Then
Me.ComboBox2 = Cel.Offset(, 1).Value
If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Cel.Offset(, 1).Value
End If
Next Cel
End With
End Sub
' *************************
' ** combo n°3 tissu **
' *************************
Private Sub ComboBox2_Change()
Dim Cel As Range
With Worksheets("tissu")
For Each Cel In .Range("B2", .Range("B" & Rows.Count).End(xlUp))
If Cel.Value = Me.ComboBox2.Value Then
' If Cel.Value(-1, 0) = ComboBox1.Value Then
Me.ComboBox3.AddItem Cel.Offset(, 1).Value
End If
' End If
Next Cel
End With
End Sub
' *************************
' ** récupération prix **
' *************************
Private Sub ComboBox3_Change()
Dim Cel As Range
With Worksheets("tissu")
For Each Cel In .Range("C2", .Range("C" & Rows.Count).End(xlUp))
If Cel.Value = Me.ComboBox3.Value Then
Range("B6").Value = ComboBox1.Value ' affiche la coupe en B6
Range("B7").Value = ComboBox2.Value ' affiche la famille tissu en B7
Range("B8").Value = ComboBox3.Value ' affiche le tissu en B8
Range("B9").Value = Cel.Offset(, 1).Value ' affiche le prix du tissu choisi en B9
Range("C9").Value = Cel.Offset(, 2).Value ' affiche la largeur du tissu choisi en C9
End If
Next Cel
End With
Unload FormCoupe ' vide et ferme le formuaire
End Sub |
Merci pour votre aide
Jean-Yves