Bonjour à tous et par avance, un grand merci pour votre aide.
Dans le cadre de mon activité, j'ai besoin de réaliser les fameux nuages de points, avec une particularité, afficher à côté de chaque point le nom auquel il correspond (je ne parle pas du nom de la série, mais d'un nom situé sur la même ligne que la donnée, à gauche).
Par exemple, si j'ai trois colonnes "nom" "age" "salaire", mon nuage de point va ventiler les ages en abscisse et les salaires en ordonnées, et à coté de chaque point va s'afficher le nom de la personne à qui correspond la coordonnée. Bref, pour faire ça j'utilisais jusqu'à maintenant une macro donnée par microsoft lui même :
Comment faire pour utiliser une macro pour ajouter des étiquettes aux points de données dans un graphique à nuages de points (XY) ou un graphique à bulles dans Excel
A savoir :
Code (Text):
Sub AttachLabelsToPoints()
'Dimension variables.
Dim Counter As Integer, ChartName As String, xVals As String
' Disable screen updating while the subroutine is run.
Application.ScreenUpdating = False
'Store the formula for the first series in "xVals".
xVals = ActiveChart.SeriesCollection(1).Formula
'Extract the range for the data from xVals.
xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, _
Mid(Left(xVals, InStr(xVals, "!") - 1), 9)))
xVals = Left(xVals, InStr(InStr(xVals, "!"), xVals, ",") - 1)
Do While Left(xVals, 1) = ","
xVals = Mid(xVals, 2)
Loop
'Attach a label to each data point in the chart.
For Counter = 1 To Range(xVals).Cells.Count
ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = _
True
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
Next Counter
End Sub
Le problème, et ce pourquoi j'ai aujourd’hui besoin de votre aide, c'est qu'à présent j'ai plusieurs séries dans mon nuage de points (une dizaine), et que ma macro ne s'occupe que de la première. J'ai bien essayé de bidouiller en créant une deuxième macro et en remplaçant ActiveChart.SeriesCollection(1) par ActiveChart.SeriesCollection(2) mais cela marche une fois sur deux, et comme il y a des graphs qui vont avoir jusqu'à 20 séries et à mettre à jour régulièrement, je me demandais si on pouvait tout condenser en une
Un grand merci d'avance pour votre aide !
Dans le cadre de mon activité, j'ai besoin de réaliser les fameux nuages de points, avec une particularité, afficher à côté de chaque point le nom auquel il correspond (je ne parle pas du nom de la série, mais d'un nom situé sur la même ligne que la donnée, à gauche).
Par exemple, si j'ai trois colonnes "nom" "age" "salaire", mon nuage de point va ventiler les ages en abscisse et les salaires en ordonnées, et à coté de chaque point va s'afficher le nom de la personne à qui correspond la coordonnée. Bref, pour faire ça j'utilisais jusqu'à maintenant une macro donnée par microsoft lui même :
Comment faire pour utiliser une macro pour ajouter des étiquettes aux points de données dans un graphique à nuages de points (XY) ou un graphique à bulles dans Excel
A savoir :
Code (Text):
Sub AttachLabelsToPoints()
'Dimension variables.
Dim Counter As Integer, ChartName As String, xVals As String
' Disable screen updating while the subroutine is run.
Application.ScreenUpdating = False
'Store the formula for the first series in "xVals".
xVals = ActiveChart.SeriesCollection(1).Formula
'Extract the range for the data from xVals.
xVals = Mid(xVals, InStr(InStr(xVals, ","), xVals, _
Mid(Left(xVals, InStr(xVals, "!") - 1), 9)))
xVals = Left(xVals, InStr(InStr(xVals, "!"), xVals, ",") - 1)
Do While Left(xVals, 1) = ","
xVals = Mid(xVals, 2)
Loop
'Attach a label to each data point in the chart.
For Counter = 1 To Range(xVals).Cells.Count
ActiveChart.SeriesCollection(1).Points(Counter).HasDataLabel = _
True
ActiveChart.SeriesCollection(1).Points(Counter).DataLabel.Text = _
Range(xVals).Cells(Counter, 1).Offset(0, -1).Value
Next Counter
End Sub
Le problème, et ce pourquoi j'ai aujourd’hui besoin de votre aide, c'est qu'à présent j'ai plusieurs séries dans mon nuage de points (une dizaine), et que ma macro ne s'occupe que de la première. J'ai bien essayé de bidouiller en créant une deuxième macro et en remplaçant ActiveChart.SeriesCollection(1) par ActiveChart.SeriesCollection(2) mais cela marche une fois sur deux, et comme il y a des graphs qui vont avoir jusqu'à 20 séries et à mettre à jour régulièrement, je me demandais si on pouvait tout condenser en une
Un grand merci d'avance pour votre aide !