Filtre autofilter

cs_Zazou31 Messages postés 3 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 3 mars 2004 - 2 mars 2004 à 10:43
cs_Zazou31 Messages postés 3 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 3 mars 2004 - 3 mars 2004 à 10:27
Bonjour,

Je débute en VB. Je voudrais appliquer un filtre sur un classeur Excel.
Voici mon code:

Selection.AutoFilter field:=14, Criteria1:="*toto*", Operator:=xlOr, Criteria2:="=*titi*"
Selection.AutoFilter field:=1, Criteria1:="*toto*", Operator:=xlOr, Criteria2:="=*titi*"

Or le résultat retourné correspond aux lignes qui contiennent "toto" ou "titi" dans la colonne 1 ET 14. Or je voudrais retourner les lignes contenant "toto" OU "titi" et cela dans la colonne 1 ou 14. Ne peut on pas définir dans field une plage de données ?

J'espère être assez claire. Merci d'avance

4 réponses

gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
3 mars 2004 à 07:52
Salut,

Je n'ai jamais essayer ce type de syntaxe. Mais voici un petit truc pour tout ce qui code En execl et Word. Enregistre une macro durant laquelle tu execute ton opération de filtrage via les menus. Arr^te l'enregistrement de la macro et édite la. Elle contient le code qui peut être transposé en VB via quelques petites modifications.

A+
0
cs_Zazou31 Messages postés 3 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 3 mars 2004
3 mars 2004 à 09:07
Salut,

Merci pour ton conseil mais j'ai déja essayé cette solution et le problème c'est que lorsque j'applique mon filtre sur une première colonne, je ne peux pas appliquer mon filtre sur une deuxième colonne sur la totalité des lignes car le premier filtre sélectionne déjà les lignes correspondant au premier filtre.

La seule solution que j'ai trouvé pour le moment c'est de créer une feuille ou je copie les lignes sélectionnées quand j'apllique le filtre sur la premiere colonne , après j'affiche a nouveau toutes les lignes, puis j'applique mon filtre sur la deuxième colonne et je copie les lignes sélectionnées dans cette feuille. Mais cela m'oblige à créer une feuille et ce n'est pas très pratique.

Si quelquun a déja eu ce genre de filtre a faire (chercher une expression dans toutes les cellules de chaque ligne et sélectionner toutes les lignes contenant l'expression, que ce soit dans la preemière ou la dixième colonne) et a une suggestion a me proposer, je lui en serai très reconnaissante.
0
gaa179 Messages postés 361 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 12 novembre 2009 2
3 mars 2004 à 10:01
Salut,

autre idée pour ta recherche.
Fait une recherche sur tes 2 colonnes pour les lignes ne correspondant pas à tes critères. Fait disparaître ces lignes (Hide), il ne te restera plus que lignes.

Tu dois modifier le range pour qu'il corresponde à ton range (à faire dynamiquement). Lle c.column+1 permet de vérifié dans la 2 ème colonne de recherche pur la même ligne, dans ton cas +13 ?

Syntaxe:
'Pour filtrer
For Each c In [A1:A14] 'Range de la première colonne
If c.Value <> "a" And c.Value <> "b" And Cells(c.Row, c.Column + 1).Value <> "a" And Cells(c.Row, c.Column + 1) <> "b" Then
Rows(c.Row).Hidden = True
End If
Next

'Pour enlever le filtre
Rows("1:15").Select
Rows("1:15").EntireRow.AutoFit

A+
0
cs_Zazou31 Messages postés 3 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 3 mars 2004
3 mars 2004 à 10:27
Merci beaucoup,

Ca fonctionne à merveille. Ca fait deux jours que je cherche, la j'essayais avec la fonction AdvancedFilter mais le résultat n'était pas concluant. Tu m'otes vraiment une épine du pied, c'était pas compliqué mais comme je débute je patauge un peu.

Bonne journée a toi et encore merci 8-)
0
Rejoignez-nous