Macro automatique sur onglet actif

Bonjour,

Je souhaiterai pour voir activer une macro à l'ouverture d'un onglet. Je suis débutante en VBA et je cherche à améliorer mes fichiers pour gagner en efficacité.

J'ai plusieurs 2 onglets avec des données qui sont compilés dans 2 onglets TCD et une feuille récap qui est alimenter par les données dans les TCD.

Je souhaiterai qu'à chaque fois que j'arrive sur ma feuille récap, je n'ai pas besoin de passer sur mes feuilles TCD pour les mettre à jour.

Voici la macro (installé sur Visual Basic sur la feuille en question):

Sub Maj_TCD_Classeur()

'

' Maj_TCD_Classeur Macro

'

Sheets("TCD AFFAIRES").Select

Range("B69").Select

ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh

Sheets("TCD FACT").Select

Range("C24").Select

ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh

Sheets("PREVI 2020").Select

End Sub

Cela fonctionne si je met un bouton et que j'active la macro, mais ça ne fonctionne pas en automatique. Qu'est-ce que j'ai oublié ou qu'est-ce qui cloche?

Merci pour votre aide.

Hello,

Il faut utiliser ce qu'on appelle un "Evénement".

En l’occurrence ici, tu veux utiliser un evénement Activate de ta feuille.

Il faut que tu double clic sur la feuille en question en haut à gauche dans VBE.

Une fois que tu as double cliqué, il faut selectionner "Worksheet" dans la liste deroulante la + à gauche tout en haut de l'endroit où tu saisis ton code. Il faut que tu sélectionnes sur la la liste déroulante la + à droite "Activate".

Puis tu indiques ton code.

R@g

Merci,

C'est ce qui a été fais (si j'ai bien tout compris), mais ca ne fonctionne pas. Il m'indique une erreur 1004

Alors que quand je fais la meme macro activée à partir d'un bouton, ça fonctionne parfaitement...

13doc1.docx (408.21 Ko)

Hello,

Pour rafraîchir tous les tcd de la feuille :

ActiveSheet.RefreshAll

Pour rafraîchir 2 tcd bien précis (qui se nomment "Tableau croisé dynamique1" & "Tableau croisé dynamique2") :

ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh
ActiveSheet.PivotTables("Tableau croisé dynamique2").PivotCache.Refresh

Pas besoin d'autres lignes de code

R@g

Rechercher des sujets similaires à "macro automatique onglet actif"