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 jpar
For j = .ListCount - 1 To 0 Step -1
If .List(j, 3) <> filtre Then
.RemoveItem (j)
End If
Next jA+
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
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 SubMerci 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.