kevzizou
Messages postés4Date d'inscriptionmardi 14 octobre 2008StatutMembreDernière intervention 5 mai 2011
-
4 mai 2011 à 16:47
kevzizou
Messages postés4Date d'inscriptionmardi 14 octobre 2008StatutMembreDernière intervention 5 mai 2011
-
5 mai 2011 à 14:39
Bonjour à toutes et à tous,
J'ai un petit soucis pour associer des étiquettes à chaque point d'un nuage de points. J'ai déjà regardé les différents topics à ce sujet mais je n'arrive pas à l'adapter à mon cas.
Voici mon code:
Sheets("Sheet1").Activate
Range("A:A,C:C,P:P").Select
Selection.Copy
Sheets("test macro").Activate
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
'ajout d'un graphique à partir de la base de données, prend en compte jusqu'à la ligne 30 maxi
Charts.Add
ActiveChart.ChartType = xlXYScatter
ActiveChart.SetSourceData Source:=Sheets("test macro").Range("B2:C30"), _
PlotBy:=xlColumns
ActiveChart.SeriesCollection(1).XValues = "='test macro'!R2C2:R30C2"
ActiveChart.Location Where:=xlLocationAsNewSheet, Name:="Graph mens"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Rémunération mensuelle"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Âge"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Rémunération"
ActiveChart.Axes(xlCategory).Select
End With
'étiquettes
' Compte le nombre de points de la série sélectionnée
NBpoints = ActiveChart.SeriesCollection(1).Points.Count
' Début de boucle pour la génération des labels
For i = 1 To NBpoints
With ActiveChart.SeriesCollection(1).Points(i)
' Active l'option affichage du label
.HasDataLabel = True
' Personnalise le texte et la mise en forme
.DataLabel.Text = "=Sheet1!R2C1"
.DataLabel.Font.Size = "7"
End With
Next
La création du graphique a été faite avec un macro auto et j'ai chopé le code en rouge sur un ancien topic. Quand j'exécute il me met le debugage au niveau du .Hasdatalabel=true.
Pour info, je souhaite associer à mes points le nom de la personne se trouvant dans la feuille 1, colonne 1 de la cellule A2 à A30.
Quelqu'un peut-il me venir en aide???
Merci par avance
PS: toutes mes excuses si je ne suis pas sur le bon forum
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 4 mai 2011 à 17:56
Salut
Exemple perso où je devais retrouver un point sur la courbe et le personnaliser :
Ça te donnera la structure en sachant que :
- oChartDatasSheet est la feuille sur laquelle se trouvent les données à identifier
- oChart est le graphique
Dim oSerie As Series
Dim lPointItem As Long
Dim oPoint As Point
If oChartDatasSheet Is Nothing Then GoTo Fin
If oChart Is Nothing Then GoTo Fin
With oChart
' On ajoute une légende à ces points particuliers : Nom de la série, Heure, Valeur
Set oSerie = .SeriesCollection(1)
With oSerie
lPointItem = oChartDatasSheet.Range("t1_TimeChosen").Value
Set oPoint = .Points(lPointItem)
With oPoint
' Ajoute une étiquette
.HasDataLabel = True
.ApplyDataLabels AutoText:=True, _
ShowSeriesName:=True, _
ShowCategoryName:=True, _
ShowValue:=True, _
Separator:=vbLf
With .DataLabel
' Texte (remplace le nom de la série par celui de notre point particulier
.Text = Replace(.Text, oSerie.Name, "T1")
' Prépositionnement
.Position = xlLabelPositionBelow
End With
End With
End With
End With
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)