Pivot - refresh automatique

Bonjour à tous,

Je deviens dingue alors que ça doit être si simple .... je voudrais rafraîchir automatiquement mes pivot lorsque je modifie la data source. J'ai donc été vérifier la procédure qui semble effectivement très simple, j'ai tout essayé et rien ne fonctionne :

Private Sub Worksheet_Change(ByVal Target As Range)

ActiveWorkbook.RefreshAll

ou

ActiveWorkbook.RefreshAll

ou

ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh (en adaptant le nom du pivot bien entendu)

Rien ne se passe

Merci pour tout tuyau

Fran

Bonjour

Le rafraichissement ne se fait pas ou bien ne prend pas en compte les données ajoutées ou modifiées ?

De façon générale il vaut mieux le faire à l'activation d ela feuille qui porte le(s) TCD(s) qu'à la saisie et il faut contrôler où se passe la saisie...

Bonjour Chris

Je modifie le Tableau de données (qui est sur la meme feuille que le pivot) et rien ne bouge dans mes pivots.

C'est important car c'est une gestion de projets avec plein de taches que je modifie tout le temps et faire des refresh manuels c'est lourd surtout quand on a plusieurs pivots liés à la meme base de données.

Bonjour,

Quelle est la source ?

Un tableau (structuré), une plage de cellules…

Je te propose un exemple avec un tableau structuré, unque source pour l'ensemble des TCDs.

L'actualisation s'effectue lors d'une modification dans la colonne Quantité.

A te relire.

Cdlt.

15fran.xlsm (29.36 Ko)
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [T_Source[Quantit?]]) Is Nothing Then
        With ActiveWorkbook.PivotCaches(1)
            .MissingItemsLimit = xlMissingItemsNone
            .Refresh
        End With
    End If
End Sub

Bonjour Jean-Eric,

Merci pour ta réponse .... maintenant je suis amenée à changer plusieurs plages et pas seulement 'quantité' si je reprends ton exemple.

Je te joins une partie de mon fichier, je n'ai qu'1 pivot mais j'en aurai plusieurs et dans mon tableau source, quasiment toutes les colonnes seront utilisées dans divers pivots donc il faudrait une règle plus générale qui dès qu'une cellule de data change et est liée à un pivot, que ce/ces pivots soient directement adaptés

Belle journée

Bonjour,

Un nouvel exemple.

Tu dois absolument mettre des données sous forme de tableau !...

Dans le ruban, recherche Mettre sous forme de tableau.

Ceux ci sont dynamiques, et conservent les formules, les MFCs,, etc...

Il y a des commentaires dans la procédure.

A te relire.

Cdlt.

Mille merci Jean-Eric,

J'ai trouvé sans devoir transformer en tableau.

en fait il 'suffit' d'ouvrir le développer et dans la fenetre de droite en haut tu choisit 'worksheet' au lieu de général par défaut et là il t'indique ceci

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Tu n'as plus qu'à rajouter ta ligne de prog entre et si tu veux rafraichir plusieurs pivots tu rajoutes autant de lignes

PivotTables("pivotstats1").RefreshTable

PivotTables("pivotstats2").RefreshTable

Bàt

Bonjour

Et, le lien que tu as mentionné, et Jean Eric indiquent qu'il faut mettre sous forme de tableau mais tu t'obstines...

Avec près de 12000 posts au compteur, tu devrais comprendre qu'il est loin d'être débutant mais tu inverses les rôles et veux lui expliquer comment faire ce qui montre que tu n'as pas compris son code...

Le problème n'est pas l'actualisation proprement dite mais la prise en compte des nouvelle lignes....

Tu n'as d'ailleurs par répondu à ma question à ce sujet hier à 14:40... ce qui est un manque de politesse...

1. je t'ai répondu mais je n'ai peut-être pas compris ta question ... sorry je ne suis qu'une blonde écervelée

2. je n'ai manqué de respect envers personne, en l'occurrence c'est toi qui fait preuve de grossièreté. J'avais bien compris le post de Jean Eric, le but est bien d'apprendre et de partager non ? donc ayant trouvé réponse à ma question, je partage.

Franchement des réactions comme les tiennes ne sont pas encourageantes et confortent des personnes comme moi d'une niveau moyen (mais qui veux faire mieux) à venir frayer avec l'élite dont tu sembles faire partie

Merci à Jean-Eric en tout cas

Re

1. je t'ai répondu mais je n'ai peut-être pas compris ta question ... sorry je ne suis qu'une blonde écervelée

J'ai demandé si tu modifiais ou ajoutais des données, donc rien de très technique dans ma question...

donc ayant trouvé réponse à ma question, je partage.

Le problème c'est que le code de Jean Eric marche parfaitement en respectant les précautions nécessaires à tout traitement automatisé tandis que le code que tu proposes n'est pas bon !

Il va déclencher des mises à jour dès qu'on cliquera dans une cellule même sans avoir apporté la moindre modification aux cellules...

De quoi planter Excel si cela se répète n fois de suite...

Re,

Bonjour Chris,

@ Fran,

Ta procédure n'est pas bonne et pour 2 raisons :

1 - Tu actualises les TCDs à chaque sélection de cellule (!?)

2 - Si tu n'indiques pas l'origine des TCDs, elle ne peut pas fonctionner.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    PivotTables("pivotstats1").RefreshTable
    PivotTables("pivotstats2").RefreshTable
End Sub

Maintenant si pivotstats1 et pivotstat2 ont la même source, il n'est pas utile de dupliquer les lignes. 1 suffit, et sans nommer le TCD.

Bon sinon, la mise en forme sous tableau est primordiale !...

Pour terminer, je pense que tu pas lu et/ou pas compris les commentaires dans la procédure.

Cdlt.

Ok je vais regarder ça de plus près.

Merci bcp

Rechercher des sujets similaires à "pivot refresh automatique"