Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 (VBA) AutoFiltre de valeurs dans un intervalle

Zort.x

XLDnaute Nouveau
Bonjour à tous !

Je débute en VBA, et je suis de suite confronté à un problème (j'imagine) simple :

Je souhaite créer une macro me permettant de filtrer une colonne comprenant des dates, ce filtre ne fera apparaître que les dates comprises entre 2 dates extrêmes.

Mon objectif final :

Je suis en charge d'un plan d'action pour mon entreprise. Chaque mois, nous rentrons environ 25 actions.
Un de nos indicateurs permet de visualiser depuis combien de temps les actions en cours sont ouvertes :
- Si, il y a de cela entre 2 mois et 3 mois, j'ai ouvert 25 actions et qu'entre temps j'en ai clôturé 15, le graphique affichera sur la valeur de l'axe "2 mois' la valeur "10" sous forme de barre.
- Si je clic sur la valeur de l'axe "2 mois", je souhaite qu'une macro associée à ce texte me filtre automatiquement (sur une autre feuille) toutes les actions encore ouvertes qui datent de aujourd'hui-2 mois <= action non clôturée < aujourd'hui-3 mois.

Mon intervalle de dates limites se trouvent dans un tableau me permettant de générer mon indicateur, elles sont évolutives en fonction de la date du jour ce qui veut dire que des actions peuvent basculer d'un intervalle à l'autre en fonction de la date du jour.

J'ai essayé cette méthode la (voir ci-dessous) mais cela ne marche pas :
VB:
Sheets("2021 Suivi des actions").Range("$B$5:$AD$253").AdvancedFilter Action:=xlFilterInPlace, Criteria1Range:=Range("'2021 Graphe'!D126:'2021 Graphe'!D127"), Unique:=False
Mon Range est aussi vaste car je prend en compte tout mon tableau, me facilitant les copier/coller
Dans la feuille 2021 Graphe en D126 : =MOIS.DECALER(AUJOURDHUI();-2)
Dans la feuille 2021 Graphe en D127 : =MOIS.DECALER(AUJOURDHUI();-3)

J'ai essayé également avec un AutoFilter
Code:
Sheets("2021 Suivi des actions").Range("$B$5:$AD$253").AutoFilter Field:=8, Criteria1:=">=""'2021 Graphe'!D126", Criterial2:="<""'2021 Graphe'!D127"
Ou encore en intégrant directement la formule
Code:
Sheets("2021 Suivi des actions").Range("$B$5:$AD$253").AutoFilter Field:=8, Criteria1:=">=""=MOIS.DECALER(AUJOURDHUI();-2)", Criterial2:="<""MOIS.DECALER(AUJOURHUI();-3)"
impossible de trouver la solution; je ne sais pas comment intégrer une formule à mon criteria1 / criteria2

Pouvez-vous m'aider SVP ?

N'hésitez pas si vous avez besoin de plus d'informations.

PS : Toutes les informations de mon fichier sont confidentielles, je ne peux donc pas vous transmettre de captures d'écran...

Merci d'avance !
 

cp4

XLDnaute Barbatruc
Bienvenue!
Tu peux rendre anonyme tes données en utilisant Ctrl+H (Remplacer en faisant un choix judicieux des options).
Si par exemple tu as le nom de personne, Belmondo sera remplacé par Belo. et ainsi de suite pour les données sensibles. Il est conseillé de joindre un fichier illustrant le problème.

Bonne journée
 

fanch55

XLDnaute Barbatruc
Bonjour à tous,

Sheets("2021 Suivi des actions").Range("$B$5:$AD$253").AutoFilter Field:=8, Criteria1:=">=""'2021 Graphe'!D126", Criterial2:="<""'2021 Graphe'!D127"

Contrairement à ce que propose l'enregistreur de Macros, les dates ne sont pas des strings mais des Longs
et c'est ce qu'attend Autofilter pour des filtres chronologiques

VB:
.AutoFilter Field:=8, _
      Criteria1:=">=" & CLng(['2021 Graphe'!D126]), Operator:=xlAnd,  _
      Criteria2:="<=" & CLng(['2021 Graphe'!D127])
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…