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
Partager