Bonjour à tous,

J'aimerais automatiser l'affichage et le masque des détails d'un champs dans un Tableau Croisé Dynamique.

Manuellement je passe par l'onglet données -> menu plan -> Afficher / Masquer mais j'aimerais mettre à disposition un bouton en haut de la feuille (plus rapide et plus simple pour les utilisateurs finaux).

J'ai donc écris dans une premier temps les deux codes suivants (utilisation de l'enregistreur de macro et nettoyage) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
Sub Masquer_Details()
    ThisWorkbook.Sheets("Mafeuille").PivotTables("MonTCD").PivotFields("MonChamps").ShowDetail = False
End Sub
 
Sub Afficher_Details()
    ThisWorkbook.Sheets("Mafeuille").PivotTables("MonTCD").PivotFields("MonChamps").ShowDetail = True
End Sub
Cela fonctionne très bien mais deux macro impliquent deux boutons. Or j'aimerais un seul bouton pour passer d'un état à l'autre.
J'ai donc écris le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
Sub test()
    Dim oPvtTbl As PivotTable, oPvtFld As PivotField
        Set oPvtTbl = ThisWorkbook.Sheets("Mafeuille").PivotTables("MonTCD")
        Set oPvtFld = oPvtTbl.PivotFields("MonChamps")
        With oPvtFld
            .ShowDetail = Not .ShowDetail
        End With
fin:
    Set oPvtTbl = Nothing
    Set oPvtFld = Nothing
End Sub
Etonnamment j'ai le message d'erreur :
Erreur d'exécution '1004':

Erreur définie pas l'application ou par l'objet
sur la ligne .ShowDetail = Not .ShowDetail
Je dois avouer ne pas comprendre cette erreur.



L'explorateur d'objets VBA m'indique ça :
Property ShowDetail As Boolean
Membre de Excel.PivotField
La propriété ShowDetail n'a donc pas l'air d'être en écriture seule.

Pendant le Débogage, la fenêtre des variables locales indique : <Erreur définie par l'application ou par l'objet> pour ShowDetail de l'objet oPvtFld


Merci d'avance pour le temps que vous passerez à m'expliquer ce comportement et m'apporter une solution.