TCD sur plusieurs feuilles

Bon­jour,

Cet arti­cle fait suite à la lec­ture du site de Jean-Marie Lam­bert où il présente une facon de chang­er la source des don­nées d’un tableau croisé dynamique (TCD) en util­isant la fonc­tion INDIRECT dans un nom dynamique pour ren­seign­er la feuille con­tenant les données.

Ceci bien sur à con­di­tion que les don­nées aient la même structure.

Le but est de réalis­er ceci :

Vous pou­vez retrou­ver mon fichi­er exem­ple ici

Je ne vais pas réécrire l’ar­ti­cle, qui est très bien détail­lé et péd­a­gogique, mais l’idée prin­ci­pale est celle-ci .

On ajoute une cel­lule (ici A2 de la feuille TCD) con­tenant le nom de la feuille de la base de don­nées con­cernée. Cette cel­lule con­tient une val­i­da­tion (Don­nées — Val­i­da­tion) afin d’éviter les fautes de frappe.

La fonc­tion Indi­rect per­met de ren­voy­er les références suivantes :
— Liste1!$A$1 pour INDIRECT(TCD!$A$2&“!$A$1”)
— Liste1!$A:$A pour INDIRECT(TCD!$A$2&”!$A:$A”)
— Liste1!$1:$1 pour INDIRECT(TCD!$A$2&“!$1:$1”)

La déf­i­ni­tion d’un nom dynamique (Inser­tion — Nom — Définir) pour un TCD prend la forme générale suivante :
=DECALER(Liste!$A$1;;;NBVAL(Liste1!$A:$A);NBVAL(Liste1!$1:$1))
En con­sid­érant que:
— la feuille “Liste1” con­ti­enne la base de données,
— la pre­mière ligne ne con­tenant que les en-têtes et
— la pre­mière colonne ne devant pas avoir de cel­lules vides.

D’où la com­bi­nai­son finale suiv­ante pour le nom dynamique :
=DECALER(INDIRECT(TCD!$A$2&“!$A$1”);;;
NBVAL(INDIRECT(TCD!$A$2&”!$A:$A”));NBVAL(INDIRECT(TCD!$A$2&“!$1:$1”)))

On crée ensuite le TCD en se bas­ant sur ce nom dynamique comme source des données.

Finale­ment, en ajout à l’ar­ti­cle de Jean-Marie Lam­bert, on peut créer une procé­dure événe­men­tielle cap­tant le change­ment de valeur de la cel­lule A2 et lan­cant automa­tique­ment l’ac­tu­al­i­sa­tion du tableau :

Pri­vate Sub Worksheet_Change(ByVal Tar­get As Range)
If Target.Address = “$A$2” Then
    ActiveSheet.PivotTables(“Tableau croisé dynamique1”).PivotCache.Refresh
End If

End Sub

Bon amuse­ment

Gae­tan Mourmant
www.polykromy.com

Pourquoi ?

Bon­jour et bienvenue.

L’ob­jec­tif d’XLéra­teur est de partager des astuces avancées, des développe­ments en VBA, des retours d’ex­péri­ence, bref, tout ce qui peut aider à amélior­er la con­nais­sance et la pra­tique d’Ex­cel au quotidien. 

Ces arti­cles, grâce au for­mat “blog” ont la pos­si­bil­ité d’être libre­ment com­men­tés et vous êtes cor­diale­ment invités à le faire.
Si vous voulez pub­li­er un arti­cle, mer­ci de me le soumet­tre afin que je le mette en ligne :
Pro­pos­er un article

La saisie quo­ti­di­enne va aus­si me per­me­t­tre d’être — je l’e­spère — plus réguli­er dans ma for­ma­tion sur Excel !

Finale­ment, l’or­gan­i­sa­tion par caté­gorie et par date per­met une organ­i­sa­tion beau­coup plus dynamique que sur un site web statique.
On peut ain­si retrou­ver le même arti­cle à la fois dans les caté­gories ayant trait au VBA, aux for­mules et à la mise en forme con­di­tion­nelle, ce qui est moins facile à faire sur un site sta­tique classique.

Je vous souhaite une bonne décou­verte de ce superbe logi­ciel qu’est excel.

Gae­tan Mourmant
www.polykromy.com