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
|
Private Sub CommandButton2_Click()
'Recherche par référence
Selection.AutoFilter
Dim Tablo As Variant, Tempo As Variant, i As Long, j As Long
Worksheets("Feuil1").Activate 'à défaut d'instancier la feuille
Tablo = Range("H2:H" & Range("h" & Rows.Count).End(xlUp).Row).Value
'triAlpha
For i = 1 To UBound(Tablo)
For j = 1 To UBound(Tablo)
If Tablo(i, 1) < Tablo(j, 1) Then 'test
Tempo = Tablo(i, 1)
Tablo(i, 1) = Tablo(j, 1)
Tablo(j, 1) = Tempo
End If
Next j
Next i
ListBox4.Clear
'Remplissage excluant les doublons
ListBox4.AddItem Tablo(1, 1)
For i = 2 To UBound(Tablo)
If Tablo(i, 1) <> Tablo(i - 1, 1) Then ListBox4.AddItem Tablo(i, 1)
Next
Dim plage As Range, Cell As Range
Dim FL2 As Worksheet, critere As String
Set FL2 = Worksheets("Feuil1")
ListBox3.Clear
'On fixe le critère
critere1 = ListBox4
'Pose du filtre : Si un filtre existe, on le supprime...
If FL2.FilterMode Then FL2.Cells.AutoFilter
'... avant de le poser sur la colonne désirée
FL2.Columns("a:a").AutoFilter Field:=1, Criteria1:="*" & TextBox7 & "*"
'La plage de données filtrées correspond aux seules cellule visibles
'Dans cette plage, la colonne du filtre est la colonne 1
Set plage = FL2.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible)
'Parcours de la plage filtrée -> remplissage des trois colonnes de la listbox
For Each Cell In plage 'dans la listbox, la première colonne a l'indice 0
'Colonne 1 ds listbox (indice 0) : colonne du filtre => D
ListBox3.AddItem Cell 'colonne A de la feuille
'Colonne 2 ds listbox (indice 1) : A + 2 => colonne C de la feuille
ListBox3.List(ListBox3.ListCount - 1, 1) = Cell.Offset(0, 2)
'Colonne 3 ds listbox (indice 2) : A + 3 => colonne D de la feuille
ListBox3.List(ListBox3.ListCount - 1, 2) = Cell.Offset(0, 3)
Next
Set plage = Nothing
End Sub |
Partager