Filtre dynamique VBA

Bonjour @ toutes et tous.

Voila le sujet, j'ai crée un filtre dynamique VBA (en m'inspirant sur le forum)
j'ai voulu le dupliquer, bien évidemment, en l'adaptant
Le second filtre ne s'applique pas :(
Du coup j'en viens à vous pour une petite aide sur ce cas de figure (ou est ce que ca peut bugguer)
ou encore, pensez vous qu'il soit possible d'adapter le "code 1" afin qu'il fasse le filtre soit en fonction de l'un ou de l'autre (soit un n° de suivi, soit un nom)

Par avance, merci pour toutes les réponses apportées

14classeur1.xlsm (22.28 Ko)

Pour info dans mon fichier j'avais mis 2 foix TextBox1 au lieu d'un "2"
Par contre si quelqu'un a une idée de "fusion" des 2 recherches en une
1 textbox qui pourrait chercher indifféremment soit le N° GLS, soit le nom ce serait top

Bonjour,

Par contre si quelqu'un a une idée de "fusion" des 2 recherches en une 1 textbox qui pourrait chercher indifféremment soit le N° GLS, soit le nom ce serait top

Avec la textbox1 uniquement et sur base de votre fichier posté, essayez le code ci-dessous

Private Sub TextBox1_Change()
Dim i as integer

With Sheets("GLS")
    .Cells.EntireRow.Hidden = False
    If TextBox1.Value = vbNullString Then Exit Sub

    For i = .Range("F" & Rows.Count).End(xlUp).Row To 7 Step -1
        If Not UCase(.Cells(i, 5)) Like "*" & TextBox1.Value & "*" And Not UCase(Cells(i, 6)) Like "*" & TextBox1.Value & "*" Then
            .Rows(i).Hidden = Not .Rows(i).Hidden
        End If
    Next i
End With
End Sub

Rem : Attention que si votre vrai fichier contient un tableau au format structuré (ce que j'imagine au vu de la couleur), le code sera différent

Hello à tous,

Une autre proposition :

Private Sub TextBox1_Change()
    Dim filtre1 As String, filtre2 As String
    Select Case TextBox2.Text
        Case Is = ""
            filtre1 = "*" & Sheets("GLS").TextBox1.Text & "*"
            Range("c6:g22").AutoFilter Field:=3, Criteria1:=filtre1
        Case Else
            filtre1 = "*" & Sheets("GLS").TextBox1.Text & "*"
            filtre2 = "*" & Sheets("GLS").TextBox2.Text & "*"
            Range("c6:g22").AutoFilter Field:=3, Criteria1:=filtre1
            Range("c6:g22").AutoFilter Field:=4, Criteria1:=filtre2
    End Select
End Sub

Private Sub TextBox2_Change()
    Dim filtre1 As String, filtre2 As String
    Select Case TextBox1.Text
        Case Is = ""
            filtre1 = "*" & Sheets("GLS").TextBox2.Text & "*"
            Range("c6:g22").AutoFilter Field:=4, Criteria1:=filtre1
        Case Else
            filtre1 = "*" & Sheets("GLS").TextBox2.Text & "*"
            filtre2 = "*" & Sheets("GLS").TextBox1.Text & "*"
            Range("c6:g22").AutoFilter Field:=4, Criteria1:=filtre1
            Range("c6:g22").AutoFilter Field:=3, Criteria1:=filtre2
    End Select
End Sub

@Dan
mon tableau n'est plus en structuré (car meme en simple textbox ca ne fonctionné pas)
par contre ton code ne fonctionne que si je respecte la casse (majuscule / minuscule) pour pour les "2" recherches en textbox1 :(

Bonjour

par contre ton code ne fonctionne que si je respecte la casse (majuscule / minuscule) pour pour les "2" recherches en textbox1 :(

Modifiez cette ligne dans le code proposé

        If Not UCase(.Cells(i, 5)) Like "*" & UCase(TextBox1.Value) & "*" And Not UCase(Cells(i, 6)) Like "*" & UCase(TextBox1.Value) & "*" Then

Si ok pensez à

NB : Pleins de fils sont toujours ouverts dans votre profil

Crdlt

@ Dan,
Bonjour et merci pour la solution apportée.
Ca fonctionne :)

Rechercher des sujets similaires à "filtre dynamique vba"