Graphique à plage de données de taille variable en VBA
y
Bonjour à toutes et à tous,
je souhaite généré un graphique automatiquement avec un code en VBA. J'ai un code (que j'ai adapté à mon cas) qui fonctionne, cependant je n'arrive pas à utiliser une variable pour déterminer l'indice de la dernière case de ma série de données.
Voici mon code et ainsi que le fichier excel sur le quel je souhaite l'appliquer. J'ai mis en gras les parties du code que je souhaite remplacer par des variables.
Merci d'avance pour vos réponses.
Private Sub Creation_graphique()
Set F1 = Worksheets("feuil1")
Dim N%
Application.ScreenUpdating = False
With Worksheets("Feuil1")
N = .Cells(.Rows.Count, 1).End(xlUp).Row
Charts.Add
With ActiveChart
.SetSourceData Source:=F1.Range("K13")
.SeriesCollection.NewSeries
With .SeriesCollection(1)
.ChartType = xlXYScatterLinesNoMarkers
.XValues = F1.[B1:B390]
.Values = F1.[H1:H390]
.Name = "V en cm/s"
End With
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.ChartType = xlXYScatterLinesNoMarkers
.XValues = F1.[B1:B390]
.Values = F1.[J1:J390]
.Name = "A en cm²/s²"
End With
.Location Where:=xlLocationAsObject, Name:=F1.Name
End With
ActiveChart.Parent.Name = "Graphique"
With ActiveSheet.Shapes("Graphique")
.Left = 50
.Top = 50
.Width = 1000
.Height = 500
End With
End With
[A1].Select
End Sub
Bonjour,
Une proposition à étudier et à adapter à tes besoins.
Cdlt.
Public Sub Create_Chart()
Dim ws As Worksheet
Dim lastRow As Long, lColX As Long, lColY1 As Long, lColY2 As Long
Dim rngX As Range, rngY1 As Range, rngY2 As Range
Dim objChart As ChartObject
Application.ScreenUpdating = False
Set ws = ActiveWorkbook.Worksheets("Feuil1")
On Error Resume Next
ws.ChartObjects("Graphique").Delete
On Error GoTo 0
With ws
lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
lColX = 2: lColY1 = 8: lColY2 = 10
Set rngX = .Cells(1, lColX).Resize(lastRow)
Set rngY1 = .Cells(1, lColY1).Resize(lastRow)
Set rngY2 = .Cells(1, lColY2).Resize(lastRow)
Set objChart = .ChartObjects.Add(Left:=50, Top:=50, Width:=1000, Height:=500)
objChart.Name = "Graphique"
End With
With objChart.Chart
.ChartType = xlXYScatterLinesNoMarkers
.SeriesCollection.NewSeries
.SeriesCollection(1).XValues = rngX
.SeriesCollection(1).Values = rngY1
.SeriesCollection(1).Name = "V en cm/s"
.SeriesCollection.NewSeries
.SeriesCollection(2).XValues = rngX
.SeriesCollection(2).Values = rngY2
.SeriesCollection(2).Name = "A en cm²/s²"
End With
Set objChart = Nothing
Set rngY2 = Nothing: Set rngY1 = Nothing: Set rngX = Nothing
Set ws = Nothing
End Sub
y
Merci, mais j'ai réussi a trouver une solution.
With Worksheets("Feuil1")
Charts.Add
With ActiveChart
.SetSourceData Source:=F1.Range("K13")
.SeriesCollection.NewSeries
With .SeriesCollection(1)
.ChartType = xlXYScatterLinesNoMarkers
.XValues = F1.Range("B1:B" & N).Value
.Values = F1.Range("H1:H" & N).Value
.Name = "V en cm/s"
End With
.SeriesCollection.NewSeries
With .SeriesCollection(2)
.ChartType = xlXYScatterLinesNoMarkers
.XValues = F1.Range("B1:B" & N).Value
.Values = F1.Range("J1:J" & N).Value
.Name = "A en cm²/s²"
End With
.Location Where:=xlLocationAsObject, Name:=F1.Name
End With
ActiveChart.Parent.Name = "Graphique"
With ActiveSheet.Shapes("Graphique")
.Left = 50
.Top = 50
.Width = 1000
.Height = 500
End With
End With