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
| Private Sub TextBox1_Change()
Dim Lot As String, Dico As Object
Dim Plage As Range, cell As Range
Dim Recherche As String, Adresse As String
Dim Ligne As Integer, n As Integer, I As Long
Dim C As Range, Tabl, Plage1 As Range
Set Dico = CreateObject("Scripting.Dictionary")
ListBox1.Clear
Lot = Range("O19")
n = 0
Recherche = TextBox1.Value
Tabl = Split(Recherche, ";")
Sheets(Lot).AutoFilterMode = False
Ligne = Sheets(Lot).Range("C" & "65536").End(xlUp).Row
Set Plage = Sheets(Lot).Range("C" & "4:" & "C" & Ligne)
With Plage
For I = 0 To UBound(Tabl)
.AutoFilter
.AutoFilter 1, "*" & Tabl(I) & "*"
Set Plage1 = Plage.Offset(1).Resize(Plage.Rows.Count - 1)
If Application.Subtotal(103, Plage1) > 0 Then
Set Plage1 = Plage1.Offset(, -1).SpecialCells(xlCellTypeVisible)
For Each C In Plage1
If Not Dico.exists(C.Offset(, 1).Value) Then
Dico.Add C.Offset(, 1).Value, C.Offset(, 1).Value
ListBox1.AddItem C.Offset(0, 0), n
ListBox1.List(n, 1) = C.Offset(0, 1)
ListBox1.List(n, 2) = C.Offset(0, 2)
ListBox1.List(n, 3) = C.Offset(0, 3)
ListBox1.List(n, 4) = C.Offset(0, 4)
ListBox1.List(n, 5) = C.Offset(0, 5)
ListBox1.List(n, 6) = C.Offset(0, 6)
ListBox1.List(n, 7) = C.Offset(0, 7)
n = n + 1
End If
Next C
End If
Next I
End With
End Sub |
Partager