XL 2013 Créer un graphique sur 2 TCD

JJLC

XLDnaute Nouveau
Bonjour,
Je suis nouvelle sur le forum et j'ai besoin de vos lumières. Dans une feuille Excel je récupère 2 tcd directement d'une base de données Access. Je souhaite un seul graphique qui somme des valeurs par an et par mois et un autre qui donne le max, le min et la moyenne du précédent uniquement sur le mois et regrouper le tout sur un seul graphique.
Est-il possible de faire cela ?
Merci
JJ
1572133805124.png
 

JJLC

XLDnaute Nouveau
Sachant que les années peuvent changer. Ca va de 2010 à 2019. Et d'ailleurs est-il possible de mettre tout ça sur le même TCD ce qui règlerait le problème du graphique. Avec un TCD c'est illisible et faux car les max, min et moyenne se font à l'année alors que je les veux sur toutes les années.
Merci
 

chris

XLDnaute Barbatruc
Bonjour

Tu peux
  • soit préparer les données en amont dans Access via une requête
  • soit installer l'add on PowerQuery (intégré à Excel à partir de 2016) et de même y faire un requête
  • soit créer un tableau intermédiaire à partir de LIREDONNEESTABCROISDYNAMIQUE
 

JJLC

XLDnaute Nouveau
Bonjour Chris et merci d'avoir pris le temps de me répondre,
Le problème est qu'on me demande un graphique qui s'ajuste en fonction des années choisies. Les 2 TCD sont liés par un segment qui permet la mise à jour. Le graphique a été fait manuellement et ne se met pas à jour.
Un tableau intermédiaire, ok mais comment intégrer les nouvelles années dans le graphique ? Je ne sais pas faire. Le graphique refuse ma fonction décaler. Je ne sais pas.
Merci encore
JJ
 

JJLC

XLDnaute Nouveau
Merci d'avoir répondu.
La requête Access ou query ne m'avancera pas. L'intérêt est d'avoir le choix des années, des mois et des noms. Ici les segments font l'affaire. min, le max et la moyenne dans le même tableau et là ce n'est plus possible étant donné que ces derniers s'appliquent à l'année et non pas aux années choisies. un Tableau à base de LIREDONNEESTABCROISDYNAMIQUE ne s'étendra pas avec les segments puisque à un moment je devrais bien aller chercher les infos de l'autre TCD et comment savoir combien de colonnes puisque lié aux segments.
Merci d'avoir répondu. Si je trouve quelque chose je ne manquerai pas de le partager.
 

JJLC

XLDnaute Nouveau
C'est bizarre comme réponse. Si j'avais des certitudes je ne serai pas là à demander de l'aide.
Ceci dit j'ai trouvé. Je créé un tableau intermédiaire en mettant en 1er les max, min et moyenne et les autres données à la suite. Ainsi je n'ai pas à me soucier de l'extension. un simple si me permet de remplir les lignes non vides. Une fonction decaler pour le graphique et une petite macro trouvée sur Experts en outils Excel toute simple que même moi j'arrive à comprendre et à adapter et le tour est joué. mon graphique se met à jour. Génial !
Merci d'avoir pris la peine de lire mes messages et bonne continuation au forum.
 

JJLC

XLDnaute Nouveau
La voilà :
Sub rafraichir_graph()
'on active notre graphique (il s’agit du premier de notre classeur, son nom est “Chart 1”, visible en haut à gauche de notre feuille)

ActiveSheet.ChartObjects("graphique 4").Activate

'on définit comme source de données du graphique notre plage dynamique « source_données_graphs » préalablement programmée:

ActiveChart.SetSourceData Source:=Range("graph2")
ActiveChart.SetSourceData Source:=Range("graph1")
'on indique la fin de la macro
End Sub
C'est déjà pas mal pour moi même si je ne suis pas au bout car à la première actualisation il a remplacé le nom des séries par série1 série2...
Donc je cherche encore.
 

Staple1600

XLDnaute Barbatruc
Re

Merci pour le partage ;)
Et pour info, c'est plus joli, si tu utilises les balises BBCODE
VB:
Sub rafraichir_graph()
'on active notre graphique (il s’agit du premier de notre classeur, son nom est “Chart 1”, visible en haut à gauche de notre feuille)

ActiveSheet.ChartObjects("graphique 4").Activate

'on définit comme source de données du graphique notre plage dynamique « source_données_graphs » préalablement programmée:

ActiveChart.SetSourceData Source:=Range("graph2")
ActiveChart.SetSourceData Source:=Range("graph1")
'on indique la fin de la macro
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

En théorie, avec cette syntaxe un chouia simplifiée, le résultat est-il le même chez toi?
VB:
Sub rafraichir_graph()
Dim Graph As Chart
'on active notre graphique (il s’agit du premier de notre classeur, son nom est “Chart 1”, visible en haut à gauche de notre feuille)
Set Graph = ActiveSheet.ChartObjects("Graphique 4").Chart
'on définit comme source de données du graphique notre plage dynamique « source_données_graphs » préalablement programmée:
Graph.SetSourceData Source:=[graph2]: Graph.SetSourceData Source:=[graph1]
'on indique la fin de la macro
End Sub
 

JJLC

XLDnaute Nouveau
Bonjour Staple 1600,
J'ignorais pour le BBCODE. Je ferai attention la prochaine fois.
J'ai testé votre code et à priori ça fait pareil. Croyez-vous que l'un est mieux que l'autre ?
Ceci dit je ne comprends rien et seule je serai incapable de faire quoi que ce soit en VBA.
D'ailleurs les noms des séries de mon graph ne se mettent pas à jour. A l'actualisation, il affiche série 1, série2...
Si vous avez une idée je suis preneuse.
Merci
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, JJLC

C'est mieux dans le sens, où partout sur les forums dédiés à Excel, tu liras le conseil suivant
"Eviter tant que faire se peut les Select et autre Activate"
Mais si tu comprends mieux ta syntaxe originale, conserve celle-ci ;)

Sinon, tu es sure que la piste donnée par chris ne vaut pas la peine d'être examinée plus en profondeur?
 

Discussions similaires

Réponses
3
Affichages
271

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 192
Membres
102 809
dernier inscrit
Sandrine83