Filtrage d'une Ligne avec le résultat dans la ListBox

Bonjour à tous,

Je me permets de vous écrire car j'ai besoin d'aide.

Au travers d'un Userform, je demande à ce que la ligne 5 de la feuille "Base" soit filtré par la valeur de la ComboBox que j'ai choisi.

Une fois celle-ci choisi, je veux que le résultat du filtrage apparaisse dans la ListBox.

Sauf que c'est là où j'ai un problème, c'est que toutes les lignes s'affichent.

Pouvez-vous m'aidez SVP

Private Sub ComboBox1_Click()
With Sheets("Base")

    Dim premiereCellule As Range
    Set premiereCellule = .Range("E6")

    Dim colonne As Integer
    colonne = Range("E6").Column

    Dim filtre As String
    filtre = ComboBox1.Value

    premiereCellule.AutoFilter
    premiereCellule.AutoFilter field:=colonne, Criteria1:="*" & filtre & "*"

     With ListBox1
     Set f = Sheets("Base")
            .List = f.Range("B6:H1500").Value
            For j = .ListCount - 1 To 0 Step -1
                If .List(j) = "" Then
                    .RemoveItem (j)
                End If
            Next j
        End With
        Call TriCol
End With
End Sub

Bonjour,

une solution a minima :

remplacer

            For j = .ListCount - 1 To 0 Step -1
                If .List(j) = "" Then
                    .RemoveItem (j)
                End If
            Next j

par

            For j = .ListCount - 1 To 0 Step -1
                If .List(j, 3) <> filtre Then
                    .RemoveItem (j)
                End If
            Next j

A+

Bonsoir,

Autre solution

Private Sub ComboBox1_Click()

    With Sheets("Base")

        Dim premiereCellule As Range: Set premiereCellule = .Range("E6")

        Dim colonne As Integer: colonne = Range("E6").Column

        Dim filtre As String: filtre = ComboBox1.Value

        premiereCellule.AutoFilter
        premiereCellule.AutoFilter field:=colonne, Criteria1:="*" & filtre & "*"

        Dim plage_filtrée As Range, plage As Range, ligne As Range
        Dim tb(): tb = Array()
        Dim i As Integer: i = 0
        Dim ligne_titre As Boolean: ligne_titre = True

        Set plage_filtrée = premiereCellule.CurrentRegion.SpecialCells(xlCellTypeVisible)
        For Each plage In plage_filtrée.Areas
            For Each ligne In plage.Rows
                If Not ligne_titre Then
                    ReDim Preserve tb(i): tb(i) = ligne.Value
                    i = i + 1
                Else
                    ligne_titre = False
                End If
            Next ligne
        Next plage

        With ListBox1
            .Clear
            If UBound(tb) > -1 Then .Column = Application.Transpose(tb)
        End With
        Call TriCol

    End With

End Sub

Merci beaucoup de votre réponse.

J'aimerais faire la même chose avec plusieurs ComboBox, je m'explique.

Je sélectionne la 1ère valeur dans la ComboBox1, le résultat s'affiche dans la ListBox.

Je sélectionne la 2nd valeur dans la Combo Box2, le résultat s'affiche avec les deux valeurs des deux ComboBox.

Et ainsi de suite pour, au total, 3 ComboBox et une TextBox.

Pour la TextBox, c'est la valeur entré dans la TextBox + les valeur "so" (Sans Objet).

Merci d'avance de votre réponse.

Rechercher des sujets similaires à "filtrage ligne resultat listbox"