Automatiser la MAJ d'un tableau croisé dynamique en VBA

safety147

XLDnaute Nouveau
Bonjour,

Je suis en train de créer un tableau de bord mensuel se mettant à jour quotidiennement via des Tableaux Croisés Dynamique (TCD).

Ma problématique :
- automatiser la mise à jour des filtres dans mes TCD.

Ce que je n'arrive pas à faire :
Automatiser la mise à jour des filtres du rapport via une liste pré-définit.

Exemple :
Liste des noms à activer dans mon filtre :
- titi
- tata
- toto
- tutu

Problème, le 5 du mois "tutu" n'existe pas dans ma plage de données sources et j'ai une erreur VBA qui apparaît.

Voici le code VBA utilisé :
Sub Macro3()
ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Groupe"). _
CurrentPage = "(All)"
With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Groupe")
.PivotItems("toto").Visible = True
.PivotItems("titi").Visible = True
.PivotItems("tata").Visible = True
.PivotItems("tutu").Visible = True
End With
End Sub


Ma question (enfin me direz-vous) :
Est-il possible de définir une liste de "nom" dans une autre feuille pour automatiser la mise à jour du filtre (ce qui m'arrangerait car j'ai plus de 50 TCD avec des filtres différents), ou une solution avec une modification de mon code ?

En vous remerciant par avance de votre aide.

En pièce jointe, ce que je voudrais faire.
Encore merci.
 

Fichiers joints

Dernière édition:

BrunoM45

XLDnaute Barbatruc
Re : Automatiser la MAJ d'un tableau croisé dynamique en VBA

Bonsoir Safety147,

Pour ton problème 1 il suffit d'ajouter une gestion d'erreur dans le code
Pour la liste des noms, il suffit de définir une plage dans une autre feuille et d'utiliser son nom
Code:
Sub Macro3()  Dim Cel As Range
' Macro3 Macro
    ActiveSheet.PivotTables("Tableau croisé dynamique1") _
      .PivotFields("Groupe").CurrentPage = "(All)"
    On Error Resume Next
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("Groupe")
      For Each Cel In Range("ListeNoms")
        .PivotItems(Cel.Value).Visible = True
      Next Cel
    End With
    On Error GoTo 0
End Sub
A+
 

Fichiers joints

Dernière édition:

safety147

XLDnaute Nouveau
Re : Automatiser la MAJ d'un tableau croisé dynamique en VBA

Bonjour BrunoM45,

Pour beaucoup pour ton aide.
Je vais tester cela dès demain.

A+
 

safety147

XLDnaute Nouveau
Re : Automatiser la MAJ d'un tableau croisé dynamique en VBA

Re-bonjour BrunoM45,

Je n'ai pu m'empêcher de tester dès ce soir, et cela fonctionne à merveille : un grand merci car cela va me faire gagner un temps fou au quotidien.

D'où ma deuxième question :
Est-il possible d'avoir plusieurs listes dans une même feuille et de faire appel à cette liste par le nom donnée à la colonne.
Si je reprend ton fichier dans la feuille "Liste" :
- En A1 = Noms à Filter
- et j'ai ajouté en C3 = Date

Cela serait plus à facile à gérer, car j'ai une cinquantaine de TCD dans mon fichier excel.

Merci.
Voir la pièce jointe Safety147_Exemple.xlsm
 

Fichiers joints

safety147

XLDnaute Nouveau
Re : Automatiser la MAJ d'un tableau croisé dynamique en VBA

Bonsoir BrunoM45,

Après avoir relu le code je me suis aperçu que "ListeNoms" faisait appel à une liste dans excel et non appel à une page.
Donc mon dernier post n'a pu lieu d'être.

Désolé pour ce néophisme... :eek:

Encore Merci.

A+
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas