Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Afficher étiquettes et valeurs sur un graphe en secteurs

8 réponses
Avatar
Jean-Baptiste
Bonjour,

Je cherche à faire afficher sur les étiquettes d'un diagramme en
secteurs à la fois les étiquettes et les valeurs. Exactement comme le
fait l'option Excel "Etiquette et Pourcentage" mais avec les valeurs à
la place des pourcentages.
Je pensais avoir trouvé une solution en ajoutant des zones de texte
reprenant les valeurs par une formule mais lorsque je change mes données
le positionnement des étiquettes ne correspond plus avec celui des
secteurs mis à jour.
Je suppose qu'il doit exister une solution par VBA mais je n'en suis
qu'au stade du tatonnement sur VBA et je ne l'ai jamais utilisé pour
paramétrer des graphiques.

Merci beaucoup de votre aide.

8 réponses

Avatar
JB
Bonjour,

Pour un graphe 'secteurs', il y a dans 'Graphique/Options du
graphique' 'catégorie, valeur et %'.

Pour des étiquettes qui n'appartiennent pas aux données du graphe:

http://boisgontierjacques.free.fr/fichiers/graphe/GrapheCommentaire.xls

JB


On 2 juin, 22:52, Jean-Baptiste wrote:
Bonjour,

Je cherche à faire afficher sur les étiquettes d'un diagramme en
secteurs à la fois les étiquettes et les valeurs. Exactement comme le
fait l'option Excel "Etiquette et Pourcentage" mais avec les valeurs à
la place des pourcentages.
Je pensais avoir trouvé une solution en ajoutant des zones de texte
reprenant les valeurs par une formule mais lorsque je change mes données
le positionnement des étiquettes ne correspond plus avec celui des
secteurs mis à jour.
Je suppose qu'il doit exister une solution par VBA mais je n'en suis
qu'au stade du tatonnement sur VBA et je ne l'ai jamais utilisé pour
paramétrer des graphiques.

Merci beaucoup de votre aide.


Avatar
Francois L
Bonjour,

Je cherche à faire afficher sur les étiquettes d'un diagramme en
secteurs à la fois les étiquettes et les valeurs. Exactement comme le
fait l'option Excel "Etiquette et Pourcentage" mais avec les valeurs à
la place des pourcentages.
Je pensais avoir trouvé une solution en ajoutant des zones de texte
reprenant les valeurs par une formule mais lorsque je change mes données
le positionnement des étiquettes ne correspond plus avec celui des
secteurs mis à jour.
Je suppose qu'il doit exister une solution par VBA mais je n'en suis
qu'au stade du tatonnement sur VBA et je ne l'ai jamais utilisé pour
paramétrer des graphiques.


Bonjour,

Un exemple simple qui suppose que les noms soient dans la colonne A, à
partir de A1 et les valeurs dans la colonne B, à partir de B1 et que le
graphique soit sur la même feuille que les données sources. Sinon, il
faut adapter la ligne :
.DataLabel.Text = Range("A" & i).Value & " : " & Range("B" & i).Value

Sélectionner le graphique et exécuter la macro.

Attention, si les données sources changent, il faut re-exécuter la macro
pour que les étiquettes se mettent à jour.
'-------------------------------------------------------------
Sub etiqu()
Dim i As Integer
With ActiveChart 'Le graphique doit être sélectionné
For i = 1 To .SeriesCollection(1).Points.Count
With .SeriesCollection(1).Points(i)
.HasDataLabel = True
.DataLabel.Text = Range("A" & i).Value & " : " & Range("B" & i).Value
End With
Next
End With
End Sub
'---------------------------------------------------------------

--
François L

Avatar
Francois L
Bonjour,

Pour un graphe 'secteurs', il y a dans 'Graphique/Options du
graphique' 'catégorie, valeur et %'.



Bonjour JB (et les autres levés tôt),

Pas de ça dans mon XL2000 !

--
François L

Avatar
Jean-Baptiste
Bonjour,

Pour un graphe 'secteurs', il y a dans 'Graphique/Options du
graphique' 'catégorie, valeur et %'.



Bonjour JB (et les autres levés tôt),

Pas de ça dans mon XL2000 !



Bonjour JB et François L (et tous les autres bien sûr),

JB, je n'ai effectivement pas cette option dans mon XL 2004 (Mac). Tu as
quelle version ?

Je teste la solution de François dès maintenant,

Merci beaucoup pour votre aide et la rapidité de votre réponse.


Jean-Baptiste


Avatar
JB
Bonjour,

Excel 2002 Windows XP

JB
On 3 juin, 10:42, Jean-Baptiste wrote:

Bonjour,

Pour un graphe 'secteurs', il y a dans 'Graphique/Options du
graphique' 'catégorie, valeur et %'.


Bonjour JB (et les autres levés tôt),

Pas de ça dans mon XL2000 !


Bonjour JB et François L (et tous les autres bien sûr),

JB, je n'ai effectivement pas cette option dans mon XL 2004 (Mac). Tu as
quelle version ?

Je teste la solution de François dès maintenant,

Merci beaucoup pour votre aide et la rapidité de votre réponse.

Jean-Baptiste




Avatar
Jean-Baptiste
Bonjour,

Pour un graphe 'secteurs', il y a dans 'Graphique/Options du
graphique' 'catégorie, valeur et %'.

Pour des étiquettes qui n'appartiennent pas aux données du graphe:

http://boisgontierjacques.free.fr/fichiers/graphe/GrapheCommentaire.xls

JB


On 2 juin, 22:52, Jean-Baptiste wrote:
Bonjour,

Je cherche à faire afficher sur les étiquettes d'un diagramme en
secteurs à la fois les étiquettes et les valeurs. Exactement comme le
fait l'option Excel "Etiquette et Pourcentage" mais avec les valeurs à
la place des pourcentages.
Je pensais avoir trouvé une solution en ajoutant des zones de texte
reprenant les valeurs par une formule mais lorsque je change mes données
le positionnement des étiquettes ne correspond plus avec celui des
secteurs mis à jour.
Je suppose qu'il doit exister une solution par VBA mais je n'en suis
qu'au stade du tatonnement sur VBA et je ne l'ai jamais utilisé pour
paramétrer des graphiques.

Merci beaucoup de votre aide.



Re-bonjour,


La solution de François L a très bien fonctionné. Merci encore de votre
aide.
J'ai maintenant une autre question : comment puis-je attribuer à une
constante le numéro de la ligne de la première valeur source du graphique.
Pour plus de clarté, dans la copie du code ci-dessous, le 47 permet de
commencer la lecture des étiquettes à la première ligne des sources et
non à la ligne 1. Je souhaiterai pouvoir attribuer le n° de ligne de la
source directement afin de pouvoir l'utiliser avec n'importe que graphique.

J'espère que ma demande est assez claire.

Merci beaucoup,

Jean-Baptiste

Code :

Sub EtiquettesEtValeursA()

Dim i As Integer
With ActiveChart 'Le graphique doit être sélectionné

d = .SeriesCollection(1).Points.Count
For i = 1 To d
With .SeriesCollection(1).Points(i)
.HasDataLabel = True
.DataLabel.Text = Range("A" & i + 47).Value & " : " & Range("B" & i
+ 47).Value
End With
Next
End With

End Sub


Avatar
Francois L

J'ai maintenant une autre question : comment puis-je attribuer à une
constante le numéro de la ligne de la première valeur source du graphique.
Pour plus de clarté, dans la copie du code ci-dessous, le 47 permet de
commencer la lecture des étiquettes à la première ligne des sources et
non à la ligne 1. Je souhaiterai pouvoir attribuer le n° de ligne de la
source directement afin de pouvoir l'utiliser avec n'importe que graphique.



Re,

Ce qui suit ?

Sub EtiquettesEtValeursA(ValBase As Integer)

Dim i As Integer
With ActiveChart 'Le graphique doit être sélectionné

d = .SeriesCollection(1).Points.Count
For i = 1 To d
With .SeriesCollection(1).Points(i)
.HasDataLabel = True
.DataLabel.Text = Range("A" & i + ValBase).Value & " : " &
Range("B" & i + ValBase).Value
End With
Next
End With

End Sub

Sub test()
EtiquettesEtValeursA (46)
End Sub


--
François L

Avatar
Francois L

J'ai maintenant une autre question : comment puis-je attribuer à une
constante le numéro de la ligne de la première valeur source du graphique.
Pour plus de clarté, dans la copie du code ci-dessous, le 47 permet de
commencer la lecture des étiquettes à la première ligne des sources et
non à la ligne 1. Je souhaiterai pouvoir attribuer le n° de ligne de la
source directement afin de pouvoir l'utiliser avec n'importe que graphique.




Bonjour,

La solution qui suit est indépendante de l'emplacement des données sources :

'--------------------------------------
Sub test()
With ActiveChart.SeriesCollection(1)
For i = 1 To .Points.Count
X = Application.WorksheetFunction.Index(.XValues, i)
Y = Application.WorksheetFunction.Index(.Values, i)
.Points(i).HasDataLabel = True
.Points(i).DataLabel.Text = X & " : " & Y
Next
End With
End Sub
'---------------------------------------


--
François L