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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| Option Compare Text
Dim TblBD(), Choix(), NomTableau, NbCol, ChoixCombo()
Private Sub UserForm_Initialize()
NomTableau = "tableau1"
NbCol = Range(NomTableau).Columns.Count ' adapter
TblBD = Range(NomTableau).Resize(, NbCol + 1).Value
For i = 1 To UBound(TblBD): TblBD(i, NbCol + 1) = i: Next i
ReDim Choix(1 To UBound(TblBD))
For i = LBound(TblBD) To UBound(TblBD)
NbCol = Range(NomTableau).Columns.Count
For k = 1 To NbCol: Choix(i) = Choix(i) & TblBD(i, k) & "|": Next k
Choix(i) = Choix(i) & i ' no ligne BD
Next i
Me.ListBox1.List = TblBD
EnteteListBox
ChoixCombo = ListeMotsTab(Range(NomTableau))
Me.ComboBox1.List = ListeMotsTab(Range(NomTableau))
Me.ComboTri.List = Application.Transpose(Range(NomTableau).Offset(-1).Resize(1)) ' Ordre tri
End Sub
Private Sub TextBox1_Change()
If Me.TextBox1 <> "" Then
mots = Split(Me.TextBox1, " ")
tbl = Choix
For i = LBound(mots) To UBound(mots)
tbl = Filter(tbl, mots(i), True, vbTextCompare)
Next i
n = UBound(tbl) + 1
If n > 0 Then
ReDim Tbl2(LBound(tbl) To n + 1, 1 To NbCol + 1)
For j = LBound(tbl) To UBound(tbl)
a = Split(tbl(j), "|")
For k = 0 To NbCol - 1: Tbl2(j, k + 1) = a(k): Next k
Tbl2(j, k + 1) = a(k)
Next j
Me.ListBox1.List = Tbl2
Else
Me.ListBox1.Clear
End If
Else
Me.ListBox1.List = TblBD
End If
End Sub
Sub EnteteListBox()
NbCol = Range(NomTableau).Columns.Count
x = Me.ListBox1.Left + 8
Y = Me.ListBox1.Top - 12
For i = 1 To NbCol
Set lab = Me.Controls.Add("Forms.Label.1")
lab.Caption = Range(NomTableau).Offset(-1).Cells(1, i)
lab.Top = Y
lab.Left = x
x = x + Int(Range(NomTableau).Columns(i).Width * 0.9)
temp = temp & Int(Range(NomTableau).Columns(i).Width * 0.9) & ";"
Next
Me.ListBox1.ColumnCount = NbCol + 1
temp = Left(temp, Len(temp) - 1)
Me.ListBox1.ColumnWidths = temp
End Sub
Private Sub ComboTri_click()
Dim tbl()
colTri = Me.ComboTri.ListIndex
tbl = Me.ListBox1.List
TriMultiCol tbl, LBound(tbl), UBound(tbl), colTri
Me.ListBox1.List = tbl
End Sub
Private Sub b_raz_Click()
Me.TextBox1 = ""
End Sub
Private Sub ComboBox1_Click()
Me.TextBox1 = Me.TextBox1 & " " & ComboBox1
End Sub
Private Sub B_result_Click()
Set f2 = Sheets("résultat")
f2.Cells.ClearContents
a = Me.ListBox1.List
f2.[A2].Resize(UBound(a) + 1, UBound(a, 2) + 1) = a
c = 0
For c = 1 To NbCol
f2.Cells(1, c) = Range(NomTableau).Offset(-1).Item(1, c)
Next
f2.Cells.EntireColumn.AutoFit
End Sub
Private Sub ComboBox1_Change()
If Me.ComboBox1.ListIndex = -1 Then
Me.ComboBox1.List = Filter(ChoixCombo, Me.ComboBox1.Text, True, vbTextCompare)
Me.ComboBox1.DropDown
Else
End If
End Sub
Private Sub ListBox1_Click()
enreg = Me.ListBox1.Column(NbCol) + Range(NomTableau).Row - 1
Rows(enreg).Select
End Sub |
Partager