Je ne comprends rien au graphique
Bonjour à tous,
J'essaie de tracer un graphique avex les X dans la colonne D et les Y dans E, le tout dans la feuille 2.
J'ai essayé en enregistrant une macro pour générer le code mais, sans comprendre pourquoi, il me rajoutait des séries etl me sortait 3 courbes.
J'ai recopié bêtement un code trouvé sur le web (http://peltiertech.com/Excel/ChartsHowTo/QuickChartVBA.html)
qui me sort bien ma courbe mais comme je ne comprends pas trop comment il marche, je suis incapable d'ajouter le titre pour l'axe des abscisses et des ordonnées.
Pourquoi, par exemple, je ne peux pas utiliser ça (j'ai un message d'erreur) :
With .Axes(xlValue, xlPrimary)
.HasTitle = True
.AxisTitle.Text = "Value (Y) Axis"
End With
Est-ce que vous auriez soit la réponse, soit un lien pour m'expliquer les différentes méthodes de création d'un graphique, car je nage complètement ...
Merci par avance,
Bonne journée,
Ptit Bleu.
Sub TraceGraphe()
'
' TraceGraphe Macro
'
Dim MaxFeuil2 As Long
Dim myChtObj As ChartObject
Dim rngChtData As Range
Dim rngChtXVal As Range
Dim iColumn As Long
MaxFeuil2 = Sheets("Feuil2").Range("D65536").End(xlUp).Row
' make sure a range is selected
If TypeName(Selection) <> "Range" Then Exit Sub
' define chart data
'Set rngChtData = Selection
' define chart's X values
With rngChtData
Set rngChtXVal = Worksheets("Feuil2").Range("D1:" & "D" & MaxFeuil2)
End With
' add the chart
Set myChtObj = ActiveSheet.ChartObjects.Add _
(Left:=250, Width:=375, Top:=75, Height:=225)
With myChtObj.Chart
' make an XY chart
.ChartType = xlXYScatterLines
' remove extra series
Do Until .SeriesCollection.Count = 0
.SeriesCollection(1).Delete
Loop
' add series from selected range, column by column
With .SeriesCollection.NewSeries
.Values = Worksheets("Feuil2").Range("E1:" & "E" & MaxFeuil2)
.XValues = rngChtXVal
.Name = "Essai"
End With
End With
End Sub
Bonjour
Une explication qui me semble claire sur le lien ci-après pour faire un graphique avec VBA.
Cordialement
Amadéus
Merci pour le lien Amadeus.
Je vais regarder ça de plus près et faire quelques tests et peut-être que je reviendrai ensuite si besoin.
A plus (sans doute
Ptit Bleu.
J'ai regardé le lien d'Amadeus et essayé de faire un mix de ce que j'ai trouvé à droite à gauche ... et j'arrive enfin à n'avoir qu'une courbe (et c'est celle que je veux en plus
Mais je n'ai pas encore compris comment tout ça s'articulait et je pense que le code ci-dessous va en faire sourire quelque-uns, mais c'est déjà un début.
J'ai maintenant une autre question : est-il possible d'inclure dans le code la taille et la position du graphique ?
J'ai vu qu'on pouvait le faire avec :
Set myChtObj = ActiveSheet.ChartObjects.Add _
(Left:=250, Width:=375, Top:=75, Height:=225)
mais je ne sais pas où le mettre et d'ailleurs si je peux le mettre (en fait, j'ai essayé - Résultat : un cadre avec ma courbe et un cadre blanc généré par le code ci-dessus)
Merci par avance pour votre aide pour le positionnement du cadre et pour vos conseils pour améliorer le code ci-après.
Ptit Bleu
Sub TraceGraphe()
'
' TraceGraphe Macro
Dim MaxFeuil2 As Long
Dim MonGraphe As Chart, MaPlage As Range, MaSerie As Series, compteur As Long
MaxFeuil2 = Sheets("Feuil2").Range("D65536").End(xlUp).Row
Set MonGraphe = ThisWorkbook.Charts.Add
MonGraphe.ChartType = xlXYScatter
With ActiveChart
Do Until .SeriesCollection.Count = 0
.SeriesCollection(1).Delete
Loop
End With
Set MaSerie = MonGraphe.SeriesCollection.NewSeries
MaSerie.Values = Worksheets("Feuil2").Range("E1:" & "E" & MaxFeuil2)
MaSerie.XValues = Worksheets("Feuil2").Range("D1:" & "D" & MaxFeuil2)
MaSerie.Name = "essai"
ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil2"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Essai Graphe"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "X"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Y"
End With
'
End Sub
Bonjour,
Pour déplacer le graphique, il faut être au niveau objet (Shape).
On peut ajouter dans la même procédure et à la fin du code :
Dim NomGraph As String
'récupère le nom du graphique
NomGraph = ActiveChart.Name
'à ce stade, il contient peut-être en plus le nom de la feuille
If Mid(NomGraph, 1, Len(ActiveSheet.Name)) = ActiveSheet.Name Then
'ne garde que le nom du graphique
NomGraph = Mid(NomGraph, Len(ActiveSheet.Name) + 1)
End If
'positionne
With ActiveSheet.Shapes(NomGraph)
.Left = 100
.Top = 10
End With
Les propriété Left (Gauche) et Top (Haut) permettent de positionner le graphique.
Salut Soft,
Je viens juste de lire ton message. Entre temps, j'ai trouvé une autre manière de faire : j'ai ajouté ça après ActiveChart.Location Where:=xlLocationAsObject, Name:="Feuil1"
With ActiveChart.Parent
.Height = 325
.Width = 500
.Top = 200
.Left = 500
End With
Et ça marche.
Il n'empêche que je n'ai pas encore bien compris tout ce que j'avais mis dans le code et il y a encore pas mal de trucs que j'ai besoin d'ajouter et que je ne sais pas encore faire. Je vais chercher un peu et si je sèche, je reviendrai vers vous.
Avant d'y retourner, y a-t-il un site regroupant l'ensemble des commandes pour gérer les graphes ?
Bonne semaine à tous,
Ptit Bleu.