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
Combo1
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
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
Combo2
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 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
Combo3
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 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
listbox1
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 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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager