[XL 2010-VBA] Données sources graphique variables

Résolu/Fermé
SpcCwb - Modifié par SpcCwb le 7/07/2014 à 09:48
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
- 17 juil. 2014 à 18:57
Bonjour CCM,

Je mets au point un outil pour enregistrer les commandes reçues en fonction du lieu de commande. Chaque lieu de commande à droit à son propre onglet et à son tableau de données.

Alors voici mon soucis. J'ai un onglet principal nommé "config", sur cet onglet on retrouve un graphe et un tableau servant de données sources au graph. J'ai également X autres onglets qui me servent à remplir le tableau permettant de tracer le graph de l'onglet "config".

Ce que j'aimerai, c'est que lorsque je change de lieu de commande pour remplir mon graph, celui change le range des sources de données. Je vous mets 2 screen pour que cela soit plus parlant.


J'ai lu quelque chose avec un Activechart.Setsource Data = ...

J'ai essayé de bidouiller quelque chose avec des xlDown et xlToRight, mais rien à faire, je n'ai pas la formule :/

Merci pour votre aide!

2 réponses

skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
55
Modifié par skk201 le 7/07/2014 à 14:35
Sans VBA :

Tu peux utiliser la formule décaler pour définir la plage des données.

Dans ton exemple-image :

=DECALER(D23;0;0;NBVAL($D:$D)-1;NBVAL($23:$23)-1)

*Pensez mettre vos messages en [Résolu] et cliquer sur le + des conseil qui vous ont été utils"
1
SpcCwb
Messages postés
65
Date d'inscription
mardi 7 mai 2013
Statut
Membre
Dernière intervention
26 novembre 2020
1
7 juil. 2014 à 14:52
Je ne connais pas bien cette fonction (en fait je ne la connais que de nom). Dans mon exemple, on perd une colonne entre l'image 1 et la 2, sauf que dans certains cas, c'est 3,4 ou 5 colonnes qui vont être ajoutées ou supprimées. La fonction DECALER peut gérer ces cas aussi?

J'ai essayé la fonction que tu m'as donnée dans Plage de données du graphique: Fonction non valide...

Merci!
0
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
55
Modifié par skk201 le 7/07/2014 à 14:56
Oui bien sûr.

Et c'est parce que je me suis trompé il faut plutot utilsié la formule =SERIE() avec des plages nomées que tu définis avec la fonction =DECALER()

Petites explication : http://www.excelabo.net/excel/series_nommees_graphique
0
SpcCwb
Messages postés
65
Date d'inscription
mardi 7 mai 2013
Statut
Membre
Dernière intervention
26 novembre 2020
1
7 juil. 2014 à 15:24
Bon, j'ai réussi à créer un axe des abscisses variable grâce à ta technique.
Le hic, c'est que lorsque l'on choisi la source des données du graphique on a le choix :
- soit de sélectionner une zone entière (titre du graphique, axe X, axe Y numéro 1,2,3...) et de s'en remettre à la grâce de Dieu,
- soit on défini la source de données pour l'axe des abscisses, et ensuite on définit la source de données de chaque série Y.

J'ai essayé la première solution, ce fût un échec cuisant. La deuxième solution fonctionne avec tes formules, pour peux que je paramètre à l'avance toutes les séries Y qui pourraient être utilisées, ce qui n'est pas dans mon intention.

Je m'y prends peut être mal (sûrement même ^^), une autre idée peut être?
0
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
55
7 juil. 2014 à 15:53
C'est étrange si tu arrives à faire ça avec l'axe X ça devrait être exactement pareil.

Tu as bien suivis les étapes décrites dans le lien ?
0
SpcCwb
Messages postés
65
Date d'inscription
mardi 7 mai 2013
Statut
Membre
Dernière intervention
26 novembre 2020
1
7 juil. 2014 à 16:26
Oui oui, je suis point par point et j'adapte à mon cas.
J'ai réussi à créer mesX, mesY, et mestitresY (pour les étiquettes des séries), mais pas moyen de les utiliser dans le graphique. Je m'attendais à pouvoir définir mes séries Y comme j'ai fait avec les X mais Excel ne veut pas sous prétexte qu'il ne peut y avoir plusieurs colonnes ET lignes comme source d'UNE série.
0
SpcCwb
Messages postés
65
Date d'inscription
mardi 7 mai 2013
Statut
Membre
Dernière intervention
26 novembre 2020
1
8 juil. 2014 à 12:44
Bon, j'ai réussi à faire ce que je voulais, voici le code pour ceux qui seraient amener à avoir les mêmes difficultés.

La manip ici ne passe pas par un changement de plage de données classique.
Je supprime mon graph, j'en recréé un que je nomme comme le précédent puis je me positionne sur la première cellule de mon tableau de données (D23), et je sélectionne l'ensemble de mes données avec Ctrl+Shift vers le bas puis vers la droite. Un petit copié, un petit collé après avoir sélectionné le graphique et le tour est joué.

Sub graph()
ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.Parent.Delete 'suppression du graph
Range("E3").Select
ActiveSheet.Shapes.AddChart.Select 'insertion nouveau graph
ActiveChart.ChartType = xlColumnStacked 'type d'histogramme
ActiveChart.Axes(xlCategory).CategoryType = xlCategoryScale 'étiquettes de l'axe des abscisses
With ActiveChart
.HasTitle = True
.Parent.Name = "Graphique 2" 'changer nom du graphique pour pouvoir réutiliser la macro
End With
ActiveSheet.ChartObjects("Graphique 2").Activate
Range("D23").Select 'sélection de ma plage de données
Range(Selection, Selection.End(xlDown)).Select 'idem
Range(Selection, Selection.End(xlToRight)).Select 'idem
Selection.Copy
ActiveSheet.ChartObjects("Graphique 2").Activate
ActiveChart.Paste 'insérer les données copiées au graphique
Application.CutCopyMode = False
End Sub
0
skk201
Messages postés
938
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
16 octobre 2016
55
8 juil. 2014 à 13:16
Super :) C'est comme ça qu'on progresse :)
0
SpcCwb
Messages postés
65
Date d'inscription
mardi 7 mai 2013
Statut
Membre
Dernière intervention
26 novembre 2020
1
8 juil. 2014 à 14:01
C'est quand même bien pratique de pouvoir enregistrer les macros et de pouvoir les retravailler en direct ; )

Merci pour l'aide apportée skk201!
0