Pouvez-vous m'aider à trouver le code VBA qui permet de filtrer la colonne du champ "date closed" sur la date la plus récente ? Bien sûr chaque jour il y aura de nouvelles données et donc les dates vont changer et il faut que seule la case de la date la plus récente soit cochée dans le filtre.
Re : Filtrer tableau croisé dynamique sur la date la plus récente (change chaque jour
Re
Sinon sur Xl2010 tu peux tester ce code qui pourrait fonctionner sur XL 2007 , mais au préalabe, il faut mettre tes données sources date au format standard:
Code VBA: Sub Filtre_TCD_Date_XL2010() 'Pour éviter le bug: Attention mettre les dates sources au format standard Dim Filtre AsString 'XL2010 ok ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Date Closed") _
.ClearAllFilters
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _ "Date Closed")
.PivotItems("0").Visible = False
.PivotItems("1").Visible = False
.PivotItems("(blank)").Visible = False EndWith 'Filtre = CDbl(CDate("10/12/2013")) With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _ "Date Closed") OnErrorResumeNext For i = 1 To .PivotItems.Count
Filtre = CDbl(CDate(.PivotItems(i)))
.PivotItems(Filtre).Visible = False Next EndWith With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _ "Date Closed") OnErrorResumeNext For i = 1 To .PivotItems.Count
Filtre = CDbl(CDate(Cells(1, 1)))
.PivotItems(Filtre).Visible = True 'attention si le dernier doit être pris en compte, le mettre à true; Faire un test .PivotItems(.PivotItems.Count).Visible = False Next EndWith EndSub
Re : Filtrer tableau croisé dynamique sur la date la plus récente (change chaque jour
Hello MJ113 !
Merci pour ton aide, j'ai pas encore eu le temps de regarder pour l'extraction il va falloir que je fouille sur des tutos pour vois un peu ce que tu as fait. Pour le moment j'ia adopté la solution bancale, mais ca marche. C'est à dire que je tire mon range range pour les données sources de la pivot table jusqu'à la ligne 2000 et je rempli chaque cellule au format date
Je vais tester ton deuxième code début de semaine prochaine car je n'aurais pas accès au fichier avant (et on m'a déjà lancé sur un autre projet d'envoi de mail automatique à plusieurs personne, un personne par pivotfield, mais c'est une autre histoire).
Peux tu m'expliquer ce qu'il se passe ici ?:
Code:
For i = 1 To .PivotItems.Count
Filtre = CDbl(CDate(.PivotItems(i)))
.PivotItems(Filtre).Visible = False
Next
J'ai du mal à comprendre ou la comparaison avec la plus haute date se fait dans ce code.
Re : Filtrer tableau croisé dynamique sur la date la plus récente (change chaque jour
Bonjour à tous
Tweedi: En général, je pars du principe que cela doit fonctionner sur toutes les versions de 2007 à 2013 pour les TCDs.
Mais comme le filtre de date sur un TCD est très aléatoire, j'ai développé une nouvelle méthode qui devrait fonctionner quelque soit la version d'Excel.
Re : Filtrer tableau croisé dynamique sur la date la plus récente (change chaque jour
Bonjour MJ13, merci beaucoup pour ce nouveau post et ces nouvelles méthodes. je vais marquer ici ce que j'ai compris de ton code, peux tu simplement confirmer que j'ai bien compris ce que ton code fait ? Merci !!
Code:
Cells.EntireRow.AutoFit
Cela revient à faire un ClearAllFilters sur toute la page simplement en remettant les RowHeight en valeur positif grace à l'autofit ?
Code:
For Each cell In Selection
If cell = "(vide)" Or cell = 0 Or cell = 1 Then Rows(cell.Row).RowHeight = 0: GoTo suite
If cell <> Cells(1, 1) Then Rows(cell.Row).RowHeight = 0
suite:
Next
Cela "cache" les lignes mais les lignes sont toujours présentes, donc si je copie le range pour le mettre dans le corps d'un e-mail, les lignes vont réapparaître ? Dans ce cas cette méthode ne vas pas réellement m'aider, à moins que j'essaie de copier le TCD en tant qu'image et que celle le range "visible" ne soit pris dans l'image.
Enfin, comment fais tu pour définir les "Zones" je trouve ca très intéressant.
Merci encore MJ13 j'ai appris des choses sur ce coup là.