XL 2016 TCD avec dates de filtre paramétrables dans la feuille

Rorolidalgo

XLDnaute Nouveau
Bonjour,

J'utilise plusieurs TCD où chaque semaine je filtre des données de vente sur la semaine en cours.
Exemple pour cette semaine, je vais dans le filtre et j'indique "Entre le 29/07/19 et le 04/08/19".
Je souhaiterais avoir 2 cellules dans ma feuille, en dehors du TCD, l'une s'appelant par exemple DateDebut (ici 29/07/19) et l'autre s'appelant DateFin (ici 04/08/19) et les TCD viendraient filtrer entre ces 2 dates, qui deviennent donc paramétrables, sans que j'aie à aller le faire manuellement dans le filtre de chque TCD.
Quelqu'un sait-il comment faire en VBA?
Merci d'avance,
Rodolphe
 

chris

XLDnaute Barbatruc
Bonjour à tous

Le plus simple est d'utiliser la technique de la période glissante Ce lien n'existe plus

On peut adapter la formule pour la dernière semaine échue par exemple
=ET(A2>=AUJOURDHUI()-(JOURSEM(AUJOURDHUI();2))-6;A2<=AUJOURDHUI()-(JOURSEM(AUJOURDHUI();2)))*1

D'autre part dans un TCD on peut grouper les dates par groupes de 7 jours, le 1er tombant un lundi, ce qui facilite aussi le filtrage qui peut être fait par segment plutôt que via les listes déroulantes.
 

Rorolidalgo

XLDnaute Nouveau
Bonjour, Roblochon
Effectivement j'avais essayé et j'obtenais:
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields("Création"). _
PivotFilters.Add2 Type:=xlDateBetween, Value1:="22/07/2019", Value2:= "28/07/2019"

Lorsque je remplacais les 2 dates par Range("B19") et Range("B20") par exemple, ça ne fonctionnait pas, car j’avais le message "Pb de format".
Et effectivement il faut transformer la date en Chaine de caractères ce qui donne:
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Création"). _
ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Création"). _
PivotFilters.Add2 Type:=xlDateBetween, Value1:=CStr(Range("DateDebutCommandes")), Value2:= _
CStr(Range("DateFinCommandes"))

Seul inconvénient: le ClearAllFilters nécessite que je coupe et colle momentanément le TCD 1000 lignes plus bas dans ma feuille, pour qu'il ne "déborde" pas dans les autres TCD! tandis que quand je le faisais manuellement, le fait de changer de plage de dates ne m'obligeait pas à faire ça.
Et si je ne mets pas l'instruction ClearAllFilters alors j'ai un erreur.

@chris: merci pour ton conseil, le problème est que je ne conserve pas le fichier source que j'ouvre en lecture seule par ailleurs, et donc je ne veux pas le modifier en y ajoutant des champs.
@Jean-Eric: je viens juste d'ouvrir ton fichier et je viens de retrouver la même chose.

Merci à tous en tous cas pour votre aide.
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 945
Membres
101 849
dernier inscrit
florentMIG