Question sur les filtres "Entre" deux dates

Hello à tous

Voici ce que je cherche à faire (sous Excel 2007):

A partir d'une liste déroulante (cellule F12 dans l'exemple), je choisis une période donnée (par exemple 2e Trimestre 2010)

Cela génère 2 dates : une de début (1er avril 2010) et une de fin (30 juin 2010)

Je souhaite alors que tout de suite après avoir choisi ma période dans le menu déroulant, le filtre s'applique sur une plage de données.

J'ai beau chercher, je ne vois pas comment faire, si ce n'est à utiliser la fonction "filtre chronologique" et à rentrer manuellement ma date, ce que je cherche à éviter, pour éviter les erreurs et gagner du temps.

Quelqu'un a une idée de la marche à suivre?

merci d'avance

Vincent

67testexcel1.xlsx (15.26 Ko)

Bonjour

Regarde si ça te convient :

210testexcel1.xlsm (29.23 Ko)

Amicalement

Nad

Salut Nad !

Merci pour ta réponse.

Eh bien il me semblait que c'était exactement ça (avec même un petit bouton en plus très pratique)

mais en testant ton fichier, c'est à dire en sélectionnant des nouvelles périodes dans la liste déroulante, un message d'erreur arrive très vite ...

Une idée du problème ?

VBA, je connais un peu bien sûr, mais pas la fonction filtre utilisée, je ne comprends pas bien le principe....

merci d'avance

Bonjour vinny38, Nad, forum,

----- Remarque sur les filtres -----

Si tu mets

Sub filtre()
    Range("e20:f" & [e65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range("d18:e19"), Unique:=False
End Sub

à chaque filtre la base de donnée est initialisée à la dernière ligne visible (ici en colonne E), ce qui est faux

il vaut mieux nommer la BDD avec un bouton "Initialise" par exemple

Sub Initialise()
Dim Lg%
    Application.ScreenUpdating = False
    Sheets("Feuil1").Activate
    On Error Resume Next
        ActiveSheet.ShowAllData
    On Error GoTo 0
    Lg = Range("d65536").End(xlUp).Row
    Range("d20:f" & Lg).Name = "base"
    Application.Goto Range("a1"), Scroll:=True
    Range("f12").Activate
End Sub

et ensuite la macro Filtre devient

Sub filtre()
    Range("base").AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range("D18:E19"), Unique:=False
End Sub

Le problème ne se pose pas si on extrait en dehors de la BDD

Formule critère

=ET($E21>=$E$13;$E21<=$F$13)

Amicalement

Claude

Bonjour

Si on appelle la macro Afficher_Tout avant de faire le filtre, il n'y a plus l'erreur :

Sub filtre()
Application.ScreenUpdating = False
Dim Lg
Call Afficher_Tout
    Lg = [D65536].End(xlUp).Row
    Range("E20:E" & Lg).AdvancedFilter Action:=xlFilterInPlace, _
    CriteriaRange:=Range("D18:E19"), Unique:=False
End Sub

Amicalement

Nad

Hello Nad, hello Claude

Eh bien sur le fichier exemple, ta modif marchait bien Nad, mais quand j'ai "transféré" les macros vers mon fichier d'exploitation, le même souci est réapparu.

Peut-être ai-je mal copié les macros... Mais je ne vois pas où j'aurais péché...

Bref, du coup, j'ai tenté la solution alternative de Claude et cela fonctionne bien.

Merci à vous deux pour votre aide précieuse.

a+

Vincent

Rechercher des sujets similaires à "question filtres entre deux dates"