Tableaux croisés & VBA
Bonjour à tous,
J'espère que vous allez bien.
Après pas mal d'années à faire du VBA je me sens assez bête de ne trouver que maintenant cette fameuse option très utile pour la sélection d'un TCD sans les filtres contextuels. C'est très utile quand on veut générer des onglets par BU, directions, services etc etc.
Voici un exemple ci-dessous avec pt.TableRange1 permettant de récupérer la plage du TCD sans les filtres contextuels.
'Ref du TCD
Set pt = Worksheets("Feuil1").PivotTables("Tableau croisé dynamique1")
'Permet de récupérer la plage hors filtres contextuels sans avoir besoin d'identifier la dernière ligne et dernière colonne avec des formules savantes
Set source = pt.TableRange1
'Cellule où la copie va être effectuée
Set destination = Worksheets("Feuil2").Range("A1")
' Copie de la plage + collage en valeur + format
source.Copy
destination.PasteSpecial Paste:=xlPasteValues
destination.PasteSpecial Paste:=xlPasteFormatsJe ne connaissais pas du tout et n'avais jamais vu cette option avant... A mon grand regret, c'est l'IA qui est à l'initiative de cette découverte.
Pour les sachants et experts VBA, auriez-vous des connaissances sur d'autres fonctionnalités cachées comme celle-ci ?
Pour les autres, j'espère que cela pourra en aider certains et permettre une belle découverte
@+
Bonjour
Il y a plusieurs plages différentes récupérables dans un TCD : TableRange1 et TableRange2 s'ajoutent à nombre d'autres Ranges (DataBodyRange, RowRange, ColumnRange)
Pour générer des onglets selon un champ de page il y a aussi un automatisme (déclenché manuellement ou par VBA) qui créera autant d'onglets et TCD que de valeurs différentes dans ce champ de page.
Hello Chris,
En effet je connais la manipulation mais ça permet de garder l’accès aux données du TCD via le filtre. La l’objectif c’est de ne pas avoir accès à ces données et d’avoir une copie en valeur et format.
Je vais creuser les Ranges dont tu m’as parlées. Merci pour ton retour.
@+