Pb d'actualisation sur graphe avec axe dynamique

Bonjour,

Avec un peu de retard.

Je vous joint cependant mon fichier

A tester évidemment...

Cordialement

A l'ouverture du fichier :

1 - Lancement mise à jour EDF

2- Création graphique avec les données à jour

nb : j'ai profité de ce post pour revoir la création des graphiques en VBA.

Option Explicit
Public Sub Graphique()

Dim X As Range  'Date
Dim Y As Range  'Instantané
Dim Plage As Range
Dim objChart As ChartObject
Dim ceJour As Date
Dim Hier As Date
Dim i As Integer
Dim j As Double

    With Application
        .DisplayAlerts = False
        .ScreenUpdating = False
    End With

    'On Error Resume Next
        'Worksheets("Graphique").ChartObjects("Instantané").Delete
    'On Error GoTo 0

'=================================================================================
ceJour = Date
Hier = ceJour - 1

    Worksheets("EDF").Activate

        Cells(1, 1).Select
        i = 0

        Do
        i = i + 1
        Loop While Cells(i, 1) > Hier
        Set X = Range(Cells(2, 1), Cells(i, 1))
        Set Y = Range(Cells(2, 5), Cells(i, 5))
        Set Plage = Union(X, Y)
'=================================================================================
    Set objChart = Worksheets(1).ChartObjects.Add( _
        Left:=10, Top:=10, _
            Width:=500, Height:=250)

    With objChart.Chart
        .ChartType = xlXYScatterLinesNoMarkers
        .SetSourceData Source:=Plage
        .Location Where:=xlLocationAsObject, Name:="Graphique"
        Worksheets("Graphique").ChartObjects(1).Name = "Instantané"
    End With
'=================================================================================
    ActiveSheet.ChartObjects("Instantané").Activate
    'Axe des abscisses (xlCategory)
            'Echelle
            ActiveSheet.ChartObjects("Instantané").Activate

            With ActiveChart.Axes(xlCategory, xlPrimary)
                .TickLabels.NumberFormat = "d/m h""h"";@"

                Select Case Worksheets("EDF").Cells(2, 10).Value
                    Case Is = "0-6"
                        j = 1 / 24 * 5
                    Case Is = "7-10"
                        j = 1 / 24 * 2
                    Case "10-14", "14-18"
                        j = 1 / 24 * 3
                    Case Is = "18-20"
                        j = 1 / 24 * 1
                    Case Else
                        j = 1 / 24 * 3
                End Select

                .MinimumScale = Worksheets("EDF").Cells(2, 1) - j
                .MaximumScale = Worksheets("EDF").Cells(2, 1) + 0.694 / 1000
                .MajorUnit = 1 / 24
                .MinorUnit = 1 / 48
                    With .Format.Line
                        .Visible = msoTrue
                        .Weight = 1
                        .ForeColor.ObjectThemeColor = msoThemeColorText1
                    End With
            End With
'=================================================================================
    'Axe des ordonnées (xlvalue)
            'Echelle
            With ActiveChart.Axes(xlValue, xlPrimary)
                .MajorUnit = 0.5
                .MinorUnit = 0.1
                .HasMinorGridlines = True
                With .Format.Line
                    .Visible = msoTrue
                    .Weight = 1
                    .ForeColor.ObjectThemeColor = msoThemeColorText1
                End With
            End With
'=================================================================================
    'Série de données
            With ActiveChart.SeriesCollection(1)
                .Smooth = False
                    With .Format.Line
                        .Visible = msoTrue
                        .Weight = 1.25
                    End With
            End With
'=================================================================================
    'Légende
    With ActiveChart
        .Legend.Delete
    End With
    'Titre
    With ActiveChart
        .HasTitle = True
        .ChartTitle.Characters.Text = Worksheets("EDF").Cells(2, 10)
            With .ChartTitle
                .Format.TextFrame2.TextRange.Font.Size = 11
            End With
    End With
'=================================================================================
    Set Plage = Nothing
    Set objChart = Nothing

    With Application
        .DisplayAlerts = True
        .ScreenUpdating = True
    End With

End Sub
17forum4.zip (21.24 Ko)

Pour Jean-Eric

Je vois que j'ai affaire aux virtuoses du VBA et je suis un peu dépassé.

Néanmoins j'ai testé, le fichier bug à "msoThemeColorText1" variable non défini.

Re,

Je pense que c'est un problème lié à ta version d'Excel.

Supprime la ligne du code, et tentes un nouvel essai.

Cordialement.

Re,

Mise à jour du code avec nouvelle réactualisation EDF

J'ai supprimé la mise à l'echelle des abscisses et la ligne de code qui buggait chez toi.

Qu'en penses-tu?

Cordialement

23forum5.zip (36.62 Ko)

Merci Jean-Eric

J'ai supprimé quelques lignes supplémentaires, mais maintenant cela marche.

Je me suis éloigné de mon application de départ, maintenant il faut que j'applique les bonnes choses avec sérénité tout en essayant de comprendre ce que je fais.

Je n'hésitera pas à solliciter le forum ci besoin.

Bravo Excel-Pratique

Rechercher des sujets similaires à "actualisation graphe axe dynamique"