Voir aussi
Aligner les étiquettes d'une graphique en anneau
Dans un graphique en anneau, les étiquettes sont horizontales par défaut. Certaines se chevauchent ou sortent du secteur qu'elles concernent. Comment les rendre lisibles ?
La macro suivante aligne les étiquettes existantes selon l'angle de leur secteur. Le graphique à traiter est supposé activé. S'il y a plusieurs séries, il faudra faire une boucle sur les séries.
' Alignement des étiquettes existantes d'un graphique en anneau
' François L pour excelabo
Sub menforme()
Dim Nb As Integer, i As Integer
Dim Ang As Double, Sect As Double, SumVal As Double, PtVal As Double, CumA As Double
Application.ScreenUpdating = False
With ActiveChart.SeriesCollection(1)
Nb = .Points.Count
SumVal = Application.WorksheetFunction.Sum(.Values)
Sect = 360 / SumVal
For i = 1 To Nb
PtVal = Application.WorksheetFunction.Index(.Values, i)
Ang = 90 - ((Sect / 2) * PtVal) - CumA
CumA = CumA + (PtVal * Sect)
If Ang < -90 Then Ang = Ang + 180
With .Points(i).DataLabel
.Orientation = Ang
End With
Next
End With
Application.ScreenUpdating = True
End Sub
François L,
Ajouté ou modifié le 24/02/2008 (N°1971)
Agrandir la taille des symboles de légende
Dans un graphique de type secteurs, comment agrandir la taille des symboles de la légende sans modifier la taille de la police ?
Rajoute à ta série de donnée une série de valeur 0
Trace ton camembert
Agrandis les éléments de légende en agrandissant la police
Supprime l'élément de légende de la série de valeur 0
Diminue la police des éléments restants un par un, les symboles resteront à la taille qu'ils avaient avec une police plus grande.
François L,
Ajouté ou modifié le 25/06/2005 (N°1635)
Mettre un texte sur l'étiquette d'un point
J'ai un tableau de 3 colonnes : nom, age, taille. Je fais un grahique représentant la taille en fonction de l'age. Comment faire pour mettre les noms dans des étiquettes sur le graphique ?
Malheureusement cela n'est pas prévu en standard par excel. Si tu as fréquemment ce
besoin, je te conseille de télécharger (gratuitement !) un add-in (macro complémentaire)
de Laurent Longre sur son site href='http://xcell05.free.fr/pages/telecharge/index.html#Etiquettes'>Etiquettes.xla.

Si ton besoin est plus ponctuel, tu peux faire une petite macro.
si tu as nommé "mongraphe" ton graphique et
Si tes données sont de la forme col A : age, col B : taille, col C : nom

met ce code dans le module vba associé à la feuille contenant le graphique:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range
Application.ScreenUpdating = False

Set Rg = Intersect(Target, Columns(3))
If Not Rg Is Nothing Then

ActiveSheet.ChartObjects("mongraphe").Activate
'Application.ScreenUpdating = False
On Error Resume Next

i = 1
'on définit la plage contenant les noms par sa position par rapport à la plage age
'ceci permet de définir dynamiquement les plages ages et taille et d'avoir des trous dans
'la plage noms
'on peut aussi directement définir le range contenant le texte des étiquettes

Set plage = Range("date").Offset(0, 2)

For Each c In plage
Set Point = ActiveChart.SeriesCollection(1).Points(i)
With Point
.ApplyDataLabels Type:=xlShowValue
.DataLabel.Text = True
.DataLabel.Text = c.Text
End With
i = i + 1
Next

End If
End Sub

lorsque tu ajoutes ou enlèves un nom dans la colonne C, celui ci apparait automatiquement
dans l'étiquette du point correspondant sur ton graphique.

Cette astuce est illustrée dans ce classeur exemple :
fcte-regime (téléchargé 5153 fois)
Flo Cabon,
Ajouté ou modifié le 03/04/2005 (N°1603)
Somme des données empilées
Comment 'afficher la somme des données d'un histogramme empilé ? Par défaut exel propose d'afficher toutes les données d'un histogramme empilé.
Il suffit d'intégrer dans le graphique la somme des valeurs. D'attribuer un type courbe
pour ces données. En style ne pas afficher la courbe mais afficher les étiquettes.
Ellimac,
Ajouté ou modifié le 20/06/2003 (N°1445)
Ne pas afficher les étiquettes nulles
Comment masquer dans un graphique les étiquettes dont la valeur est nulle ?
En appliquant à ces étiquettes un format personnalisé :
Tu cliques droit sur une des étiquettes (elle doivent toutes être sélectionnées), puis
"Format des étiquettes de données", onglet "Nombre", catégorie "Personnalisé" et dans la
zone type : 0,00%;;
Ce qui masque les négatifs et les valeurs nulles.
Camille,
Ajouté ou modifié le 16/05/2004 (N°1398)
Légende à l'extrémité de la courbe
Je voudrais faire apparaître la légende de mes courbes à l'extrémité de chacune d'entre elle. Comment faire ?
S'il n'y a pas beaucoup de courbes, tu peux mettre à la main une légende sur
le dernier point de chaque courbe
sélectionner la série (courbe)/ cliquer sur le dernier point pour le
sélectionner/ format / donnée sélectionnée / étiquette de données...


Sinon, voici un joli petit code de Jon Peletier qui fait juste cela.
Dans un module nommé MenuModule d'un classeur (n'importe lequel y compris le perso.xls
si tu en as besoin souvent) mets ce qui suit afin de créer une barre d'outils.

'=================================================
' VBE: MenuModule Standard Module
'=================================================
Option Explicit

Sub Create_Menu()
Dim MyBar As CommandBar
Dim MyPopup As CommandBarPopup
Dim MyButton As CommandBarButton

Delete_Menu

Set MyBar = CommandBars.Add(Name:="Chart Labels", _
Position:=msoBarFloating, temporary:=True)

With MyBar
.Top = 125
.Left = 850

Set MyButton = .Controls.Add(Type:=msoControlButton)
With MyButton
.Caption = "Label Last Point"
.Style = msoButtonCaption
''' msoButtonAutomatic, msoButtonIcon, msoButtonCaption, or
msoButtonIconandCaption
.BeginGroup = True
.OnAction = ThisWorkbook.Name & "!LastPointLabel"
End With
.Width = 100
.Visible = True
End With

End Sub

Sub Delete_Menu()
On Error Resume Next
CommandBars("Chart Labels").Delete
On Error GoTo 0
End Sub
'================================================

Maintenant mets le code suivant dans un autre module nommé ModChartLabels

Option Explicit

Sub LastPointLabel()
Dim mySrs As Series
Dim nPts As Long
For Each mySrs In ActiveChart.SeriesCollection
With mySrs
nPts = .Points.Count
mySrs.Points(nPts).ApplyDataLabels _
Type:=xlDataLabelsShowValue, _
AutoText:=True, LegendKey:=False
mySrs.Points(nPts).DataLabel.Text = mySrs.Name
End With
Next
End Sub

=============================================
Maintenant tu peux ouvrir n'importe quel classeur, sélectionner un graphique et cliquer
dans le bouton label last point et tes légendes apparaissent en bout le ligne.

Cette astuce est illustrée dans ce classeur exemple :
jp-labellastpoint (téléchargé 4096 fois)
Jacques Chaussard, Jon Peltier,
Ajouté ou modifié le 04/09/2004 (N°886)
Ne pas afficher les étiquettes nulles
Je veux afficher sur mon graphique des étiquettes indiquant la valeur de mes colonnes. Cependant je ne voudrais pas que les valeurs s'affichent si la valeur est 0.
En double-cliquant sur ton étiquette, tu édites ton format d'étiquette, puis tu
peux aller ensuite dans l'onglet Nombre, tu choisis Personnalisé et tu appliques
un format du style : 0,0;0,0;;
Cela devrait rendre invisible les zéros
Gaétan Mourmant,
Ajouté ou modifié le 04/09/2004 (N°885)
Etiquettes assorties aux couleurs des courbes
J'utilise Excel 2000 et je lorsque je fais un graphique de type courbe, j'affiche mes valeurs d'étiquettes. J'aimerais qu'elles prennent la mise en forme de ma série : si la ligne est rouge j'aimerais que mon étiquette soit rouge aussi.
Sub coulEtiquettes()
' formate la couleur de police des étiquettes de séries
' (pour les graphiques type Courbes ou Histogrammes,
' sous-type par défaut)
' par la couleur - personnalisée - de la série rattachée.
Dim cO As ChartObject
Application.ScreenUpdating = False
Set aC = ActiveCell
For Each cO In ActiveSheet.ChartObjects
cO.Activate
Set nbcoL = ActiveChart.SeriesCollection
For i = 1 To nbcoL.Count
If nbcoL(i).HasDataLabels Then
nbcoL(i).DataLabels.Select
With Selection
.Interior.ColorIndex = xlNone
If cO.Chart.ChartType = xlLineMarkers Then _
.Font.ColorIndex = nbcoL(i).Border.ColorIndex
If cO.Chart.ChartType = xlColumnClustered Then _
.Font.ColorIndex = nbcoL(i).Interior.ColorIndex
End With
End If
Next i
Next cO
aC.Select
Set nbcoL = Nothing
Set aC = Nothing
End Sub
ChrisV,
Ajouté ou modifié le 04/09/2004 (N°884)
Ne pas montrer les étiquettes nulles
Dans un graphique j'ai des valeurs nulles. Je sais comment ne pas les montrer sur le graphique mais elles apparaissent dans les étiquettes !
Il te suffit de définir pour cela un format personnalisé.

Sélectionne tes étiquettes de données, double clique dessus. Ensuite,
dans l'onglet nombre, choisis "personnalisé" dans la liste de gauche et tape
Standard;-Standard; (n'oublie pas les ;)
Ceci te permet d'afficher les valeurs positives et négatives sans
afficher les 0. Tu peux aussi imposer des formats particuliers à tes
étiquettes.
John Walkenbach,
Ajouté ou modifié le 04/09/2004 (N°883)
Déplacer automatiquement les étiquettes
Je trace un graphique type Courbes. Sur mon graphique j'affiche une étiquette représentant la valeur max de la série. Quel est le code VB pour déplacer automatiquement cette étiquette de données sur mon graphique quand la valeur max change de position.
les données sont dans feuil1, plage données_1
le graphique est dans la feuille graph1

dans la feuille de code associée à feuil1 :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("données_1")) Is Nothing Then
'recherche du max
nmaxi = Sheets("feuil1").Range("données_1").Cells(1)
For num = 1 To Sheets("feuil1").Range("données_1").Count
If Sheets("feuil1").Range("données_1").Cells(num).Value >
Sheets("feuil1").Range("données_1").Cells(nmaxi).Value Then nmaxi = num
Next
'supp étiq
On Error Resume Next
Charts("graph1").SeriesCollection(1).DataLabels.Delete
On Error GoTo 0
'création nouv étiq
Charts("graph1").SeriesCollection(1).Points(nmaxi).ApplyDataLabels Type:= _
xlDataLabelsShowLabel, AutoText:=True, LegendKey:=False
End If
End Sub


Autre possibilité : en ayant préalablement sélectionné le graphique

Sub test()
e = 0
With ActiveChart.SeriesCollection(1)
.ApplyDataLabels ShowValue:=True
For i = 1 To .Points.Count
If (.Points(i).DataLabel.Text) * 1 > e Then
e = (.Points(i).DataLabel.Text) * 1
j = i
End If
Next
.DataLabels.Delete
.Points(j).ApplyDataLabels ShowValue:=True
End With
End Sub
Jacques Chaussard, Thierry Rural,
Ajouté ou modifié le 04/09/2004 (N°882)
Infos personnalisées sur un point
Quand je passe la souris sur un point d'un graphique les coordonnées de ce point s'affichent. Peut-on modifier ce qui doit s'afficher ?
Je ne sais pas trop comment modifier le contenu par défaut de ces
infos-bulles affiché par Excel, mais sinon tu peux toujours afficher les
informations que tu veux dans la barre d'état.

Cet exemple suppose que les séries de ton graphique sont contenues dans
des plages verticales et que ce graphique est incorporé dans la feuille
"Feuil1" (nom du module attaché à la feuille). Il affiche dans la barre
d'état les adresses de cellules et les valeurs de l'abscisse et de
l'ordonnée du point sur lequel se trouve la souris, libre à toi
d'afficher d'autres infos à partir de là.

'===== Dans le module ThisWorkbook =====

Dim Graph As Classe1

Private Sub Workbook_Open()
Set Graph = New Classe1
Set Graph.Graph = Feuil1.ChartObjects(1).Chart
End Sub

'===== Dans le module de classe "Classe1" =====

Public WithEvents Graph As Chart

Private Sub Graph_MouseMove(ByVal Button As Long, _
ByVal Shift As Long, ByVal x As Long, ByVal y As Long)

Dim ElementID As Long, SeriesIndex As Long, PointIndex As Long
Dim S As Series, I As Integer, J As Integer, Form As String
Dim CellX As Range, CellY As Range

Graph.GetChartElement x, y, ElementID, SeriesIndex, PointIndex

If ElementID = xlSeries Then
Form = Graph.SeriesCollection(SeriesIndex).Formula
I = InStr(1, Form, ",") + 1
J = InStr(I, Form, ",") + 1
Set CellX = Range(Mid$(Form, I, J - I - 1))(PointIndex)
Set CellY = Range(Mid$(Form, J, InStr(J, Form, ",") -
J))(PointIndex)
Application.StatusBar = "Cellules= " & CellX.Address & ",
" _
& CellY.Address & " | valeurs = " & CellX & ", "
& CellY
Else: Application.StatusBar = False
End If

End Sub

Pour que ça marche, il faut exécuter d'abord Workbook_Open. La procédure
MouseMove est appelée dès que tu déplaces la souris dans le graphique
(celui-ci doit être activé) et permet d'obtenir les coordonnées du
pointeur. La méthode GetChartElement donne des informations sur
l'élément du graphique pointé par ces coordonnées.

Tu trouveras dans l'exemple à télécharger des variantes ainsi
qu'une autre solution de Pierre Dumas qui te permet d'afficher tes données
dans un msgbox.

Cette astuce est illustrée dans ce classeur exemple :
llpdfc-etiquettesperso (téléchargé 3806 fois)
Laurent Longre,
Ajouté ou modifié le 03/09/2004 (N°871)