Fonction tri avancé avec dates

Bonsoir à tous,

Je souhaiterais dans le document ci-joint extraire les lignes dont la colonne "last_visite" contiendrait une date plus ancienne que 4 mois par exemple.

J'ai essayé le Tri avancé avec le critère "<AUJOURDHUI()-120"

Mais ça ne fonctionne pas…

Y a til une manip a faire pour faire fonctionner cela avec le tri avancé dans Excel? Ou bien faut il procéder autrement?

Ce que je souhaite c'est pouvoir dans le liste extraire automatiquement les lignes d'une certaine ancienneté..

Merci de votre aide

Fichier retiré (contient des données confidentielles), merci d'anonymiser le fichier avant de le publier

Bonjour,

A priori, ton classeur contient des données personnelles à supprimer !?

Cdlt.

Bonjour,

Cela dit, comme toutes les dates ont plus de 4 mois, c'est normal que ça ne filtre rien.

Après, il faut voir aussi ce que tu entends par "extraire".

Est-ce juste filtrer, ou copier les données sur un nouvel onglet?

Bonsoir Jean Eric, bonsoir Joyeux Noël,

Alors non je souhaite pas supprimer des données personnelles mais vraiment trier/filtrer ou encore extraire les lignes dont la date "last visite" correspond au critère.

En l'occurrence, il s'agit d'une extraction de mon fichier client et à chaque visite je mets à jour la date de passage. Et je ne dois revisiter ces points que 120 jours ou 4 mois plus tard

Raison pour laquelle je souhaite discriminer les lignes correspondantes pour ensuite les répertorier sur une carte très rapidement.

Du coup pour répondre à ta question Joyeux Noël, je souhaite dans l'idéal les extraire sur une autre feuille ça serait le top.

Même dans l'absolu ce serait trouver une formule qui me permette de les afficher sur une autre feuille via un critère que j'inscrirais dans une cellule…

Mais la question est comment copier une ligne entière en fonction d'un critère basé sur une cellule d'entre-elles?...

Je crois qu'une des spécialités de Jean-Éric est de faire ça en 3 coups de cuiller à pot.

edit : je dirais qu'il faut créer une fonction Power Query qui renvoie la date du jour - 4 mois.

Ensuite, un crée une colonne qui met 1 ou 0, suivant si on dépasse ou non cette date. On filtre les 1, et on exporte ça.

C'est ça, Chris et Jean-Eric ?

J'essaie de progresser sur PQ, mais c'est pas facile

Ah si il y a une solution en trois coups de cuillères à pot ça m'intéresse…

Là j'arrive a discriminer celles qui sont <AUJOURDHUI() avec en zone de critères <TEXTE(AUJOURDHUI();"jj/mm/aaaaa")

En revanche si je fais <TEXTE(AUJOURDHUI();"jj/mm/aaaaa")-120 ça ne fonctionne pas ..

et plus logiquement

<TEXTE(AUJOURDHUI()-120;"jj/mm/aaaaa") ?

Je viens de tenter =DATEVAL(TEXTE(AUJOURDHUI();"jj/mm/aaaaa"))-120

Mais ça ne fonctionne pas non plus en critère de tri avancé… :/

Je viens de tester ta proposition Joyeux Noël

<TEXTE(AUJOURDHUI()-120;"jj/mm/aaaaa")

Mais ça non plus ça ne prend pas ..

en AQ1,

="<"&AUJOURDHUI()-120

Comme tu as des dates, il faut garder un critère en date, sinon ça ne colle pas.

Comme tu avais dit que ça marchait, je n'avais pas vérifié si ça marchait effectivement ou pas.

Si tu lances ton filtre avancé, ça marche. Ça filtre les lignes 8, 70 et 87

Je maintiens que sans VBA, avec Power Query, d'autres feraient ça super bien, mais je n'y arrive pas.

Je te remercie ça fonctionne

Effectivement la méthode avec Power Qwery semble très intéressante,

Je vais essayer de me pencher sur une suite de cours sur la question prochainement …

Entre les VBA ( que je viens tout juste de commencer à étudier … )¨Power Qwery et Power Pivot, il y a de quoi faire mais j'espère d'ici quelques mois avoir avancé la dessus ..

J'ai trouvé un tuto pour copier des lignes dans une autre feuille selon critère via VBA, mais je ne comprends pas tout … On dirait qu'il s'adresse à un public déjà bien averti ..

J'ai vu que mon fichier avait été supprimé pour causes de données personnelles … la seule donnée perso que j'ai pu identifier est mon nom de famille

Si ce n'est pas cela je veux bien que l'on me dise ce que c'est que je ne recommence pas la même erreur à l'avenir.

Je reposte le fichier (avec le nom en moins) dans le cas où il y aurait possibilité de me montrer un exemple à partir de Power Qwery

Merci à tous,

Re,

Pour le principe en VBA.

A adapter.

Cdlt.

12shtours.xlsm (23.91 Ko)
Public Sub FilterData()
Dim dtm As Date
    With Sheet1
        If .FilterMode Then .ShowAllData
        dtm = DateAdd("m", -4, VBA.Date)
        With .Range("A1").CurrentRegion
            .AutoFilter 1, ">=" & CLng(dtm)
            .Copy Sheet2.Cells(1)
            .AutoFilter
        End With
    End With
End Sub

Mince, pas de requête PQ cachée dans le fichier

Merci Jean-Eric,

Je vais essayer de comprendre tout ça!

Jean- Eric,

Saurais tu m'expliquer sommairement le processus?

Je suis tout débutant sur VBA..

Je comprends que tu invoques une variable,

que celle-ci se voit définie en mois, et qu'elle serait de -4 mois par rapport à VBA DATE ( la date système je suppose)

Je vois bien que l'on copie aussi aussi la ligne qui répond à ce critère en lui étant supérieure ou égale

Mais pour le reste… c'est très vague oO

Public Sub FilterData()

Dim dtm As Date

With Sheet1

If .FilterMode Then .ShowAllData

dtm = DateAdd("m", -4, VBA.Date)

With .Range("A1").CurrentRegion

.AutoFilter 1, ">=" & CLng(dtm)

.Copy Sheet2.Cells(1)

.AutoFilter

End With

End With

End Sub

Merci

Bonjour,

Un nouveau fichier et une procédure commentée.

Cdlt.

18shtours.xlsm (30.14 Ko)
Public Sub FilterData()
'Déclaration des variables
Dim dtm As Date
    '
    With Worksheets("Input")
        'Si la feuille est en mode filtre, on affiche tout.
        If .FilterMode Then .ShowAllData
        'Date du jour -4 mois
        'Information : double-clic sur dateAdd et F1 pour afficher l'aide !...
        dtm = DateAdd("m", -4, VBA.Date)
        'CurrentRegion : plage de cellules limitée(1ère ligne et 1ère. colonne vides) ; soit dans l'exemple : A1:C201
        With .Range("A1").CurrentRegion
            'Filtre la colonne 1 avec la contrainte date >= date du jour (convertie en entier long, car dates au format US)
            .AutoFilter field:=1, Criteria1:=">=" & CLng(dtm)
            'Copie de la plage filtrée avec en-têtes (restitution)
            .Copy Destination:=Worksheets("Output").Range("A1")
            'Affiche tout (RAZ)
            .AutoFilter
        End With
    End With
    '
    With Worksheets("Output")
        .Activate
        With .Range("A1")
            'Largeur colonne auto.
            .EntireColumn.AutoFit
            .Select
        End With
    End With
End Sub

Bonsoir Jean-Eric,

Je viens de voir ta réponse.

Merci pour ton retour et ton aide!

Je vais potasser ça comme il se doit!

Rechercher des sujets similaires à "fonction tri avance dates"