Fusionne de 2 instructions "Filtre"

Bonjour à tous ,

je cherche une solution pour fusionner ces 2 instructions en 1 seul.

j'ai fait plusieurs tentative en vain.

merci pour votre aide.

ActiveSheet.ListObjects("Tableau3").Range.AutoFilter Field:=13, Criteria1:= _
        "=x", Operator:=xlOr, Criteria2:="="

ActiveSheet.ListObjects("Tableau3").Range.AutoFilter Field:=13, Criteria1:= _
        ">=01/01/2022", Operator:=xlAnd, Criteria2:="<01/01/2025"

Bonjour

Si la colonne 13 contient à la fois du texte (X) et des dates, il y a un problème de conception...

Non, il n'y a pas de problèmes de conception, c'est un fichier particulier. J'ai besoin de fusionner ces deux instructions qui me permettront de faire apparaitre toutes les lignes dont la colonne 13 contient soit un "x" soit "vide" et toutes les cellules comprises avec une date entre 2022 et 2025.

RE

Pas faisable en filtre auto.

Il faut passer par un filtre avancé avec un plage de critères de 3 cellules

image

avec les formules suivantes en 1ère ligne :

=Date>=DATE(2022;1;1)*1

=Date<DATE(2025;1;1)*1

en en 2ème ligne

=Date="x"

Date est le titre de la colonne concerné

Si le titre a plus d'un mot remplacer Date par l'adresse du titre M1

Ne pas s'occuper des #NON ou vrai faux, la formule n'est interprétée que par le filtre

En VBA (adapter la plage de critères

    Application.CutCopyMode = False
    [Tableau3].ListObject.Range.AdvancedFilter Action:=xlFilterInPlace, _
        CriteriaRange:=ActiveSheet.Range("Y1:Z3"), Unique:=False

Bonjour 78chris,

j'ai pas trop compris tes instructions.

Dans mon exemple, je dois coder qu'en VBA.

je te joint mon fichier test pour que ce soit plus clair.

Merci pour ton aide

2essai-filtre.xlsx (13.45 Ko)

Bonjour

As-tu au moins regarder l'aide surs les filtres avancés ?

6filtre-av.xlsm (20.16 Ko)

Restera à modifier par VBA les formules de la zones de critères si les dates changent

Rebonjour 78chris,

j'ai exécuté ta macro mais elle me masque toutes les lignes.

La macro ci-dessous qui ressemble à ce que je veux. Seul souci c'est que je veux une instruction avec la plage de date suivante : " 01/01/2022 =< Date < 01/01/2024".

Criteria2:=Array(0, "10/1/2023", 0, _
"9/1/2022", 0, "12/31/2021", 0, "12/31/2020", 0, "12/31/2019")

Sub Macro7()
'
' Macro7 Macro
'

'
    ActiveSheet.ListObjects("Tableau3").Range.AutoFilter Field:=13, Criteria1:= _
        Array("x", "="), Operator:=xlFilterValues, Criteria2:=Array(0, "10/1/2023", 0, _
        "9/1/2022", 0, "12/31/2021", 0, "12/31/2020", 0, "12/31/2019")
End Sub

Comment pourrais je écrire cette instruction?

Criteria2:="<01/01/2024" and ">=01/01/2022"

RE

Ah bon ?

image

Ton post 1 donnait le filtre auto pour une plage de date, non ?

bonjour 78chris,

oui c bien une plage de date.

Ton exemple est bon après filtre.

Mais moi je ne comprends pas quand j'exécute la macro tout se masque.

Peut être je fais la mauvaise manip.

Comment fais tu pour lancer ta macro?

Je te joins le fichier avec la macro lancer.

Bonjour

Merci beaucoup ce fichier fonctionne très bien.

Par curiosité c'était quoi le souci et est ce que tu as fait quelque chose.

Bonjour

Je travaille avec 365 qui met les formules en matriciel par défaut ce qui du coup rendait les critères inopérants dans toute version antérieure

78chris,

Je comprends mieux pourquoi cela ne marchait pas.

j'ai un autre souci tu dit :

Si le titre a plus d'un mot remplacer Date par l'adresse du titre M1

Ne pas s'occuper des #NON ou vrai faux, la formule n'est interprétée que par le filtre

j'ai modifié RDV par M1 et on a bien des vrais ou faux mais quand j'exécute la macro ne marche plus elle supprime des ligne au hasard.

c'est pas encore la formule matriciel.

RE

C'est M2 (la 1ère ligne de données) : je me débouille toujours pour ne pas avoir d'espaces, de ce fait je n'utilise jamais cette syntaxe...

Rechercher des sujets similaires à "fusionne instructions filtre"