OVH Cloud OVH Cloud

étiquettes sur graphique

6 réponses
Avatar
isabelle
Bonjour,

Je cherche =E0 faire un nuage de points avec une hauteur en=20
abscisse, un diam=E8tre en ordonn=E9es et ajouter des=20
=E9tiquettes du nom de l'arbre correspondant pour chacun=20
des points, c'est =E0 dire une troisi=E8me variable.
Comment faire?
Merci d'avance,
isabelle

6 réponses

Avatar
ChrisV
Bonjour Isabelle,

http://longre.free.fr/pages/telecharge/index.html#Etiquettes


ChrisV


"isabelle" a écrit dans le message de
news:25dc101c46276$935c4fe0$
Bonjour,

Je cherche à faire un nuage de points avec une hauteur en
abscisse, un diamètre en ordonnées et ajouter des
étiquettes du nom de l'arbre correspondant pour chacun
des points, c'est à dire une troisième variable.
Comment faire?
Merci d'avance,
isabelle
Avatar
twinley
Bjr,

J'utilise cette sub de Garnotte qui fait merveille...


Graph en nuage de points

10 -0.5 1
20 1.5 0.25
30 0.25 -0.50

Sélectionne les colonnes 2 et 3 et appelle cette macro :

Sub Construit_Nuage_Avec_Étiquettes_En_Haut_Des_Points()
Application.ScreenUpdating = False
Set ici = Selection
nom = ActiveSheet.Name
Charts.Add
With ActiveChart
.ChartType = xlXYScatter
.SetSourceData Source:=ici, PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:=nom
End With
With ActiveChart.SeriesCollection(1)
.ApplyDataLabels
.DataLabels.Position = xlLabelPositionAbove
For i = 1 To ici.Rows.Count
.Points(i).DataLabel.Characters.Text = ici(i, 1).Offset(, -1)
Next
End With
End Sub

à+
--
twinley



Bonjour,

Je cherche à faire un nuage de points avec une hauteur en
abscisse, un diamètre en ordonnées et ajouter des
étiquettes du nom de l'arbre correspondant pour chacun
des points, c'est à dire une troisième variable.
Comment faire?
Merci d'avance,
isabelle



Avatar
garnote
Bonsoir twinley,

Supposons qu'un graphique est construit
(sans étiquettes).
Alors si tu sélectionnes une série et que tu appelles
cette macro, tu obtiendras des étiquettes qui se
mettront à jour automatiquement. Tu peux faire ça
pour chaque série (les plages d'étiquettes peuvent
être en lignes ou en colonnes).

Sub Étiquettes_Mises_À_Jour_Automatiquement()
Dim plage As Object
Dim cellule As Object
Dim point As Object
Dim nomgraphique As String
Dim série As String
Dim i As Integer
nomgraphique = ActiveChart.Parent.Name
série = Selection.Name
ActiveWindow.Visible = False
Set plage = Application.InputBox( _
prompt:="Sélectionnez la plage des étiquettes", Type:=8)
ActiveSheet.ChartObjects(nomgraphique).Activate
i = 1
If plage.Cells.Count > _
ActiveChart.SeriesCollection(série).Points.Count Then
MsgBox prompt:="Sélection non valide. Plage trop grande!", _
Buttons:=vbCritical
Else
For Each cellule In plage
Set point = ActiveChart.SeriesCollection(série).Points(i)
With point
.ApplyDataLabels Type:=xlShowValue
.DataLabel.Text = "=" & cellule.Address _
(ReferenceStyle:=xlR1C1, external:=True)
End With
i = i + 1
Next
End If
End Sub

Serge


"twinley" a écrit dans le message de
news:
Bjr,

J'utilise cette sub de Garnotte qui fait merveille...


Graph en nuage de points

10 -0.5 1
20 1.5 0.25
30 0.25 -0.50

Sélectionne les colonnes 2 et 3 et appelle cette macro :

Sub Construit_Nuage_Avec_Étiquettes_En_Haut_Des_Points()
Application.ScreenUpdating = False
Set ici = Selection
nom = ActiveSheet.Name
Charts.Add
With ActiveChart
.ChartType = xlXYScatter
.SetSourceData Source:=ici, PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:=nom
End With
With ActiveChart.SeriesCollection(1)
.ApplyDataLabels
.DataLabels.Position = xlLabelPositionAbove
For i = 1 To ici.Rows.Count
.Points(i).DataLabel.Characters.Text = ici(i, 1).Offset(, -1)
Next
End With
End Sub

à+
--
twinley



Bonjour,

Je cherche à faire un nuage de points avec une hauteur en
abscisse, un diamètre en ordonnées et ajouter des
étiquettes du nom de l'arbre correspondant pour chacun
des points, c'est à dire une troisième variable.
Comment faire?
Merci d'avance,
isabelle





Avatar
garnote
Yep ! Au péril de ma santé :-))) j'ai enfin réussi
à tenir compte d'éventuels changements d'étiquettes.

Un tableau de trois colonnes adjacentes.
Première colonne : Étiquettes
Les deux autres : Valeurs X et Y du nuage de points.
a 1 6
b 2 7
c 3 8
d 4 9
e 5 10
Je sélectionne les valeurs numériques et appelle cette macro.
Restriction : une seule série.

Sub Construit_Nuage_Avec_Étiquettes_Mises_À_Jour()
Application.ScreenUpdating = False
Set ici = Selection
nom = ActiveSheet.Name
Charts.Add
With ActiveChart
.ChartType = xlXYScatter
.SetSourceData Source:=ici, PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:=nom
End With
Set plage = ici.Offset(0, -1).Resize(ici.Rows.Count, 1)
i = 1
For Each c In plage
Set point = ActiveChart.SeriesCollection(1).Points(i)
With point
.ApplyDataLabels Type:=xlShowValue
.DataLabel.Text = "=" & c.Address _
(ReferenceStyle:=xlR1C1, external:=True)
End With
i = i + 1
Next
End Sub

Serge
Avatar
garnote
Légère simplification avant un gros dodo.

Remplacer :
Set plage = ici.Offset(0, -1).Resize(ici.Rows.Count, 1)
par :
Set plage = ici.Offset(, -1).Resize(, 1)

Bonsoir, Bonne nuit.
Et bonnes vacances à ceux et celles qui en prendront.

Serge
Avatar
twinley
Bonjour garnote

j'use et j'abuse de cette petite merveille sans vergogne.
J'ai ajouté une droite de reg, l'échelle Y à droite.
Je voulais l'étiquette de début de série et l'étiquette de fin de série uniquement.
J'ai donc enlevé dans la série étiquettes toute les données sauf la première et la dernière.
J'ai été supris par le bout de code qui ajustait les étiquettes, mais il a son utilité en dynamique.
Bravo et encore merci

PS: j'avais testé une procedure de graph que tu voulais évaluer mais j'ai buté au point 8. Je crois que le fil est tombé aux oubliettes...

à+
--
twinley



Bonsoir twinley,

Supposons qu'un graphique est construit
(sans étiquettes).
Alors si tu sélectionnes une série et que tu appelles
cette macro, tu obtiendras des étiquettes qui se
mettront à jour automatiquement. Tu peux faire ça
pour chaque série (les plages d'étiquettes peuvent
être en lignes ou en colonnes).

Sub Étiquettes_Mises_À_Jour_Automatiquement()
Dim plage As Object
Dim cellule As Object
Dim point As Object
Dim nomgraphique As String
Dim série As String
Dim i As Integer
nomgraphique = ActiveChart.Parent.Name
série = Selection.Name
ActiveWindow.Visible = False
Set plage = Application.InputBox( _
prompt:="Sélectionnez la plage des étiquettes", Type:=8)
ActiveSheet.ChartObjects(nomgraphique).Activate
i = 1
If plage.Cells.Count > _
ActiveChart.SeriesCollection(série).Points.Count Then
MsgBox prompt:="Sélection non valide. Plage trop grande!", _
Buttons:=vbCritical
Else
For Each cellule In plage
Set point = ActiveChart.SeriesCollection(série).Points(i)
With point
.ApplyDataLabels Type:=xlShowValue
.DataLabel.Text = "=" & cellule.Address _
(ReferenceStyle:=xlR1C1, external:=True)
End With
i = i + 1
Next
End If
End Sub

Serge


"twinley" a écrit dans le message de
news:
Bjr,

J'utilise cette sub de Garnotte qui fait merveille...


Graph en nuage de points

10 -0.5 1
20 1.5 0.25
30 0.25 -0.50

Sélectionne les colonnes 2 et 3 et appelle cette macro :

Sub Construit_Nuage_Avec_Étiquettes_En_Haut_Des_Points()
Application.ScreenUpdating = False
Set ici = Selection
nom = ActiveSheet.Name
Charts.Add
With ActiveChart
.ChartType = xlXYScatter
.SetSourceData Source:=ici, PlotBy:=xlColumns
.Location Where:=xlLocationAsObject, Name:=nom
End With
With ActiveChart.SeriesCollection(1)
.ApplyDataLabels
.DataLabels.Position = xlLabelPositionAbove
For i = 1 To ici.Rows.Count
.Points(i).DataLabel.Characters.Text = ici(i, 1).Offset(, -1)
Next
End With
End Sub

à+
--
twinley



Bonjour,

Je cherche à faire un nuage de points avec une hauteur en
abscisse, un diamètre en ordonnées et ajouter des
étiquettes du nom de l'arbre correspondant pour chacun
des points, c'est à dire une troisième variable.
Comment faire?
Merci d'avance,
isabelle