XL 2010 Ajout colonne de TCD dynamique

Pralin

XLDnaute Nouveau
Bonjour,

J'ai un tableau croisé dynamique récupéré par requête SQL avec un client ODBC. De ce tableau je créé un graphique croisé dynamique. Je cherche a ajouté 2 seuils (avec des valeurs qui n'ont pas de lien avec les valeurs du tableau) dynamique.

Après de nombreux recherches, j'arrive donc à rajouter 2 colonnes (min et max) avec des champs calculés. Je sais aussi qu'il n'est pas possible de renseigner une cellule dans le champ calculé.

Comment pourrais-je ajouter deux seuils à mon graphique qui prennent les valeurs d'une cellule ?

Cordialement.
 

chris

XLDnaute Barbatruc
Bonjour

Par requête SQL on peut récupérer un tableau de données, pas un TCD...

Il est quasi impossible d'ajouter des données à un TCD pour en tirer des séries de GCD.

Soit il faut ajouter des colonnes à la source, soit créer un tableau annexe exploitant le TCD avec
  • des formules à base de LIREDONNEESTABCROISDYNAMIQUE
  • complété par les seuils
Il faudrait un exemple concret pour des pistes plus précises
 

chris

XLDnaute Barbatruc
RE

Je parlais de la source du TCD au cas où tu affiches le résultat de la requête dans un onglet, tu peux juxtaposer une colonne.

Sinon, si tu attaques directement la requête par TCD, tu peux aussi utiliser PowerQuery pour compléter avec les données de seuil

Tout dépend le graphique envisagé...
 

Pralin

XLDnaute Nouveau
Re-bonjour,

Merci pour ton exemple, c'est bien ce que je souhaite et je te remercie pour ton aide.

Dernier petit détail, peux-tu m'expliquer tes formules ?

En commentaire, ce que j'ai compris :

=SI(NBVAL('M5 Base 2 TCD'!A:A)>LIGNE();'M5 Base 2 TCD'!A3;"") -- Si le nombre de cellule vide est supérieur au numéro de ligne, alors -- on prend la valeur de la cellule A3 de la feuille M5Base2TCD, sinon -- rien.
Je ne comprend pas l'utilité de cette fonction. Pourquoi ne pas prendre directement la colonne, sachant qu'il est impossible qu'une des cellules de cette colonne soit vide ?

=SI(A2<>"";
LIREDONNEESTABCROISDYNAMIQUE("Valeur";'M5 Base 2 TCD'!$A$1;"Etiquette";"Cote_ISO";"Time";ENT(A2)+A2-ENT(A2));
NA())

-- Si la cellule A2 n'est pas vide alors
-- ??? Aucune idée de ce que fait cette fonction. En cherchant j'ai compris qu'elle prenait la valeur d'une cellule de TCD mais comment ? Et pourquoi ENT(A2)+A2-ENT(A2) et pas A2 directement ?
-- sinon rien

Merci pour ton exemple, je vais compléter mon excel en attendant ta réponse.

Cordialement.
 

chris

XLDnaute Barbatruc
RE

On ne sait pas combien de lignes contient le TCD donc on prévoit de la marge. Si le nombre est immuable, tu peux simplifier.

Si à la souris tu tapes = et cliques sur la 1ère valeur du TCD, tu verras qu'Excel propose une formule LIREDONNEESTABCROISDYNAMIQUE mais dont les argument sont figés avec une date en dur et une heure en dur.

Pour pouvoir recopier la formule sur n lignes il faut remplacer ces valeurs en dur par des valeurs variables basées sur ce qui est affiché en colonne A

Or l'heure affichée est en réalité une date (partie entière du contenu) et une heure (le reste)
 
Dernière édition:

Pralin

XLDnaute Nouveau
Bonjour,

Je rencontre un dernier soucis avec mon excel. Après avoir effectuer la redirection de mes tableaux, il m'en reste plus qu'une. C'est un TCD avec 3 colonnes (Celle de MoyDiamBille et Constante). Je me suis familiarisé avec la formule, mais apparemment pas assez pour qu'elle fonctionne sur ce tableau-ci. Cela me renvoi #REF.

De plus, je cherche a automatiser cela. C-a-d qu'à l'actualisation des données, je souhaiterais que mon tableau redirigé prenne la taille du TCD. Pour rappel, le TCD s'actualise et prend la taille du nombre d'informations de ma base de donnée (le nombre d'enregistrement dans ma DB est variable, je peut en avoir 2000 un jour et 2500 ou 1900 un autre jour).

Des pistes ?

Cordialement.
 
Dernière édition:

chris

XLDnaute Barbatruc
Re

Pour le point 2 :
  • soit prévoir de la marge comme j'avais fait avec des formules sur une hauteur suffisante mais l'axe des graphiques dépasse...
  • soit ajouter du vba pour étendre les formules ou en supprimer selon la taille des TCD.
    Il faudrait pout te donner un code :
    • le nom de l'onglet où se trouve les tableaux annexes,
    • les adresses de chaque plage et le nom du TCD correspondant (je te conseille de les renommer avec des noms moins insignifiants...)
Pour le 1 voir ci-joint. Je ne sais pas ou sont les bornes...
J'ai aussi légèrement modifié les formules du 1er : en fait je devais être mal réveillé hier car on peut effectivement de référer à l'heure en A sans décomposer.

J'ai aussi limité les formules mini et maxi
 

Pièces jointes

  • PP2.xlsx
    1.1 MB · Affichages: 10
Dernière édition:

Pralin

XLDnaute Nouveau
Bonjour,

J'ai pourtant la même formule que la tienne et après un copier/coller cela fonctionne. Aussi étrange soit-il... Je te remercie pour ton aide.

Au niveau du code VBA je vais essayer de tâtonner un peu avant de demander une solution toute faite, ou des pistes.

Merci, je reviens vers toi dès que j'aurais un soucis ou pour te prévenir de la finalité.

Cordialement.
 

Pralin

XLDnaute Nouveau
Bonjour,

Je n'arrive à rien. J'ai cherché différentes solutions notamment créer une macro avec l'enregistreur mais le code générer est une usine à gaz. Même le passage du tableau 2 en mode tableau normalisé ne fonctionne pas dans mon cas.

Si tu aurais un début à me proposer.

Je te met en PJ l'excel que j'ai actuellement.

Merci d'avance.
 

Pièces jointes

  • PP2.xlsx
    1.6 MB · Affichages: 4

chris

XLDnaute Barbatruc
Bonjour

J'ai remis les formules à jour : il y avait des erreurs sur le test de 2ème colonne des tableaux qui testait la feuille des TCD et non la cellule à gauche.
J'ai mis les tableaux annexes sus forme de tableaux structurés dont le nom est similaire aux TCD (précédés de T_)

A l'activation de la feuille Graph M5 (voir le module de cette feuille) les tableaux se redimensionnent.
 

Pièces jointes

  • PP2-2.xlsm
    1.7 MB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 359
Membres
103 528
dernier inscrit
hplus