Multi affichage dans une Listbox
Bonjour
Dans un Userform j"ai trois Combobox et une Lisbox
Je souhaiterais faire un multiaffichage dans la Listboxselon la sélection dans les Combo.
Exemple
Choix 2016 dans la combobox1 et choix Paris dans la Combobox2 et choix Guitare dans la combobox3 alors
la listbox1 doit afficher les 12 valeurs des lignes correspondant à 2016, Paris et guitare.
J'ai ces codes mais je n'arrive pas à trouver le bon processus.
Merci pour une aide.
A l'initialisation Userform
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
| Private Sub UserForm_Initialize()
Set f = Sheets("bd")
Set Rng = f.Range("A2:L" & f.[A65000].End(xlUp).Row)
BD = Rng.Value
Ncol = Rng.Columns.Count
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
Set d3 = CreateObject("Scripting.Dictionary")
d1.CompareMode = vbTextCompare
d2.CompareMode = vbTextCompare
d3.CompareMode = vbTextCompare
For i = LBound(BD) To UBound(BD)
If Not d2.exists(BD(i, 2)) Then
d2(BD(i, 2)) = ""
Else
If Not d1.exists(BD(i, 12)) Then
d1(BD(i, 12)) = ""
Else
If Not d3.exists(BD(i, 3)) Then
d3(BD(i, 3)) = ""
End If
End If
End If
Next i
'--avec tri
temp = d1.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
temp = d2.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox2.List = temp
temp = d3.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox3.List = temp
Me.ListBox1.Clear
Me.ComboBox1.ListIndex = -1
Me.ComboBox2.ListIndex = -1
'Me.ListBox1.ColumnCount = 14
Me.ListBox1.ColumnWidths = "50;60;250;60;50;50;100;50;50;50;200;0;0;0"
Me.ListBox1.List = BD
Me.Enreg = f.[A65000].End(xlUp).Row + 1
Me.ComboBox5.ColumnCount = 2
Me.ComboBox5.ColumnWidths = "350,40"
Me.ComboBox5.RowSource = "ceremonie"
Me.ComboBox1.ListIndex = 1
Me.ComboBox2 = "*"
Me.ComboBox3 = "*"
F_calendrier2datesForm.Hide
End Sub |
Combo1
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| Private Sub ComboBox1_click()
Me.ListBox1.Clear
For K = 1 To Ncol: Me("textBox" & K) = ""
Next K
j = 0
n = Application.CountIf(Application.Index(Rng, , 12), Me.ComboBox1)
Dim b()
ReDim b(1 To n, 1 To Ncol + 1)
For i = LBound(BD) To UBound(BD)
If Me.ComboBox1 = BD(i, 12) Then
j = j + 1
For K = 1 To Ncol
b(j, K) = BD(i, K)
'If K >= 3 And K <= 5 Then b(j, K) = Format(BD(i, K), "00 00 00 00 00")
Next K
b(j, K) = i
End If
Next i
ListBox1.List = b
ListBox1.ListIndex = 0
End Sub |
Combo2
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Private Sub ComboBox2_click()
Me.ListBox1.Clear
For K = 1 To Ncol: Me("textBox" & K) = "": Next K
j = 0
n = Application.CountIf(Application.Index(Rng, , 2), Me.ComboBox2)
Dim b()
ReDim b(1 To n, 1 To Ncol + 1)
For i = LBound(BD) To UBound(BD)
If Me.ComboBox2 = BD(i, 2) Then
j = j + 1
For K = 1 To Ncol
b(j, K) = BD(i, K)
'If K >= 3 And K <= 5 Then b(j, K) = Format(BD(i, K), "00 00 00 00 00")
Next K
b(j, K) = i
End If
Next i
ListBox1.List = b
ListBox1.ListIndex = 0
End Sub |
Combo3
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Private Sub ComboBox3_click()
Me.ListBox1.Clear
For K = 1 To Ncol
Me("textBox" & K) = ""
Next K
j = 0
n = Application.CountIf(Application.Index(Rng, , 3), Me.ComboBox3)
Dim b()
ReDim b(1 To n, 1 To Ncol + 1)
For i = LBound(BD) To UBound(BD)
If Me.ComboBox3 = BD(i, 3) Then
j = j + 1
For K = 1 To Ncol
b(j, K) = BD(i, K)
'If K >= 3 And K <= 5 Then b(j, K) = Format(BD(i, K), "00 00 00 00 00")
Next K
b(j, K) = i
End If
Next i
ListBox1.List = b
ListBox1.ListIndex = 0
End Sub |
listbox1
Code:
1 2 3 4 5 6 7 8
| Private Sub ListBox1_Click()
Set Rng = f.Range("A2:L" & f.[A65000].End(xlUp).Row)
For K = 1 To Ncol
Me("textBox" & K) = Me.ListBox1.Column(K - 1)
Next K
Me.Enreg = Me.ListBox1.Column(Ncol) + Rng.Row - 1
End Sub |