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
|
Dim BD(), ColVisu(), Ncol
Private Sub UserForm_Initialize()
Set f = Sheets("bd")
BD = f.Range("A2:G" & f.[A65000].End(xlUp).Row).Value
ColVisu = Array(1, 3, 4, 5, 6, 7) ' colonnes à visualiser
Ncol = UBound(ColVisu) + 1
'--- combobox villes trié
Set d = CreateObject("Scripting.Dictionary")
d("*") = ""
For I = LBound(BD) To UBound(BD)
d(BD(I, 6)) = ""
Next I
temp = d.keys
Tri temp, LBound(temp), UBound(temp)
Me.ComboBox1.List = temp
Me.ComboBox1.ListIndex = 0
'--- combobox profession trié
Set d = CreateObject("Scripting.Dictionary")
d("*") = ""
For I = LBound(BD) To UBound(BD)
d(BD(I, 7)) = ""
Next I
temp = d.keys
Me.ComboBox2.List = temp
Me.ComboBox2.ListIndex = 0
'--- combobox année
Set d = CreateObject("Scripting.Dictionary")
d("*") = ""
TriMult BD, LBound(BD), UBound(BD), 3
For I = LBound(BD) To UBound(BD)
d(Year(BD(I, 3))) = ""
Next I
temp = d.keys
Me.ComboBox3.List = temp
Me.ComboBox3.ListIndex = 0
'-- en têtes de colonne ListBox
x = 15
y = Me.ListBox1.Top - 12
For Each K In ColVisu
Set Lab = Me.Controls.Add("Forms.Label.1")
Lab.Caption = f.Cells(1, K)
Lab.Top = y
Lab.Left = x
x = x + f.Columns(K).Width * 1#
tempCol = tempCol & f.Columns(K).Width * 1# & ";"
Next
tempCol = Left(tempCol, Len(tempCol) - 1)
Me.ListBox1.ColumnCount = UBound(ColVisu) + 1
Me.ListBox1.ColumnWidths = tempCol
Affiche
End Sub
Private Sub ComboBox1_click()
Affiche
End Sub
Private Sub ComboBox2_click()
Affiche
End Sub
Private Sub ComboBox3_Change()
Affiche
End Sub
Sub Affiche()
Dim Tbl()
ville = Me.ComboBox1
profession = Me.ComboBox2
an = Me.ComboBox3
n = 0
For I = 1 To UBound(BD)
If BD(I, 6) Like ville And BD(I, 7) Like profession And (Year(BD(I, 3)) = Val(an) Or an = "*") Then
n = n + 1: ReDim Preserve Tbl(1 To Ncol, 1 To n)
c = 0
For Each K In ColVisu: c = c + 1: Tbl(c, n) = BD(I, K): Next K
End If
Next I
If n > 0 Then
Me.ListBox1.Column = Tbl
Me.Label3.Caption = Me.ListBox1.ListCount & " Ligne(s)"
Else
Me.ListBox1.Clear
Me.Label3.Caption = ""
End If
End Sub |
Partager