Actualisation automatique TCD via VBA

Bonjour,

Lorsque je clique sur l'onglet "BDD", je souhaiterais que mon TCD situé en onglet "TCD" s'actualise automatiquement. J'ai fais plusieurs recherches de code mais je n'y arrive pas. J'ai une erreur d'exécution 1004 qui s'affiche et je n'arrive pas à résoudre le problème. Je suis partis sur la méthode PivotTables suite à mes nombreuses recherches internet. Dans mon exemple je joins un fichier très basique dans lequel on viendra modifier les longueurs dans la BDD.

Pourriez-vous m'apporter un peu d'aide s'il vous plaît.

Merci d'avance

Bonsoir MidiPy31,

Je pense qu'il suffit d'ajouter ce code sur la feuille qui contient le TCD :

Private Sub Worksheet_Activate()

    Application.ScreenUpdating = False
    Me.PivotTables(1).PivotCache.Refresh

End Sub

Cordialement,

Bonsoir massari59264,

Merci pour ton retour.

J'ai fait le test. Si je laisse les deux codes, lorsque je clique sur l'onglet BDD, un message apparaît et m'indique une erreur "1004 : Impossible de lire la propriété PivotTables de la classe Worksheet"

En revanche si je ne garde que ton code pour l'onglet TCD ça fonctionne parfaitement mais uniquement lorsque l'on clique sur cet onglet.

Moi ce que je voudrais c'est que le TCD s'actualise lorsque l'on clique uniquement sur l'onglet BDD et non TCD. Par exemple, on commence par modifier la longueur dans l'onglet BDD, ensuite on clique sur l'onglet entrée/sortie et ensuite on reclique sur l'onglet BDD et c'est à ce moment là que le TCD doit s'actualiser, dès que l'on clique sur l'onglet BDD. Je ne veux pas être obligé d'ouvrir l'onglet TCD pour qu'il s'actualise.

Penses-tu pouvoir m'aider en modifiant le ou les codes ?

Merci par avance

bonjour le fil,

le TCD ne se trouve pas dans l'onglet "BDD", donc la faute principale est Activesheet au lieu de Sheets("TCD"). Mais je préfère ce code ou une copie dans le module de "TCD" (et alors activesheet ou Me est permis).

Private Sub worksheet_activate()
     Sheets("TCD").PivotTables("Tableau croisé dynamique1").RefreshTable
End Sub

Bonjour à tous,

Évidemment le code proposé était à placé sur le module TCD, j'aurais du le préciser (mince je l'avais fait pourtant lol)

Par contre je ne vois pas trop l'intérêt de mettre un code dans le module de la feuille "BDD" pour actualiser le TCD de la feuille "TCD",

Ceci étant dit effectivement le code proposé par BsAlv sur ce point fonctionne,

Cordialement,

Bonsoir massari59264, BsAlv

J'ai bien pris note de vos commentaires et propositions et après avoir corrigé mon fichier tout fonctionne. J'avais bien placé le code proposé dans le module TCD mais j'avais aussi laissé un mauvais code dans le module BDD ce qui renvoyait le code erreur et faisait planter Excel. Le fichier envoyé en exemple n'est pas le fichier original que j'utilise au quotidien. Dans le fichier original au fur et à mesure que je saisi des données dans l'onglet Entrée-Sortie, les longueurs dans l'onglet BDD s'actualisent mais à ce moment là le TCD doit aussi s'actualiser c'est pourquoi je voulais un code qui m'évite de cliquer sur l'onglet du TCD pour ensuite revenir sur l'onglet de la BDD. L'idée était d'avoir un raccourci et des informations à jour à l'instant T.

Dans tous les cas encore merci pour votre aide

Cordialement

Rechercher des sujets similaires à "actualisation automatique tcd via vba"