Afficher la dernière étiquette de plusieurs courbes

yichaam

XLDnaute Nouveau
Bonjour à tout le forum,

Cela fait un petit bout de temps que je ne suis pas venu sur le forum (il faut dire que l'outil que j'ai créé en partie grace à vous marche toujours aussi bien après tant d'année :). C'est avec plaisir que je vois que le site tourne toujours à plein régime!!

Je vous sollicite à nouveau pour un petit souci de macro.

j'ai un classeur composé de plusieurs onglets. dans ces onglets, il y a 1 ou 2 graphs en ligne à chaque avec pour source un TCD pour chaque graph.

J'aimerais afficher la dernière valeur de chaque courbe pour l'ensemble des graphs du classeur.

J'ai déja trouvé une partie de la solution dans le forum, malheureusement je n'arrive pas à l'adapter à l'ensemble du classeur

Code trouvé:

Sub dernvaleur()

With Worksheets("feuill1").ChartObjects(1).Chart.SeriesCollection(1)
.ApplyDataLabels AutoText:=True, _
LegendKey:=False, _
ShowSeriesName:=False, _
ShowCategoryName:=False, _
ShowValue:=False, _
ShowPercentage:=False, _
ShowBubbleSize:=False
.Points(.Points.Count).ApplyDataLabels ShowValue:=True
End With
End Sub

Cela fonctionne très bien mais... pour la première courbe seulement et pour un seul graphique d'une feuille déterminée, or, le but est d'appliquer cette règle à tous les graphs de tout le classeur. J'ai essayé en remplaçant par workbook mais ça ne marche pas. Idem pour "Chart.SeriesCollection(1)" on peut mettre (2) ou (3) mais ça ne mettra la valeur que sur la courbe num 2 ou num 3, pas sur l'ensemble des courbes...



Pour parer à cela, j'ai dupliquer la macro

EX:

Sub dernvaleur()

With Worksheets("feuil1").ChartObjects(1).Chart.SeriesCollection(1)
.ApplyDataLabels AutoText:=True, _
LegendKey:=False, _
ShowSeriesName:=False, _
ShowCategoryName:=False, _
ShowValue:=False, _
ShowPercentage:=False, _
ShowBubbleSize:=False
.Points(.Points.Count).ApplyDataLabels ShowValue:=True
End With
With Worksheets("feuil1").ChartObjects(1).Chart.SeriesCollection(2)
.ApplyDataLabels AutoText:=True, _
LegendKey:=False, _
ShowSeriesName:=False, _
ShowCategoryName:=False, _
ShowValue:=False, _
ShowPercentage:=False, _
ShowBubbleSize:=False
.Points(.Points.Count).ApplyDataLabels ShowValue:=True
End With


cette bidouille fonctionne et les deux étiquettes s'affichent à la fin de chaque courbe mais elle a une grosse limite... le nombre de courbes diffère de graph en graph... si on utilise cette macro pour un graph à une seule courbe, la macro plante

J'ai mis en pj un fichier illustrant mes propos et la macro utilisé mais incomplète

Merci d'avance pour votre aide :)

Yichaam
 

Pièces jointes

  • test macro.xlsm
    30.6 KB · Affichages: 32
  • test macro.xlsm
    30.6 KB · Affichages: 33
  • test macro.xlsm
    30.6 KB · Affichages: 41

combory

XLDnaute Junior
Re : Afficher la dernière étiquette de plusieurs courbes

Bonjour Yichaam,

Peut-être comme ça :

Sub derniereetiquette()
j = Worksheets("paris").ChartObjects(1).Chart.SeriesCollection.Count
For i = 1 To j
With Worksheets("paris").ChartObjects(1).Chart.SeriesCollection(i)
.ApplyDataLabels AutoText:=True, _
LegendKey:=False, _
ShowSeriesName:=False, _
ShowCategoryName:=False, _
ShowValue:=False, _
ShowPercentage:=False, _
ShowBubbleSize:=False
.Points(.Points.Count).ApplyDataLabels ShowValue:=True
End With
Next i
End Sub
 

yichaam

XLDnaute Nouveau
Re : Afficher la dernière étiquette de plusieurs courbes

Bonjour Combory et merci pour ta réponse :D

ça marche super pour le graph de la feuille "paris" mais les étiquettes ne s'affichent pas pour le graph de l'onglet "Berlin", la cerise sur le gateau serait de pouvoir appliquer cette macro non pas à une seule feuille et à un seul graphique mais à tous les graphiques de toutes les feuilles (sachant qu'il peut avoir plusieurs graphs dans une même feuille)

Merci beaucoup!
 

combory

XLDnaute Junior
Re : Afficher la dernière étiquette de plusieurs courbes

Oups !!!
J'avais lu en travers...
essai ça :
Sub derniereetiquette()
'on va de la feuille 2 à la dernière pour ne pas prendre la feuille BDD
fe = Worksheets.Count
For f = 2 To fe
'on compte le nombre de graphique sur la feuille
g = Worksheets(f).ChartObjects.Count
For gr = 1 To g
'On compte le nombre de données du graphique
j = Worksheets(f).ChartObjects(gr).Chart.SeriesCollection.Count
'On affiche chaque dernière données sur le graphique
For i = 1 To j
With Worksheets(f).ChartObjects(gr).Chart.SeriesCollection(i)
.ApplyDataLabels AutoText:=True, _
LegendKey:=False, _
ShowSeriesName:=False, _
ShowCategoryName:=False, _
ShowValue:=False, _
ShowPercentage:=False, _
ShowBubbleSize:=False
.Points(.Points.Count).ApplyDataLabels ShowValue:=True
End With
Next i
Next gr
Next f
End Sub
 

yichaam

XLDnaute Nouveau
Re : Afficher la dernière étiquette de plusieurs courbes

C'est top ça marche!!!

il y a juste un problème que je n'avais pas prévu, en fait, la macro permet bien d'afficher la dernière étiquette de chaque courbe à condition que chaque courbe soit identique. Dans mon exemple Excel, si jamais une courbe du même graphique s'arretait en semaine 2 et une autre en semaine 4, la macro n'affichera que l'étiquette de la courbe la plus avancée et pas celle qui s'arrête en semaine 2 (qui est pourtant bien sa dernière valeur)
 

combory

XLDnaute Junior
Re : Afficher la dernière étiquette de plusieurs courbes

Bonjour Yichaam,

en effet, ça coince. Je crois qu'il va falloir revoir toute la macro ou mettre des zéros dans le tableau.
Le problème c'est qu'on prend les valeurs du graphique.
Je ne vois pas comment faire.
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 319
Membres
103 177
dernier inscrit
grizly