Bonjour, utilisant beaucoup de tableaux croisés dynamiques (TCD) je cherche à automatiser leur actualisation afin de n'avoir qu'un seul bouton à cliquer au lieu de tous les actualiser un à un.

Voilà ce que j'ai fait jusqu'à présent, qui me semble marcher pas trop mal hormis deux problèmes que je n'arrive pas à résoudre.

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
Sub MiseAJour()
    'Boucle sur toutes les feuilles du fichier
    MsgBox ("Nombre de feuilles : " & Sheets.Count)
    For x = 1 To Sheets.Count
 
        ' Sélection (et activation) de la feuille en cours
        Sheets(x).Select
 
        If Sheets(x) Is Charts Then
            MsgBox ("C'est un graphique")
        Else
            'Gestion des erreurs
            On Error GoTo GestionErreur
 
            Dim nbPivotTables As Integer
            nbPivotTables = ActiveSheet.PivotTables.Count
 
            ' Actualisation des tableaux dynamiques contenus dans la feuille
            For y = 1 To nbPivotTables
                ActiveSheet.PivotTables(y).RefreshTable
            Next y
        End If
 
    Next x
    MsgBox ("Actualisation de tous les tableaux dynamiques effectuée")
 
    End
GestionErreur:
    MsgBox ("Il n'y a pas de tableau dynamique dans votre onglet")
 
 
End Sub
Premier problème : le "if Sheets(x) Is Charts" ne semble pas marcher... je ne passe jamais dans la boucle pourtant j'ai essayé avec un fichier tout bidon composé d'un onglet graphique, un onglet avec un TCD et un onglet avec juste les données. Et si je ne traite pas différemment les graphiques il renvoie une erreur qui m'arrêterait le processus puisque je crée un GestionErreur après.

Deuxième problème : je ne comprends pas pourquoi certaines fois il me crée une erreur lorsqu'il n'y a pas de TCD dans la page (renvoyant mon message d'erreur) et que d'autres fois il me met juste "MAJ effectuée" comme je lui précise à la fin de ma boucle for. J'ai essayé de voir dans quelles circonstances il me faisait l'un ou l'autre mais je n'arrive pas à déterminer qu'est-ce que je change.

Voila j'espère avoir été clair sur mes problèmes, merci de m'avoir lu