Source D'un TCD depuis vba

julioo

XLDnaute Nouveau
bonsoir,
j'ai une base de donnée dont la taille varie bien sur et je l'utiliser pour un tcd.
j'aimerai éviter de me fixer une plage pour mon tcd parce ke la base de donnée ne peut que grandir, par ailleurs je ne veux pas definir mon tcd sur 2^16 lignes (sinon l'actualisation est trop longue).
Donc j'aimerai pouvoir aceder depuis le vba a la source de mon tableau croisé.
quelqun pourait-il m'expliquer la démarche ?
merci d'avance
 

Dan

XLDnaute Barbatruc
Re : Source D'un TCD depuis vba

Bonjour,

Pas facile de te donner des indications sur base de ce que tu expliques. Le sujet est vaste et complexe.
Si tu veux faire un TCD par macro, utilise l'enregistreur automatique comme te le propose l'aide excel.
Sinon vois aussi dans la zone "recherche" du forum les fils qui traitent de ce sujet.

Sans macro, une solution est d'utiliser cette formule pour considérer la plage.
1. Dans ta feuille base de donnée, définit un nom par menu/insertion/nom/définir --> "PlageTCD"
mettre cette formule dans "ref à" : =DECALER(Feuil!$A$1;;;NBVAL(Feuil!$A:$A);5)
Avec 5 le nombre de colonne de ta base de données.
Avec Feuil : le nom de ta feuille contenant la base de données.
2. A la construction du TCD, utilise le nom attribué par définir la plage de référence au TCD (donc ici PalgeTCD)

Bon travail
 

julioo

XLDnaute Nouveau
Re : Source D'un TCD depuis vba

rebonjour,
merci pour l'aide,
je vais essayer d'etre plus clair alors (je tiens a faire cela par macro)
je ne souhaite pas créé le tcd par macro. il est déja construit, une fois et une seule.
par contre sur un tcd déja construit, on peut tjrs relancer l'assistant, pour modifier la plage de donnée source par exemple. je pense donc qu'en tant qu'objet excel, le tableau croisé dynamique 1 de la feuille machin truc peut etre modifié dans certaines mesures, et j'aimerai savoir si quelqun conaissai la ou les fontions qui me permettent d'acceder a la source du tcd c'est a dire je pense un truc de genre
sheets("tcd").PivotTable("tableau croisé dynamique 1").DataSource = Sheets("data").range("A4:E" & CInt (Range("A1")))
enfin dans ce gout la je veu dire.
j'ai déja regardé les liens et je comprend que cela soit un probleme complexe.
au pire peux tu me dire ce que raconte ton aide sur la fonction
Excel/PivotTable/DataField ?
merci beaucoup d'avance
 

julioo

XLDnaute Nouveau
Re : Source D'un TCD depuis vba

Probleme résolu !
j'ai finalement trouvé :
bla = "Data!L3C1:L" & (CInt(Sheets("Data").Range("A1")) + 3) & "C5"
Sheets("TCD").PivotTables("Tableau croisé dynamique1").SourceData = bla
voila et ca ca me met vérifie la plage de mon tcd a chaque fois si je la met dans workbook sheets activate
merci encore !
 

Dan

XLDnaute Barbatruc
Re : Source D'un TCD depuis vba

Re,

ben j'ai pas bien compris ce que tu cherches à faire...
Si ton TCD est déjà fait, tu n'as pas besoin de vérifier ta plage. La seule chose à être sûr c'est que si tu rajoutes des données dans ta base de données, elles doivent être prises en compte dans le TCD lorsqu'il sera réactualisé; ce que te permettait la formule DECALER que je t'ai donné avant.

Par rapport à ta formule : sheets("tcd").PivotTable("tableau croisé dynamique 1").DataSource = Sheets("data").range("A1").currentregion est aussi un solution.

Bonne soirée
 

julioo

XLDnaute Nouveau
Re : Source D'un TCD depuis vba

d'accord,
justement le tcd devai varier et pour qu'il prenne en compte les nouvelles entrées cela suppose que ces dernieres soient dans la plage de definition de mon tcd
je te remercie pour la fanction decaler et pour l'aide en general
bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 412
Messages
2 088 196
Membres
103 763
dernier inscrit
p.michaux