PivotTable + OLAP + Hiérarchie = Casse-tête chinois - VB/VBA/VBS - Programmation
Marsh Posté le 28-12-2010 à 13:10:58
Salut,je suppose que tu as déjà consulté http://silkyroad.developpez.com/excel/tcd/
http://excel.developpez.com/faq/?page=TCD
Marsh Posté le 28-12-2010 à 13:24:24
Malheureusement, le seul truc intéressant dans mon cas actuel dans ces liens, c'est OLAP PivotTable Extensions. Sauf que si c'est un outil externe à déployer chez les utilisateurs, c'est mort : mes utilisateurs sont des traders, et pour des raisons de sécurité, on ne peut pas déployer n'importe quoi (sans compter la difficulté de déploiement sur des plateformes types citrix pour les utilisateurs à l'étranger). D'où l'impossibilité mentionnée plus haut d'utiliser ADODB, qui nécessite ActiveX.
Au point que ce sera plus simple de définir une dimension du cube dédiée à ce que j'ai besoin de faire plutôt que d'envisager l'adoption d'un outil externe, même s'il s'agit d'un simple add-in.
Le reste des questions abordées, malheureusement, parle trop des TCD et pas assez de l'interfaçage avec OLAP pour que cela puisse m'aider. Mon souci ne vient pas tant de l'utilisation du TCD que d'arriver à faire rentrer le MDX que je veux dans un champ en xlPageField.
Sauf si j'ai manqué un truc dans ces liens, bien sûr...
Marsh Posté le 28-12-2010 à 09:30:44
yo
Je n'espère pas vraiment une solution, mais sait-on jamais.
J'ai un cube dans une base OLAP, auquel les utilisateurs accèdent via un TCD sous excel.
Dans ce cube, j'ai une dimension D constituée de trois membres, au même niveau : A, B et C.
Ce que je cherche à faire : coller ma dimension en xlPageField (facile), et en changer la valeur pour forcer un filtrage des données.
La requête MDX correspondante est donc (simplifié) : [D].&[valeur A]&[valeur B]&[valeur C]
Problème : la valeur que je souhaite forcer est entrée par l'utilisateur, et je ne dispose que de A comme valeur. Je dois donc soit demander à excel de ne filtrer que sur A, soit déduire B et C via une requête MDX ad hoc.
Pour la première solution, il me suffirait de forcer le filtrage avec la requête MDX [D].[A].[All].[valeur A]. Sauf que je me prends une erreur 1004 lorsque j'essaie cette solution, quoique je tente (PivotField.CurrentPageName, PivotField.VisibleItemsList, and so on).
J'ai l'impression que excel n'accepte que les requêtes de type [D].&[valeur A]&[valeur B]&[valeur C] et pas autre chose.
Pour la seconde, je n'ai pas trouvé de moyen de requêter ma source de données externe directement en VBA. Pourtant si j'y arrivais, ce serait facile... J'ai tenté de passer par ADODB, mais ActiveX semble interdit et n'est donc pas une option, ce qui ne me facilite pas vraiment la tâche.
Dernier truc : lorsque j'enregistre la macro ou lorsque je trace les requêtes envoyées à mon cube sous SSAS (avec le SQL Profiler), je ne vois pas de requête intermédiaire de la part de excel pour déduire B et C à partir de A. Je me dis donc qu'il récupère toute la hiérarchie et n'affiche que A, avec B et C en mémoire. J'ai regardé un peu PivotCache, mais je ne trouve pas de moyen de récupérer ces données.
Si quelqu'un a une piste, je suis preneur, parce que là je ne vois plus que la solution consistant à créer une dimension dédiée à A tout seul pour arriver à mes fins.
... je hais vraiment ces fichus logiciels qui veulent te simplifier les choses et qui te proposent un satané noeud gordien dès que tu sors un peu des clous
Message édité par Elmoricq le 28-12-2010 à 09:40:01