AutoFilter sur plusieurs colonnes

Bonjour à tous,

Je suis confronté à un petit problème concernant les filtres auto en VBA sur un de mes fichiers.

L'objectif serait de pouvoir filtrer l'une ou l'autre des 2 colonnes présentes en fonction du "mot-clé" que l'utilisateur rentre dans ma boite de dialogue.

J'aimerai par exemple que le tri affiche la ligne avec Vélo, qu'il tape "vélo" ou bien "roule" (dans ce cas il n'y aurait pas que le vélo, on est d'accord).

Mais je n'arrive pas à filtrer sur plusieurs colonnes sans que ma condition soit exclusive. Mon filtre ne ressort rien...

Je vous joint mon code ainsi que le fichier sur lequel j'ai fait mes essais.

Option Explicit

Sub recherche_motcle()

    Dim recherche As String
    recherche = InputBox("Saisissez votre recherche :", "Recherche", "Entrez votre mot clé")

    With ActiveSheet.ListObjects("Index_AZ")
    .Range.AutoFilter Field:=1, Criteria1:="*" & recherche & "*", Operator:=xlAnd
    .Range.AutoFilter Field:=2, Criteria1:="*" & recherche & "*"

End Sub

D'avance merci pour l'aide que vous voudrez bien m'apporter.

Cordialement.

Samuel

Bonjour,

Voici une proposition avec 2 inputbox pour filtrer progressivement :

Sub recherche_motcle()

Dim mot$, k&

With ActiveSheet.Range("Index_AZ")
    If .Parent.FilterMode Then .AutoFilter
    For k = .Columns.Count To 1 Step -1
        mot = InputBox("Saisissez votre recherche sur la colonne [" & .Cells(0, k).Value & "] :", "Recherche")
        If Not .Columns(k).Find(mot, , xlValues, xlPart) Is Nothing Then
            .AutoFilter Field:=k, Criteria1:="*" & mot & "*", Operator:=xlAnd
        End If
    Next k
End With

End Sub

Cdlt,

Bonjour 3GB,

Merci pour ta réponse rapide, c'est gentil !

Je viens de parcourir le fichier que tu me renvoies et effectivement, on peut y parvenir par ce moyen.

L'idéal serait cependant qu'une seule InputBox interroge les 2 colonnes pour que, quoique l'on recherche, le filtre aille chercher dans l'ensemble du tableau et n'affiche que les lignes qui pourraient contenir la recherche. Je ne sais jamais si ils vont vouloir initier leur recherche par un mot clé ou une description.

D'où ma question de savoir si il est possible d'interroger plusieurs "Fields" dans .AutoFilter ?

Merci.

Cordialement.

Samuel.

Sauf erreur, je crois que les filtres sont une intersection de critères et qu'il n'est pas possible d'obtenir une union de critères (enfin sur les colonnes).

Donc, il est possible de remonter l'inputbox avant la boucle mais il faudra se contenter d'un seul mot dans ce cas :

Sub recherche_motcle()

Dim mot$, k&

With ActiveSheet.Range("Index_AZ") 'avec données du tableau Index_AZ
    If .Parent.FilterMode Then .AutoFilter 'si filtre sur la feuille, on défiltre
    mot = InputBox("Saisissez votre recherche par mot-clé :", "Recherche") 'mot clé
    For k = .Columns.Count To 1 Step -1 'de la dernière à la première colonne
        If Not .Columns(k).Find(mot, , xlValues, xlPart) Is Nothing Then 'si mot existe dedans (cad si resultat de la recherche n'est pas vide)
            .AutoFilter Field:=k, Criteria1:="*" & mot & "*", Operator:=xlAnd 'rajoute un champ de filtre sur la colonne k
        End If
    Next k 'colonne suivante
End With

End Sub

A essayer...

Cdlt,

Re-bonjour,

Merci beaucoup ! C'est exactement ce qu'il me fallait ;)

Je vais décortiquer ton code afin d'intégrer tout ce que tu as mis dedans (parce que je t'avoue que je n'ai pas ce niveau-là ^^)

Un grand merci pour ton aide en tout cas !!

Cordialement.

Samuel.

Super si ça te va !

J'ai édité mon code pour y mettre des commentaires s'ils peuvent t'aider à mieux comprendre !

Bonne continuation,

Oh parfait ! T'es au top.

Ca va vraiment m'aider !

Merci (pour la 1000e fois ^^)

Sam.

Rechercher des sujets similaires à "autofilter colonnes"