Plus de 2 conditions de tri avec autofilter

Bonjour,

J'ai besoin de trier un classeur selon une colonne où les valeurs sont de la forme 0XXX000YY. Avec XXX un trigramme variable qui sera mon critère de tri.

Le code ci dessous fonctionne parfaitement pour 2 critères :

indice_der_ligne = Range("B" & Rows.Count).End(xlUp).Row
Range("A" & 2 & ":BI" & indice_der_ligne).Select
Selection.AutoFilter Field:=9, Criteria1:=Array("*XXX*", "*YYY*"), Operator:=xlFilterValues

Mais il me renvoie une sélection vide lorsque j'ajoute d'autres critères du type "ZZZ" :

Selection.AutoFilter Field:=9, Criteria1:=Array("*XXX*", "*YYY*", ... , "*ZZZ*"), Operator:=xlFilterValues

Merci de votre aide.

PS : Impossibilité de fournir le fichier source car confidentiel

Bonjour,

Via la méthode AutoFilter de l'objet Range on ne peut utiliser plus de deux critères d'où votre problématique.

Il faut alors passer par la fonction filtre avancé :

Sub FILTRE()
[A2].CurrentRegion.AdvancedFilter xlFilterInPlace, [W1:W4]
End Sub


- [W1] contient le même intitulé que l'en tête de la colonne à filtrer et exactement le même, donc à l'intersection de votre colonne et de la ligne 2 ici comme mon tableau débute à la ligne 2.
- W2 à W4 (adaptable et extendable) contient vos critères sous la forme *XXX*, *YYY*, *ZZZ* etc etc ...

Cette plage peut être sur une autre feuille dès lors que vous avez le même intitulé en 1ère ligne de votre plage de critère. Dans ce cas le code devient par exemple :

Sub FILTRE()
[A2].CurrentRegion.AdvancedFilter xlFilterInPlace, Range("Feuil2!W1:W4)
End Sub

Cdlt,

Tout d'abord merci de ta réponse je vais me pencher dessus.

La chose étrange est que je parviens à filtrer selon autant de critères que je souhaite lorsque je ne travaille pas sur des éléments successifs d'une chaine de caractères. En gros "XXX" fonctionne avec autant de critères que désirés mais "*XXX*" non ...

Bonjour,

Oui, les wildcards (*, _, #, etc ...) sont limités à 2 critères dans la méthode AutoFilter, vous ne pourrez pas faire plus. Sinon il faut énumérer les critères complet 1 à 1 dans un array (comme ce que donne l'enregistreur de macro.

C'est comme ça que la méthode a été construite ... Du moins c'est ce que j'ai lu. Désolé.

Cdlt,

Rechercher des sujets similaires à "conditions tri autofilter"