IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Décalage de données dans un graphique [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    ingénieur de projets
    Inscrit en
    Octobre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : ingénieur de projets

    Informations forums :
    Inscription : Octobre 2017
    Messages : 8
    Par défaut Décalage de données dans un graphique
    Bonjour,

    J'ai, dans un fichier, une feuille dédiée aux graphiques. Ceux-ci présentent des données au jour le jour. L'axe X est celui des dates. Leur emprise horizontale est actualisée chaque jour de manière à ce qu'elle aille de 10j en arrière (par rapport à aujoud'hui) jusqu'à 1j en avant par une macro.

    Cette macro fonctionne très bien sauf sur certains graphiques, où des séries de données se retrouvent décalées (les données d'aujourd'hui sont placées sur les marques de demain en axe X).
    Seule solution que j'ai trouvé pour le moment est de fermer le classeur Excel puis de le rouvrir, ce qui résout le problème.

    Est-ce que ce problème vient de mon code (qui fonctionne pourtant bien pour les autres graphiques) ? Ou d'Excel ? Est-il possible d'introduire une fonction qui corrigerait cela ? Comme par exemple un rafraîchissement ou quoi.

    D'avance merci, voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    Sub graphiques()
     
        Dim nombre As Integer, _
            i As Integer, _
            mySeriesPoint As Object, _
            myChart As Object
     
        lim = 3
        nombre = ThisWorkbook.Sheets("Activity report").Range("H11").value
        i = 1
     
        If ThisWorkbook.Sheets("Workbook Settings").Range("B31") <> "" Then
            lim = ThisWorkbook.Sheets("Workbook Settings").Range("B31")
        End If
     
        If ThisWorkbook.Sheets("Workbook Settings").Range("B32") <> "" Then
            nbAvant = ThisWorkbook.Sheets("Workbook Settings").Range("B32")
        End If
     
        For Each Chart In ThisWorkbook.Sheets("Follow-up report").ChartObjects
            Set myChart = Chart.Chart
     
            Do While i <= myChart.ChartGroups(1).FullCategoryCollection.Count
     
                On Error Resume Next
                Set mySeriesPoint = myChart.ChartGroups(1).FullCategoryCollection(i)
     
                If Err.Number <> 0 Then
                    If i > nombre + lim Then
                        Exit Do
                    ElseIf i < nombre + lim Then
                        MsgBox "Trying to show data that's not in the data range of the chart named '" & myChart.Name & "'. Either expand selection or reduce numbers of days ahead in 'Workbook Settings' sheet.", , "Out of range error"
                        Exit Do
                    End If
                End If
     
                If i <= nombre + lim And i >= nombre - nbAvant Then
                    mySeriesPoint.IsFiltered = False
                Else
                    mySeriesPoint.IsFiltered = True
                End If
                i = i + 1
     
            Loop
            i = 1
        Next Chart
    End Sub

  2. #2
    Membre habitué
    Homme Profil pro
    ingénieur de projets
    Inscrit en
    Octobre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : ingénieur de projets

    Informations forums :
    Inscription : Octobre 2017
    Messages : 8
    Par défaut
    Personne n'en sait rien ou alors ma question est déjà tombée dans les méandres de l'oubli ?

    Personne n'a jamais eu ce genre de problème ? Personne n'a même une idée d'où ça pourrait venir?

  3. #3
    Membre habitué
    Homme Profil pro
    ingénieur de projets
    Inscrit en
    Octobre 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : ingénieur de projets

    Informations forums :
    Inscription : Octobre 2017
    Messages : 8
    Par défaut
    Bon je vois que le débat déchaîne les passions, mais ne vous en faites pas, j'ai trouvé la solution.

    Le problème venait des ChartGroups qui, si j'ai bien compris, regroupent les séries de données du même type (ligne, barre, etc.)

    Il m'a donc suffi de boucler sur les chartgroups à l'intérieur de ma boucle sur les charts et tout fonctionne !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Décalage des données dans un graphique sous word
    Par chapodhor dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/08/2014, 10h59
  2. Réponses: 0
    Dernier message: 03/05/2010, 14h55
  3. Réponses: 6
    Dernier message: 22/06/2009, 15h26
  4. [Toutes versions] Construction d'un graphique (insertion des données dans le graphique)
    Par Aurelangelo dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/04/2009, 18h08
  5. Filtrer des données dans un graphique Excel
    Par ExcelNewUser dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/06/2007, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo