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.

Rechercher des sujets similaires à "comprends rien graphique"