FILTRE EN FONCTION DE 3 CRITERES selon 3 cellules

Bonjour à tous !

Je voudrais mettre en place un filtre en fonction de 3 critères.

Chaque critère correspond à une cellule

Mon niveau excel ne me permet pas de faire cela! je fais donc appel à vos connaissances et à votre passion pour m'aider !!!

Merci à vous !

Je vous ai mis en PJ le fichier test avec en jaune les colonnes filtres

Votre aide me serait vraiment précieuse !!!

107test.xlsm (533.36 Ko)

Bonjour à tous,

tu filtres directement ton tableau, et excel te propose même de choisir les mois.

filtre 2019 09 04 172106

Crdlmt

Bonjour,

Merci à toi, ce que je souhaitais était un peu plus poussé sous la forme d'une listbox pour les critères saisies dans les cellules

De plus je voulais un filtre automatique via une macro style private sub

Aurais tu une idée?

Bonjour,

à tester,

With Range("$B$8:$BX$886")
    .AutoFilter
    .AutoFilter Field:=4, Criteria1:=Range("F2").Value
    .AutoFilter Field:=6, Criteria1:=Range("F3").Value
    dt = DateSerial(Year(Range("F4").Value), Month(Range("F4").Value), 1)
    .AutoFilter Field:=7, Criteria1:=">=" & dt, Operator:=xlAnd
End With

Bonjour,

à tester,

With Range("$B$8:$BX$886")
    .AutoFilter
    .AutoFilter Field:=4, Criteria1:=Range("F2").Value
    .AutoFilter Field:=6, Criteria1:=Range("F3").Value
    dt = DateSerial(Year(Range("F4").Value), Month(Range("F4").Value), 1)
    .AutoFilter Field:=7, Criteria1:=">=" & dt, Operator:=xlAnd
End With

C'est presque parfait !!!!

Merci beaucoup, il n'y a que le filtre pour le mois qui ne fonctionne pas :/

c'est presque parfait !!!!

Merci beaucoup, il n'y a que le filtre pour le mois qui ne fonctionne pas :/

essai en remplacant

dt = DateSerial(Year(Range("F4").Value), Month(Range("F4").Value), 1)

par

dt = CLng(DateSerial(Year(Range("F4").Value), Month(Range("F4").Value), 1))

c'est presque parfait !!!!

Merci beaucoup, il n'y a que le filtre pour le mois qui ne fonctionne pas :/

essai en remplacant

dt = DateSerial(Year(Range("F4").Value), Month(Range("F4").Value), 1)

par

dt = CLng(DateSerial(Year(Range("F4").Value), Month(Range("F4").Value), 1))

Ca fonctionne en effet un peu mieux ! Il prend toutes les valeurs = ou supérieur au mois demandé, il n'est pas possible de prendre que le mois demandé?

Aussi, il est possible de faire en sorte que si je ne met pas de critère dans les cellules F, la macro ne filtre pas la colonne concernée?

Autrement dit, il est possible de dire à la macro de ne filtrer que si la cellule F est non vide?

Merci à toi !

Bonjour à tous

Par filtre avancé

Sub Filtre()
Sub Filtre()
    With Worksheets("Feuil1")
        Set LaPlage = .Range("B8").CurrentRegion
        .Range("H1:H2") = Application.Transpose(.Range("E2:F2"))
        .Range("I1:I2") = Application.Transpose(.Range("E3:F32"))
        .Range("J1") = .Range("E4")
        .Range("J2").Formula = "=AND(Checkin>=" & CLng(Range("F4")) & ",Checkin<" & WorksheetFunction.EoMonth(Range("F4").Value, 0) + 1 & ")"
        Set Criteres = .Range("H1:J2")
        LaPlage.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteres, Unique:=False
        Criteres.ClearContents
    End With
End Sub

Mais pourquoi ce duplicata et ne pas filtrer directement la source ?

Edit : j'ai légèrement modifié car tes dates ont des horaires, ce qui influe sur le filtre

Bonjour à tous

Par filtre avancé

Sub Filtre()
Sub Filtre()
    With Worksheets("Feuil1")
        Set LaPlage = .Range("B8").CurrentRegion
        .Range("H1:H2") = Application.Transpose(.Range("E2:F2"))
        .Range("I1:I2") = Application.Transpose(.Range("E3:F32"))
        .Range("J1") = .Range("E4")
        .Range("J2").Formula = "=AND(Checkin>=" & CLng(Range("F4")) & ",Checkin<" & WorksheetFunction.EoMonth(Range("F4").Value, 0) + 1 & ")"
        Set Criteres = .Range("H1:J2")
        LaPlage.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteres, Unique:=False
        Criteres.ClearContents
    End With
End Sub

Mais pourquoi ce duplicata et ne pas filtrer directement la source ?

Edit : j'ai légèrement modifié car tes dates ont des horaires, ce qui influe sur le filtre

Salut!

La macro ne semble pas fonctionné chez moi :/

Il s'agit d'un duplicata car ensuite je compte masquer et rajouter d'autres colonnes

RE

La macro ne semble pas fonctionné chez moi :/

Ça aide pas !

Tu as un message d'erreur ?

C'est bien le fichier transmis ?

Sur ce fichier cela fonctionne...

Arf ! je vois qu'en copiant j'ai copié 2 fois la 1ère ligne Sub Filtre() : évidemment il faut une seule fois

RE

La macro ne semble pas fonctionné chez moi :/

Ça aide pas !

Tu as un message d'erreur ?

C'est bien le fichier transmis ?

Sur ce fichier cela fonctionne...

Arf ! je vois qu'en copiant j'ai copié 2 fois la 1ère ligne Sub Filtre() : évidemment il faut une seule fois

Autant pour moi !

Ca fonctionne bien, le problème est quand il n'y a pas de période que la macro plante :/

RE

La macro ne semble pas fonctionné chez moi :/

Ça aide pas !

Tu as un message d'erreur ?

C'est bien le fichier transmis ?

Sur ce fichier cela fonctionne...

Arf ! je vois qu'en copiant j'ai copié 2 fois la 1ère ligne Sub Filtre() : évidemment il faut une seule fois

Autant pour moi !

Ca fonctionne bien, le problème est quand il n'y a pas de période que la macro plante :/ Excel se fige et ne répond plus

RE

La macro ne semble pas fonctionné chez moi :/

Ça aide pas !

Tu as un message d'erreur ?

C'est bien le fichier transmis ?

Sur ce fichier cela fonctionne...

Arf ! je vois qu'en copiant j'ai copié 2 fois la 1ère ligne Sub Filtre() : évidemment il faut une seule fois

Autant pour moi !

Ca fonctionne presque bien ^^', le problème est quand il n'y a pas de période que la macro plante :/ Elle masque toutes les lignes

De plus, il est possible de faire en sorte que quand je ne met aucun critère, toutes les lignes s'affichent?

RE

C'est à dire que F4 peut être laissé vide ?

Dans ce cas remplace la ligne

.Range("J2").Formula = "=AND(Checkin>=" & CLng(.Range("F4")) & ",Checkin<" & WorksheetFunction.EoMonth(.Range("F4").Value, 0)

Par

If .range("F4") <>"" then .Range("J2").Formula = "=AND(Checkin>=" & CLng(.Range("F4")) & ",Checkin<" & WorksheetFunction.EoMonth(.Range("F4").Value, 0)

J'avais d'ailleurs oublié les .

C'est parfait !

Merci beaucoup pour votre aide !

Rechercher des sujets similaires à "filtre fonction criteres"