Problème de graphique à plage variable

Bonjour à tous,

Voici mon problème :

J'ai créé un feuille avec un graphique donc les plages sont variables. Pour cela j'ai créé un nom qui utilise la fonction DECALER.

Le graphique fait ensuite référence à ce nom comme axe des abscisses.

Ainsi, lorsque la plage est modifiée, le graphique s'adapte automatique à la plage.

Je souhaite pouvoir dupliquer de manière automatique plusieurs fois cette feuille avec différentes données.

L'action déplacer/copier fonctionne très bien mais le graphique ne garde pas en mémoire la plage dynamique (et colle la plage correspondante mais fixe).

J'ai utilisé l'enregistreur de macro pour avoir un code que voici :

Sheets("Ajustement_2").ChartObjects("Graphique 1").Activate

Sheets("Ajustement_2").ActiveChart.FullSeriesCollection(1).XValues = "==Ajustement_2!AxeH2"

Ajustement_2 le nom de ma feuille et AxeH2 le nom de ma plage variable.

Néanmoins lorsque je lance le code, j'ai une erreur 438 "propriété ou méthode non gérée".

Auriez-vous une idée pour débloquer ma situation ?

Merci beaucoup

Bonjour,

Merci de joindre un fichier à ta demande.

Cdlt.

Bonjour Jean-Eric,

Voici le fichier.

Cdt,

12test.xlsm (627.81 Ko)

bonjour

salut Jean-Eric

pour tracer des courbes interactives, rien ne vaut Power BI Desktop gratuit

allez, en moins de 10 minutes, j'ai fait ceci

il faut que tu télécharges PBI Desktop

et la merveille opère

pas de VBA

comparaison entre les années, par mois

on peut comparer les énergies, si tu remplis les cellules

10toto2.pbix (79.81 Ko)

Re,

Pour commencer, ta procédure de création de graphique revue.

A te relire.

Cdlt.

Public Sub Create_Chart()
Dim ws As Worksheet
Dim objChart As ChartObject
Dim rCell As Range, rngX As Range, rngY As Range, rngY2
Dim pos As Long, pos2 As Long
Dim strTitle As String

    Set ws = ActiveSheet

    On Error Resume Next
    ws.ChartObjects(1).Delete
    On Error GoTo 0

    With ws
        strTitle = "Ajustement des consommations d'énergie : " & .Cells(15, 3).Value
        Set rCell = .Cells(11, 35)
        pos = VBA.Round((.Cells(19, 4) - .Cells(18, 4)) / 365 * 12, 0)
        pos2 = VBA.Round((.Cells(18, 4) - .Cells(6, 4)) / 365 * 12, 0)
        With rCell
            Set rngX = .Offset(pos2).Resize(pos)
            Set rngY = .Offset(pos2, 5).Resize(pos)
            Set rngY2 = .Offset(pos2, 15).Resize(pos)
        End With
        .Names.Add Name:="axe_date", RefersTo:=rngX
        .Names.Add Name:="conso_réelle", RefersTo:=rngY
        .Names.Add Name:="conso_ajustée", RefersTo:=rngY2
        Set rCell = .Cells(4, 8)
        Set objChart = .ChartObjects.Add(rCell.Left, rCell.Top, 700, 250)
        objChart.Name = "Graphique_1"
        With objChart.Chart
            .ChartType = xlLine
            .HasLegend = True
            .HasTitle = True
            .ChartTitle.Text = strTitle
            .SeriesCollection.NewSeries
            With .SeriesCollection(1)
                .Name = "Conso_réelle"
                .Values = rngY
                .XValues = rngX
            End With
            .SeriesCollection.NewSeries
            With .SeriesCollection(2)
                .Name = "Conso_ajustée"
                .Values = rngY2
                .XValues = rngX
            End With
        End With
    End With

End Sub

Bonjour,

@jmd : merci pour l'idée mais je souhaitais rester sur Excel.

@Jean-Eric :

Je n'imaginais pas la solution comme ça mais cela répond bien à mon problème.

Merci beaucoup

Rechercher des sujets similaires à "probleme graphique plage variable"