Sortie de la newsletter 55

Que vous pou­vez con­sul­ter ici :

www.polykromy.com/nl/nl55/index.htm

Bonne lec­ture

Gae­tan Mourmant
www.polykromy.com

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

Transformer du code VBA en HTML

Bon­jour,

VB HTML Maker

Si vous êtes web­mas­ter d’un site web con­sacré à Excel ou au VB, il peut par­fois être très utile de trans­former du code VBA en HTML.

Le prob­lème, c’est qu’en faisant un sim­ple copi­er — coller, le code ne con­serve ni les couleurs, ni les tabulations.

Pour y remédi­er, nos amis anglo­phones ont con­coc­té ce petit utilitaire :

VB HTML Maker

D’où le résultat :

Option Explic­it

Sub test()
‘Ce mod­ule vise à démon­tr­er l’u­til­i­sa­tion de VB HTML
Dim a As Inte­ger
For a = 1 To 10
    Beep
Next

End Sub

Bon amusement.

Gae­tan Mourmant
www.polykromy.com