[Catgorie modifie .Net -> VBA] graph nuage de points + étiquettes

kevzizou Messages postés 4 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 5 mai 2011 - 4 mai 2011 à 16:47
kevzizou Messages postés 4 Date d'inscription mardi 14 octobre 2008 Statut Membre Derniè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

Kevzizou

2 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
kevzizou Messages postés 4 Date d'inscription mardi 14 octobre 2008 Statut Membre Dernière intervention 5 mai 2011
5 mai 2011 à 14:39
Salut Jack,
Merci pour ta rapide réponse.
Je test ça.

A bientôt


Kevzizou
0
Rejoignez-nous