Graphique à plages de donnée source variables

Bonjour à tous et à toutes,

Je vais essayer d'être concis en espérant que vous ne vous moquerez pas de moi. Je débute vraiment en VBA.

"Première feuille" : des tableaux avec des nombre de ligne par colonne qui varient

"Deuxième feuille" : des graphiques qui varient en fonction des tableaux de la "Première feuille"

Donnée source pour cet exemple : Colonne A,B et C

J'ai un autre problème concernant un autre graphique (exactement le même format mais pas les mêmes données source) qui prend comme données sources des colonnes qui ne se suivent pas : Colonne A et D

Je penses que tout est une question de syntaxe Range(), mais là je perds beaucoup de temps

Const sheDonnéesSource As String = "TRAITEMENT_DONNEES"
Const sheDonnéesAcceuil As String = "GRAPHIQUE"

Dim chGraphC         As Chart
Dim rPlageAcceuilC   As Range
Dim rPlageSourceC    As Range
Dim N%

With Sheets(sheDonnéesAcceuil)
 N = .Cells(.Rows.Count, 1).End(xlUp).Row
    Set rPlageAcceuilC = Sheets(sheDonnéesAcceuil).Range("B29:Q56")
    Set chGraphC = .ChartObjects.Add(rPlageAcceuilC.Left, rPlageAcceuilC.Top, _
    rPlageAcceuilC.Width, rPlageAcceuilC.Height).Chart
    Set rPlageSourceC = Sheets(sheDonnéesSource).Range("A:A,B:B,C:C" & N)

End With

With chGraphC
    .ChartType = xlColumnClustered
    .SetSourceData Source:=rPlageSourceC, PlotBy:=xlColumns
    .Legend.Position = xlLegendPositionBottom
End With

J'espère que vous prendrai plaisir à m'aider.

Bien à vous,

Tipsy

bonjour

essaie ceci, exemple de syntaxe range

Set rPlageSourceC = Sheets(sheDonnéesSource).Range("A1:A" & n & ",B1:B" & n & ",C1:C" & N)

Bonsoir,

Il serait judicieux de joindre un petit fichier à ta demande.

Cdlt.

Bonsoir à tous !

Plus d'interruption dans la macro avec ton code h2so4, mais je n'obtiens pas ce que je veux pour autant

Je vous joints un exemple pour illustrer mon propos

Bonne année !

Bonjour,

Un début de réponse à adapter.

Cdlt.

Option Explicit

Public Sub Create_Chart()
Dim wb As Workbook
Dim wsData As Worksheet, wsChart As Worksheet
Dim objChart As ChartObject
Dim N As Long
Dim rngData As Range, rngChart As Range

    Set wb = ActiveWorkbook
    Set wsData = wb.Worksheets("TRAITEMENT_DONNEES")
    Set wsChart = wb.Worksheets("GRAPHIQUE")

    On Error Resume Next
    wsChart.ChartObjects("Graphique 4").Delete
    On Error GoTo 0

    With wsData
        N = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
        Set rngData = wsData.Range("A1:C" & N)
    End With

    With wsChart
        Set rngChart = .Range("B29:Q56")
        Set objChart = .ChartObjects.Add(rngChart.Left, rngChart.Top, _
                                         rngChart.Width, rngChart.Height)
    End With

    objChart.Name = "Graphique 4"

    With objChart.Chart
        .ChartType = xlColumnClustered
        .SetSourceData Source:=rngData, PlotBy:=xlColumns
        .Legend.Position = xlLegendPositionBottom
    End With

End Sub

Bonjour Jean Eric,

Je vous remercie énormément, cela réponds parfaitement à mes besoins !

J'ai une toute dernière question : Comment faire exactement le même graphique mais en prenant la colonne A et la colonne D sans prendre les colonne B et C ?

Bonne année à vous !

Bonjour,

Essaie ainsi :

With wsData
        N = .Cells(.Rows.Count, 1).End(xlUp).Row - 1
        'Set rngData = .Range("A1:C" & N)
        Set rngData = Union(.Range("A1:A" & N), .Range("D1:D" & N))
    End With

Super ! Merci beaucoup, ça fonctionne très bien.

Il faut que je retire le -1 après Row pour avoir la dernière ligne de mon tableau source.

Bonne continuation !

Rechercher des sujets similaires à "graphique plages donnee source variables"