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 : 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
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
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 : 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
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 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 : 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