TCD : comment "variabiliser" un pivotitem ?

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

je n'arrive pas à utiliser une variable pour définir un choix dans un tableau croisé dynamique

Par une boîte de dialogue, je recueille l'année d'analyse choisie mais je ne sais pas comment "injecter" cette année dans le code
Le but de la manœuvre étant d'afficher dans le TCD l'année sélectionnée (ici simplifié à l'extrème pour me concentrer sur le problème)
Qui peut me dire ce qui cloche dans le code suivant ?
J'obtiens le message "erreur d'exécution 1004 impossible de lire la propriété Pivotitems de la classe PivotFields"

Code:
Sub Q_Année()
 
Dim AnnéeRéponse As Integer
 
AnnéeRéponse = Application.InputBox("Saisissez l'année souhaitée", Type:=1)
 
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Année")
    .PivotItems(AnnéeRéponse).Visible = True
End With
 
End Sub

Merci d'avance
 

Pièces jointes

  • Question_30092014.xlsm
    162.1 KB · Affichages: 31
  • Question_30092014.xlsm
    162.1 KB · Affichages: 45
  • Question_30092014.xlsm
    162.1 KB · Affichages: 45

francedemo

XLDnaute Occasionnel
Re : TCD : comment "variabiliser" un pivotitem ?

bonjour,

pas pu tester mais :
With ActiveSheet.PivotTables("Tableau croisé dynamique3")
.PivotFields("Année")
.PivotItems(AnnéeRéponse).Visible = True
End With
ça donne quoi ?
à+

non,
à tester:
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Année")
.ClearAllFilters
.CurrentPage = AnnéeRéponse
End With
à+
 
Dernière édition:

Sebast

XLDnaute Impliqué
Re : TCD : comment "variabiliser" un pivotitem ?

Bonjour francedemo,

merci pour ta réponse rapide et précise.

pour répondre à ta première question, j'obtiens le message d'erreur "erreur d'exécution 1004 impossible de lire la propriété Pivotitems de la classe PivotFields" en lançant le code précisé (comme précisé dans le message initial).

Ta proposition fonctionne
mais
en fait ce que je cherchais à faire (et que je n'avais pas précisé il est vrai dans le fil initial), c'est à partir de la réponse donnée par l'utilisateur (année par ex 2012), calculer l'année n-1 et afficher sur le même tcd les données pour 2012 (au-dessus) et 2011 (au-dessous) : voir dans la nouvelle pièce jointe
Du coup, j'ai besoin de connaître la "syntaxe" pour m'adresser à l'année

Pour cela, je pensais donc créer par

dim AnnéeRéponseAvant as integer
et AnnéeRéponseAvant =AnnéeRéponse-1

et afficher les 2 années consécutives par (ou en adaptant le code)

Code:
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Année")
    .PivotItems(AnnéeRéponse).Visible = True
   .PivotItems(AnnéeRéponseAvant ).Visible = True

End With

La solution CurrentPage est donc trop restrictive

Quelqu'un a une idée ?
 

Pièces jointes

  • Question_30092014.xlsm
    162.9 KB · Affichages: 40
  • Question_30092014.xlsm
    162.9 KB · Affichages: 40
  • Question_30092014.xlsm
    162.9 KB · Affichages: 43

francedemo

XLDnaute Occasionnel
Re : TCD : comment "variabiliser" un pivotitem ?

je viens de faire un essais avec l'enregistreur
d'après ce que je comprend, il faut travailler à l'envers
à savoir, utiliser ClearAllFilters pour tout afficher et lui dire après avec ...Visible = False quelles sont les item que tu ne veux pas voir
j'imagine que le plus simple serait de créer un tableau avec les différentes entrées, récupérer l'année de l'inputbox comparer les valeurs du tableau à cette entrée et indiquer de boucler sur une variable
j'ai pas trop réflechi à ça mais ça peut être une solution à regarder
à+
ci dessous, avec ce code tu n'as que les années 2012 et 2013 qui s'affichent
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields("Année")
.ClearAllFilters
.PivotItems("2014").Visible = False
'.PivotItems("2013").Visible = False
'.PivotItems("2012").Visible = False
.PivotItems("2011").Visible = False
.PivotItems("2010").Visible = False
.PivotItems("2009").Visible = False
.PivotItems("2008").Visible = False
.PivotItems("2007").Visible = False
.PivotItems("2006").Visible = False
End With
 

Sebast

XLDnaute Impliqué
Re : TCD : comment "variabiliser" un pivotitem ?

Re,

merci pour ton aide.

En fait, ça suit le principe que j'utilise pour les mois (voir dans le fichier joint).
Avec les mois, on est exhaustif avec 12 mais quid des années ? ici certes il n'y en a pas des masses mais c'est un exemple simplifié.

De façon générale, n'y a-t-il pas un moyen de considérer l'année (ou n'importe quel item) comme une variable ?

à +
 

Discussions similaires

Réponses
11
Affichages
1 K

Statistiques des forums

Discussions
314 664
Messages
2 111 672
Membres
111 255
dernier inscrit
pascal.gib