Graphique à plage de données de taille variable en VBA

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

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
Rechercher des sujets similaires à "graphique plage donnees taille variable vba"