Tableau croisé et mise à jour

Bonjour,

J'aimerais savoir s'il est possible que la mise à jour des tableaux croisés dynamique se réalisent automatiquement (à l'ouverture du fichier par exemple).

Merci d'avance.

Bonjour,

Si tu as plusieurs TCD, tu peux placer ce code en VBA dans THISWORBOOK.

Private Sub Workbook_Open()
' Macro par DAn le 10/04/08
With Application
     .ScreenUpdating = False
     .CommandBars("PivotTable").Visible = False
End With
ThisWorkbook.Refreshall
End Sub

Si tu n'as qu'un seul TCD on peut aussi procéder autrement.

Si ton TCD comporte des dates regroupées par mois, il faut veiller à ce que toutes les dates soient au bon format dans ta base de données.

Amicalement

Dan

Merci beaucoup,

Je n'ai encore jamais appris à utiliser VBA, mais pourrais-tu juste m'expliquer

à quoi correspond le :

.ScreenUpdating = False

et le :

.CommandBars("PivotTable").Visible = False

Sinon quel est l'autre méthode pour un seul TCD ?

Amicalement,

Zeugzeug

Ah oui encore une petite chose,

est-il possible de changer ce code pour que la mise à jour soit effectuée à chaque fois que je sauvegarde mon fichier ?

re,

.ScreenUpdating = False --> Evite le rafraichissement de l'écran. En gros tout se passe sans que tu vois quelque chose à l'écran.

.CommandBars("PivotTable").Visible = False --> Permet de ne pas avoir la barre d'outils TCD affichée à l'écran. Je mets cette instruction car il m'est souvent arrivé de la voir apparaitre lors des mises à jour de TCD.

Pour un seul TCD, je fais ceci :

Private Sub Workbook_Open()
' Macro faite par Dan le 10/04/08
Dim pvttable As PivotTable
With Application
     .ScreenUpdating = False
     .CommandBars("PivotTable").Visible = False
End With
Set pvttable = Worksheets("feuille").Range("A3").PivotTable
pvttable.RefreshTable
Application.ScreenUpdating = True
End Sub

avec :

Feuille = Le nom de ta feuille contenant le TCD

A3 = la première cellule de ton TCD en haut à gauche

L'avantage étant que tu décides quel TCD est à mettre à jour. Bien entendu cela suppose que tu n'as pas lié d'autre TCD à celui-là.

Dan

Merci énromément Dan !

Et est-il possible de réaliser cet mise à jour automatique à chaque fois qu'on sauvegarde le fichier (et non plus à son ouverture) ?

Bonjour,

Remplace :

Private Sub Workbook_Open()

par :

Private Sub Workbook_BeforeClose()

Amicalement

Nad

Merki Nad !

C'est marrant ça vous êtes deux à utiliser ce login où bien tu à deux surnom !

Nous sommes bien deux

Nad

J'ai remplacé par Private Sub Workbook_BeforeClose()

mais j'ai une "erreur de compliation : la déclaration de la procédure ne correspond pas à la description de l'événement ou de la procédure du même nom" au moment où je ferme le fichier.

De plus quand j'enregistre il ne se passe rien.

Amicalement,

zeugZeug

re,

Tu es sur d'avoir placé ta macro dans THISWORKBOOK ?

Le cas échéant, montre moi la macro complète que tu utilises.

A te relire

Dan

re,

Oui je suis bien dans ThisWorkbook,

voici la macro complète :

Private Sub Workbook_BeforeClose()

' Macro par DAn le 10/04/08

With Application

.ScreenUpdating = False

.CommandBars("PivotTable").Visible = False

End With

ThisWorkbook.RefreshAll

End Sub

Merci d'avance,

Zeugzeug

re,

Peut être une bête question mais tes macros sont activées ?

Vérifie par menu / Outils / sécurité et coches la case "moyen"

A la fermeture de ton fichier excel te demandera si tu veux sauvegarder, donc pas besoin d'enregistrer avant de le fermer

Dan

Oui oui les macros sont bien activé, je comprends pas.

Pourtant ce code là marche très bien lui :

Private Sub Workbook_Open()

' Macro par DAn le 10/04/08

With Application

.ScreenUpdating = False

.CommandBars("PivotTable").Visible = False

End With

ThisWorkbook.RefreshAll

End Sub

Et dès que je change le "Open" en autre chose "erreur de compilation !"

Et sinon à la place du "BeforeClose" n'existe t'il pas quelque chose comme AfterSave...car je ne souhaite pas fermer mon fichier je veux juste mettre à jour les tableaux croisé dès que je modifie une donné sur mes feuilles...

Bonne soirée,

Zeugzeug

re,

Bon j'ai pas ton fichier mais essaye avec --> Private Sub Worksheet_Activate() ou lieu de Open.

Place ta macro en VBA dans la feuille où se trouve ton TCD (pas dans THISWORKBOOK bien sûr)

A te relire

Dan

Merci vous êtes géniaux ! Pb résolu !

Zeugzeug

Bonjour,

pour rafraichir tes TCD lors de l'enregistrement, place le code de Dan dans le Before_save

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
' Macro par DAn le 10/04/08
With Application
.ScreenUpdating = False
.CommandBars("PivotTable").Visible = False
End With
ThisWorkbook.RefreshAll
End Sub
Rechercher des sujets similaires à "tableau croise mise jour"