Dim ColVisu(), BD(), Rng, colRech
Private Sub UserForm_Initialize()
nomtableau = "tableau1"
Set Rng = Range(nomtableau)
ColVisu = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)
BD = Range(nomtableau).Value
Me.ListBox1.ColumnCount = UBound(ColVisu) + 1
EnteteListBox
Set d = CreateObject("scripting.dictionary")
colRech = 1
d("*") = ""
For i = 1 To UBound(BD)
d(BD(i, colRech)) = ""
Next i
Me.ComboBox1.List = d.keys
Me.ComboBox1 = "*"
End Sub
Private Sub ComboBox1_Click()
filtre
End Sub
Sub filtre()
Dim Tbl()
temp = Me.ComboBox1
For i = 1 To UBound(BD)
If BD(i, colRech) Like temp Then
n = n + 1
j = 0
For Each k In ColVisu
j = j + 1
ReDim Preserve Tbl(1 To UBound(ColVisu) + 1, 1 To n)
Tbl(j, n) = BD(i, k)
Next k
End If
Next i
Me.ListBox1.Column = Tbl
End Sub
Sub EnteteListBox()
x = Me.ListBox1.Left + 8
Y = Me.ListBox1.Top - 12
For Each c In ColVisu
Set Lab = Me.Controls.Add("Forms.Label.1")
Lab.Caption = Rng.Offset(-1).Resize(1).Cells(1, c)
Lab.Top = Y
Lab.Left = x
Lab.Height = 24
Lab.Width = x + Int(Rng.Columns(c).Width * 1#)
x = x + Int(Rng.Columns(c).Width * 1#)
tempcol = tempcol & Rng.Columns(c).Width * 1# & ";"
Next
tempcol = Left(tempcol, Len(tempcol) - 1)
Me.ListBox1.ColumnWidths = tempcol
End Sub