XL 2013 filtre listbox avec un textbox (valeur en colonne)

RomainPOIRET

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à l'aide de mon textbox, de filtrer le contenu de ma listbox :
1639566298586.png

Le problème que j'ai c'est que quand je renseigne par exemple la lettre "p" il me propose qu'une seule proposition alors que 3 lignes présentent la lettre "p", de plus je souhaiterais que le filtre se fasse peut importe la position de ma selection. C'est à dire que si je renseigne "u", il me propose quand même "Autres choses" alors qu'aujourd'hui non.

Vous trouverez le code ci dessous :
1639566450017.png


Ainsi que le fichier,

Merci d'avance,

Romain
 

Pièces jointes

  • autre fichier résolu MATRICE DE COMPETENCE.xlsm
    108.4 KB · Affichages: 6
Solution
Bonjour,

Dans le fichier ci-joint vous trouverez les modifications ci-dessous :
VB:
Private Sub filtre_Change()
    Dim Recherche As String
    Dim Formations As Variant ' Tableau en mémoire des noms de formation
    Dim i As Integer

    Me.liste_formations.clear
    'N = 0
    '
    ' Première ligne du tableau qui commence en A1
    With Sheets("MATRICE").Range("A1").CurrentRegion.Rows(1)
        ' Recueillir les formations se commençant à la troisième quatrième colonne
        Formations = .Offset(, 3).Resize(, .Columns.Count - 3).Value
        ' créer le masque de recherche
        Recherche = "*" & Trim(Me.filtre.Value)
        ' s'il contient autre chose que *
        If Recherche <> "*" Then
            'compléter le masque...

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans le fichier ci-joint vous trouverez les modifications ci-dessous :
VB:
Private Sub filtre_Change()
    Dim Recherche As String
    Dim Formations As Variant ' Tableau en mémoire des noms de formation
    Dim i As Integer

    Me.liste_formations.clear
    'N = 0
    '
    ' Première ligne du tableau qui commence en A1
    With Sheets("MATRICE").Range("A1").CurrentRegion.Rows(1)
        ' Recueillir les formations se commençant à la troisième quatrième colonne
        Formations = .Offset(, 3).Resize(, .Columns.Count - 3).Value
        ' créer le masque de recherche
        Recherche = "*" & Trim(Me.filtre.Value)
        ' s'il contient autre chose que *
        If Recherche <> "*" Then
            'compléter le masque
            Recherche = LCase(Recherche) & "*"
            ' et comparer avec chaque valeur de la deuxième dimension
            ' du tableau en mémoire des formations
            For i = 1 To UBound(Formations, 2)
                If LCase(Formations(1, i)) Like Recherche Then
                    Me.liste_formations.AddItem Formations(1, i)
                End If
            Next
        Else
            Me.liste_formations.List = Application.Transpose(Formations)
        End If
    End With
sortie:
End Sub
 

Pièces jointes

  • autre fichier résolu MATRICE DE COMPETENCE.xlsm
    94.3 KB · Affichages: 19

Statistiques des forums

Discussions
312 046
Messages
2 084 851
Membres
102 687
dernier inscrit
Biquet78