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