Sélectionner champs page dans un TCD via une cellule

supervico

XLDnaute Nouveau
Bonjour à tous,

Malheureusement sans succès, j'ai déjà fait part du problème suivant sur Developpez.net ([XL-2010] Sélectionner champs colonne suivant dans un TCD - Forum du club des développeurs et IT Pro)

Mon objectif est de sélectionner un critère, défini à partir d'une cellule fixe de mon classeur, dans un des champs de page de mon TCD, alimenté via une base de données OLAP.

J'ai imaginé cette option car je n'arrive pas (non plus!) à désélectionner l'item coché dans la liste de données du champs en page de mon TCD et de sélectionner l'item suivant automatiquement. (Mais si vous avez une idée pour faire ça je suis preneur..)

l'intitulé de chaque item en page est formé comme suit : AAAA MM. (Par exemple 2012 11).

J'ai d'abord défini dans une cellule de mon classeur la formule suivante:
=TEXTE(ANNEE(D3)&" "&SI(NBCAR(MOIS(D3))=1;"0"&MOIS(D3);MOIS(D3));)

Cela me permet de voir apparaître la date que je veux sélectionner dans mon TCD, et ce au format adapté (en tout cas c'est ce que je pensais...)

Attention, Je suis débutant en VBA...
Voici les codes que j'ai testé:

Sheets("CR Passage").PivotTables("Tableau croisé dynamique2").PivotFields( _
"[Dim Date Prd].[Date].[Année]").CurrentPage = ActiveSheet.Range("E3").Value

J'ai alors le message d'erreur "Erreur d'exécution 1004: impossible de définir la propriété CurrentPage de la classe PivotField"...


Auriez-vous une idée à me souffler s'il vous plait?

Merci d'avance pour votre aide!
 

chris

XLDnaute Barbatruc
Re : Sélectionner champs page dans un TCD via une cellule

Bonjour

Déjà tu dois sélectionner une valeur avant de désactiver l'autre il me semble car on ne doit pas pouvoir n'avoir aucune valeur active.

Les dates ne sont pas en réalité telles qu'elles apparaissent dans le TCD.

Puisque tu as 2010 pourquoi ne te sers-tu pas des segments au lieu de t'embarquer sur du VBA surtout que la sélection de date dans les TCD est buguée en version non US.
 

supervico

XLDnaute Nouveau
Re : Sélectionner champs page dans un TCD via une cellule

Hello Chris,

Et merci pour ta réponse!

En fait, je ne pense pas que l'utilisation des segments permettra de répondre à mes attentes... Cela faciliterait un peu l'actualisation, mais pas suffisamment à mon goût...

Mon fichier est un reporting mensuel, que je dois pour l'instant actualiser manuellement. Pour gagner du temps, je souhaitais enregistrer cette "mise à jour" afin de l'automatiser et de gagner du temps tout en évitant les risques d'erreur.

J'ai déjà codé une partie de l'automation, qui vise à incrémenter les formules de mes onglets de calculs (celles-ci sont calculées à partir du dit TCD).
La partie manquante de ma macro est l'actualisation de mon TCD... D'où mon problème...

En tout cas, merci pour ton aide, je vais voir pour la sélection/déselection!
 

supervico

XLDnaute Nouveau
Re : Sélectionner champs page dans un TCD via une cellule

J'ai bien tenu compte du point "Sélection/déselection". Mon champs de page date étant toujours renseigné, j'ai donc penser à "déselectionner tout" puis sélectionner la valeur qui m'intéresse.

Après essai du code ci-dessous, j'obtiens une "Erreur 1004: impossible de définir la propriété CurrentPage de la classe Pivottable".

' Macro3 Macro
'
Dim Période As String

Période = ActiveSheet.Range("E3").Value

ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"[Dim Date Prd].[Date].[Année]").ClearAllFilters
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotFields( _
"[Dim Date Prd].[Date].[Année]").CurrentPage = _
"[Dim Date Prd].[Date].[Mois].&[Période]"
End Sub

VBA a pas l'air de trop apprécier la manière avec laquelle j'appelle ma période...

Comment pourrais-je faire référence à ma cellule ??

Merci pour votre aide!
 

chris

XLDnaute Barbatruc
Re : Sélectionner champs page dans un TCD via une cellule

Bonjour

Comme je le disais dans mon précédent post, les dates ne sont pas stockées sous la forme où elles apparaissent.

Utilise le débuggeur pour vérifier la forme de la date.

Par ailleurs il y un bug sur les dates dans les TCD et il peut être nécessaire de contourner le bug dans le code.

Les dates sont gérées différemment selon la source : une OLAP n'est pas gérée comme une source Excel.
 

supervico

XLDnaute Nouveau
Re : Sélectionner champs page dans un TCD via une cellule

Bonjour Chris,

J'ai bien tenu compte de tes remarques concernant le format des dates; en utilisant l'enregistreur de macro, j'ai vérifié en pointant directement sur une date quelconque. Sous VBA, il ressort: "[Dim Date Prd].[Date].[Mois].&[2013 03]".

J'en ai déduit (peut-être un peu vite) que le format que je donnais à ma date en E3 (AAAA MM) était bon...

En effet, la source de données de mon TCD est une source OLAP... Je suppose donc que je me suis totalement planté ...?
Penses-tu que je dois modifier mon code ou repartir de 0?
Comment puis-je faire appel à une donnée extraite d'une source OLAP?

Merci encore pour ton aide!

Bonne journée!
 

chris

XLDnaute Barbatruc
Re : Sélectionner champs page dans un TCD via une cellule

Re

Difficile de te donner une réponse d'autant MSQUERY qui permettait de créer de petits cubes OLAP ne le fait plus.

Poste un bout de fichier : pas sûr que sans le cube en ligne on puisse résoudre mais on peut tenter...
 

supervico

XLDnaute Nouveau
Re : Sélectionner champs page dans un TCD via une cellule

Hello Chris,

Effectivement je doute que ce soit exploitable, malgré tout, voici un fichier qui pourrait permettre d'y voir plus clair...
Mais je commence à avoir des doutes au niveau de la faisabilité...

Merci pour ton aide en tout cas!
 

Pièces jointes

  • Exemple.xlsm
    61.4 KB · Affichages: 55
  • Exemple.xlsm
    61.4 KB · Affichages: 64
  • Exemple.xlsm
    61.4 KB · Affichages: 53

Discussions similaires

Statistiques des forums

Discussions
312 202
Messages
2 086 177
Membres
103 152
dernier inscrit
Karibu