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

Macro - Filtrer TCD basé sur le contenu d'une cellule.

Scarface1

XLDnaute Nouveau
Bonjour,

J' ai un fichier excel 2007 qui contient 3 TCD. Ces 3 TCD sont basés sur la meme feuille de données. J'aimerais pouvoir les filtrer automatiquement en insérant la date valeur dans une cellule externe.

J' ai crée la macro ci-dessous mais j'obtiens malheureusement le message d'erreur suivant : "1004 - Application-defined or object-defined error".

Code:
Sub VALUEFILTER()

Dim PT As PivotTable
Set PT = Sheets("Sheet2").PivotTables("PivotTable1")
[U]PT.PivotFields("Value date").CurrentPage = Sheets("Sheet1").Range("H3").Value[/U]Set PT = Nothing
Set PT = Sheets("Sheet3").PivotTables("PivotTable1")
PT.PivotFields("Value date").CurrentPage = Sheets("Sheet1").Range("H3").Value
Set PT = Nothing

End Sub

Je ne comprends pas ou se trouve mon erreur, surtout que si j'applique la meme macro a un autre champ, elle fonctionne parfaitement. Serait-ce un probleme de format de date ?

Merci d'avance pour votre aide.
 

tototiti2008

XLDnaute Barbatruc
Re : Macro - Filtrer TCD basé sur le contenu d'une cellule.

Bonjour Scarface,

Bienvenue sur XLD,

Serait-ce un probleme de format de date ?
Probablement
Enregistre une macro en choisissant une date précise pour filtrer ton TCD
regarde la façon dont il écrit la date
Formate la date de H3 comme voulu avec la fonction Format dans ton code
Chez moi, ça donnerait

Code:
PT.PivotFields("Value date").CurrentPage = Format(Sheets("Sheet1").Range("H3").Value, "DD/MM/YYYY")

Mais ça dépend peut-être de tes paramètres régionaux
Si ce n'est pas ça, reviens-nous
 

Scarface1

XLDnaute Nouveau
Re : Macro - Filtrer TCD basé sur le contenu d'une cellule.

Salut,

Tout d'abord un grand merci pour ton aide, meme si ton code n'a malheureusement pas résolu mon souci !

Par contre, un collègue m'a donné un coup de main et on a trouvé la solution un peu par hasard. En fait on a du ajouter une etape avant de selectionner la date valeur, qui est
Code:
" .PivotFields("Value date").CurrentPage = "(All)"
et ca fonctionne parfaitement.

On a aussi legerement revu le code pour qu'il soit plus comprehensible, voila ce que ca donne pour ceux qui en aurait besoin :

Code:
Dim PT As PivotTable
x = Sheets("Sheets1").Range("K3").Value

SheetArray = Array("Sheets2", " Sheets3", " Sheets4")

For Each SSHeet In SheetArray
    
    Set PT = Sheets(SSHeet).PivotTables("PivotTable1")
    
    With PT
        .PivotCache.Refresh
        .PivotFields("Value date").CurrentPage = "(All)"
        .PivotFields("Value date").CurrentPage = x
    End With

Next

End Sub

Voila encore merci et a+
 

Discussions similaires

Réponses
1
Affichages
2 K
Compte Supprimé 979
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…