Procédure événementielle déclenchée automatiquement par l'activation d'une feuille.

Edito

Dans ce cours, nous allons voir en détail un exemple d'utilisation des procédures événementielles. Le but de cette procédure est d'actualiser les TCDs de la feuille que l'on vient d'activer. Nous plaçons cet événement au niveau du classeur de façon à ce que chaque feuille réagisse de la même manière.

Fichier :

Pour accéder au fichier, cliquez ici.

Cours vidéo :

 

Tableau de synthèse :

Bonnes pratiques:

 

 
Ne pas utiliser d'accents dans le code VBA. Pour des développements à l'international, cela peut générer des problèmes de compatibilité.  
A la fin d'un End If (ou d'un Next), mettre un commentaire. Pour des structures assez complexes, cela permet de savoir où se termine la condition (ou la boucle).  
Nomenclature des variables Ici, nous choisissons L ou P pour une variable Locale ou Publique, puis nous ajoutons un descriptif relatif au type de la variable (par ex. S pour String ou I pour Integer) et finalement, une description de la variable elle-même.
Dans ce cas, nous utilisons aussi un "i" pour indiquer une variable utilisée dans une boucle.
 

Vocabulaire:

 

 
Private Sub Workbook_SheetActivate(ByVal Sh As Object) Procédure événementielle liée à l'activation d'une feuille.  
PivotTable Objet représentant un tableau croisé dynamique.   
Application.StatusBar Contenu de la barre des tâches situés à bas à gauche de l'écran.  
IIf(expr, truepart, falsepart) Equivalent d'un 'If...Then...Else', mais en une seule ligne.  
.PivotCache.Refresh Rafraichit les données d'un tableau croisé dynamique.  

Limites et autres possibilités

   
Utilisation de Workbook.RefreshAll Refreshall est une instruction qui permet d'actualiser l'ensemble des plages de données externes et les rapports de tableau croisé dynamique du classeur spécifié.
La méthode proposée ici permet de n'actualiser que les TCDs de la feuille (et donc gagner en temps de calcul)
 
Ajout du code au niveau de la feuille On pourrait choisir d'ajouter le code au niveau de la feuille. Par exemple, si on gère d'autres TCDs qui sont particulièrement long à être actualisés ou bien qui ne doivent pas être actualisés.  
Application.statusbar Tiré de l'aide : "Cette propriété renvoie False si Microsoft Excel possède le contrôle de la barre d'état. Pour restaurer le texte par défaut de la barre d'état, définissez cette propriété sur False. Cela reste valable même si la barre d'état est masquée."
C'est pour cette raison que l'on utilise le Iif dans le code.
 

Note : les descriptions données dans ce tableau correspondent spécifiquement au contexte de l'exemple. Il peut exister d'autres utilisations de l'instruction.

Mots-clefs/Thèmes:

Procédure événementielle, Tableaux croisé dynamique