VBA: créer un graphique excel

  • Initiateur de la discussion Initiateur de la discussion bernaroff
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

bernaroff

Guest
Bonjour, cette question est surement d'un niveau débutant, mais je commence tout juste
J'ai besoin de créer un graphique dont les abscisses sont
Cells(34,7),Cells(34,cr_max)
les valeurs des deux courbes sont
Cells(35,7),Cells(35,cr_max)
Cells(37,7),Cells(37,cr_max)

(cr_max est un paramètre définis et égale à une valeur fixe)
De plus, il faut que mes abscisses soit en ordre chronologique et proportionnelles (10 est à 9 unité de 1 et à 7 unité de 3 par exemple)

Merci beaucoup
 
Re : VBA: créer un graphique excel

Bonjour Bernaroof, bonjour le forum,

Une idée.... Tu lances l'enregistreur de macros (menu Outils/Macro/Nouvelle macro...) tu fait ton graphique manuellement avec tous les paramètres que tu cites car l'enregistreur enregistre tout (même trop souvent). À la fin tu arrêtes l'enregistreur et tu regardes le code...
 
Re : VBA: créer un graphique excel

j'ai réussi à créer mon graphique:
Dim rg_data1 As Range
Dim rg_data10 As Range

Set rg_data1 = Range(Cells(37, 7), Cells(37, cr_max))
Set rg_data10 = Range(Cells(34, 7), Cells(34, cr_max))

Range(Cells(35, 7), Cells(35, cr_max)).Select
ActiveSheet.Shapes.AddChart.Select
ActiveChart.SetSourceData Source:=Range(Cells(35, 7), Cells(35, cr_max))
ActiveChart.ChartType = xlLine
ActiveChart.SeriesCollection(1).Name = "='Données'!$A$35"
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(2).Name = "='Données'!$A$31"
ActiveChart.SeriesCollection(2).Values = rg_data1
ActiveChart.SeriesCollection(2).XValues = rg_data10
ActiveChart.Axes(xlCategory).Select
ActiveChart.Axes(xlCategory).CategoryType = xlTimeScale

ActiveSheet.ChartObjects("Graphique 1").Activate
ActiveChart.ChartArea.Select
ActiveChart.PlotVisibleOnly = False
Rows("37:37").Select
Selection.EntireRow.Hidden = True

Mais normalement quand je passe l'axe des adscisses en "date"
( ActiveChart.Axes(xlCategory).CategoryType = xlTimeScale)
il me les met en ordre croissant en respectant les intervales seulement ça ne se produit pas.

le problème avec le nuage de point c'est que mes données ne sont pas en ordre croissant ... :-(
839 839 630 650 600
3,46% 3,46% 4,60% 4,31% 3,83%

Si quelqu'un a une solution pour ce problème je suis preneur, je m'arrache les cheveux sur ce graphe depuis le début de l'après midi ...
 
Re : VBA: créer un graphique excel

Voila ce que j'essaie de faire, sur le graphique, je souhaiterai mettre les valeurs en abscisses par ordre croissant avec les points correspondants, malheureusement je n'arrive toujours pas à trouver de solutions

(à gauche, ce que j'obtiens, à droite ce que je souhaite obtenir)

Merci pour votre patience et votre aide
 

Pièces jointes

Re : VBA: créer un graphique excel

J'ai juste enregistré la mise en ordre et je l'ai copiée dans ton code. [EDIT : il faut bien entendu adapter le code à un tableau variable]

Les valeurs actuelles sont dans l'ordre que tu leur a donné ; clique le bouton et cela met en ordre et trace le nouveau graphique (évidemment, ici comme le premier est lié aux mêmes valeurs, il se met à jour aussi)

Cordialement
 

Pièces jointes

Dernière édition:
Bonjour,

et d'abord merci pour les réponses.

Mecano41, j'ai réutilisé ton fichier pour faire ma macro, cependant j'aimerai pouvoir utiliser une variable pour l'indice de la fin de la plage de données. Voici ce que j'essaye de faire mais je ne sais pas comment écrire cela en VBA.
Voici le code que j'utilise :

Dim N%

With Worksheets("Feuil1")
N = .Cells(.Rows.Count, 1).End(xlUp).Row
Set F = Worksheets("feuil1")
Charts.Add
With ActiveChart
.SetSourceData Source:=F1.Range("K13")
.SeriesCollection.NewSeries
With .SeriesCollection(1)
.ChartType = xlXYScatterLinesNoMarkers
.XValues = F.[B1:B&N&]
.Values = F.[H1:H&N&]
.Name = "V en cm/s"
End With
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.ChartType = xlXYScatterLinesNoMarkers
.XValues = F.[B1:B&N&]
.Values = F.[J1:J&N&]
.Name = "A en cm²/s²"
End With
.Location Where:=xlLocationAsObject, Name:=F.Name
End With
ActiveChart.Parent.Name = "Graphique"
With ActiveSheet.Shapes("Graphique")
.Left = 50
.Top = 50
.Width = 1000
.Height = 500
End With
[A1].Select

Merci d'avance
 
Bonjour,

et d'abord merci pour les réponses.

Mecano41, j'ai réutilisé ton fichier pour faire ma macro, cependant j'aimerai pouvoir utiliser une variable pour l'indice de la fin de la plage de données. Voici ce que j'essaye de faire mais je ne sais pas comment écrire cela en VBA.
Voici le code que j'utilise :

Dim N%

With Worksheets("Feuil1")
N = .Cells(.Rows.Count, 1).End(xlUp).Row
Set F = Worksheets("feuil1")
Charts.Add
With ActiveChart
.SetSourceData Source:=F1.Range("K13")
.SeriesCollection.NewSeries
With .SeriesCollection(1)
.ChartType = xlXYScatterLinesNoMarkers
.XValues = F.[B1:B&N&]
.Values = F.[H1:H&N&]
.Name = "V en cm/s"
End With
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.ChartType = xlXYScatterLinesNoMarkers
.XValues = F.[B1:B&N&]
.Values = F.[J1:J&N&]
.Name = "A en cm²/s²"
End With
.Location Where:=xlLocationAsObject, Name:=F.Name
End With
ActiveChart.Parent.Name = "Graphique"
With ActiveSheet.Shapes("Graphique")
.Left = 50
.Top = 50
.Width = 1000
.Height = 500
End With
[A1].Select

Merci d'avance


Bonjour,

Essaie ceci pour le premier (et pareil pour les autres) :

Code:
.XValues = F.[B1.Resize(1,N)]

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

P
Réponses
2
Affichages
1 K
Ptrs32
P
S
Réponses
1
Affichages
1 K
SCorbeil
S
B
  • Question Question
Réponses
21
Affichages
2 K
babalouche
B
P
Réponses
3
Affichages
1 K
phirexian
P
F
Réponses
7
Affichages
2 K
J
C
Réponses
9
Affichages
3 K
Cedric_C
C
T
Réponses
22
Affichages
6 K
Thibault LB
T
P
Réponses
1
Affichages
20 K
pierreQSE
P
K
Réponses
5
Affichages
23 K
K
Retour