MACRO pour TCD

Bonjour!

J'ai un TCD et je cherche à faire une macro rattachée à un bouton pour que quand j'appuie sur ce bouton la plage de données du TCD change. A l'aide de l'enregistreur j'ai trouvé ce qui devait être changé pour y arriver. Voici le bout de code VBA correspondant au changement de la plage de donnée d'un TCD, voulant rajouter des lignes à cette plage il faut modifier le 1500 dans "R1500C12"

ActiveSheet.PivotTables("Tableau croisé dynamique2").ChangePivotCache _

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _

"N:\Mes documents\[TCD.xlsm]AFFICHAGE!R5C1:R1500C12" _

, Version:=xlPivotTableVersion12)

Je suis très inexpérimenté en VBA, avez vous une idée pour qu'en appuyant sur un bouton, l'utilisateur puisse entrer un nouveau nombre de ligne et que le 1500 soit modifié en conséquence?

Merci!

Bonjour

Il serait nettement préférable de mettre la source sous forme de tableau et de construire le TCD sur le tableau : ainsi le TCD prend automatiquement en compte l'ajout ou la suppression de lignes dans la source.

A défaut utiliser une plage nommée à base de DECALER.

Ainsi on évite le VBA qui ici équivaut à utiliser un missile Tomahawk pour tuer une mouche...

Edit : si la source est un fichier différent de celui du TCD, il est plus simple d'utiliser les colonnes entières si tu n'as pas de regroupement de dates ou nombre dans le TCD.

Bonjour,

si tu définis le range du tableau qui sert au tcd, de cette manière, ça doit fonctionner

P.

Dim Last ' dernière ligne colonne A
Dim Rng, Desti As Range ' range du tableau et range de destination
Last = [A65000].End(xlUp).Row
Set Rng = Range("A1:B" & Last): Set Desti = Range("K1")
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        Rng, Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:=Desti, TableName:="Tcd3", _
        DefaultVersion:=xlPivotTableVersion14
' Excel 2010 !!!

Salut!

La source de données est un tableau, mais le problème que quand j'entre une nouvelle ligne dans ce tableau le TCD ne la prend pas en compte, il faut que je remodifie la plage de donnée et rajouter cette ligne à la main (d'où ma volonté d'utiliser du VBA) et que j'actualise.

Merci pour la réponse

Tichyus a écrit :

Salut!

La source de données est un tableau, mais le problème que quand j'entre une nouvelle ligne dans ce tableau le TCD ne la prend pas en compte, il faut que je remodifie la plage de donnée et rajouter cette ligne à la main (d'où ma volonté d'utiliser du VBA) et que j'actualise.

Merci pour la réponse

A défaut, tu peux insérer tes lignes avant la dernière au lieu de rajouter sous la dernière; si le tcd a été crée avec 300 lignes, il ne peut savoir que la plage s'est allongée (comme à la côté d'opale ) donc c'est UNE méthode, il y en a d'autres.

Ensuite , tu actualises le TCD

RE

Tichyus a écrit :

La source de données est un tableau, mais le problème que quand j'entre une nouvelle ligne dans ce tableau le TCD ne la prend pas en compte

C'est que le TCD n'est pas basé sur le tableau mais sur une plage...

Si tu as un tableau, ton tableau a un nom et le TCD doit se référer au nom et non à la plage initialement utilisée par le tableau.

Sauf, comme évoqué, cas particulier d'une source située dans un classeur autre...

78chris a écrit :

C'est que le TCD n'est pas basé sur le tableau mais sur une plage...

Si tu as un tableau, ton tableau a un nom et le TCD doit se référer au nom et non à la plage initialement utilisée par le tableau.

D'accord, comment faire en sorte qu'il prenne en compte le tableau et non pas la plage? Dans "source de données" je ne peux selectionner qu'une plage.

patrick1957 a écrit :

A défaut, tu peux insérer tes lignes avant la dernière au lieu de rajouter sous la dernière; si le tcd a été crée avec 300 lignes, il ne peut savoir que la plage s'est allongée (comme à la côté d'opale ) donc c'est UNE méthode, il y en a d'autres.

Ensuite , tu actualises le TCD

Cela pourrait marcher mais ils sont tous rangés par date et c'est à l'aide d'une macro que les lignes s'ajoutent.

On appuie sur un bouton, des champs apparaissent, on retre nos données, on appuie sur un autre bouton et zou ces données sont ajoutées au tableau qui va alimenter le TCD.

RE

On peut sélectionner un tableau en cliquant dans l'angle supérieur gauche de la cellule du 1er titre (pas l'angle des lignes/colonnes) ou on peut taper le nom du tableau dans source de données.

A moins que tu ne travailles en format antédiluvien xls au lieu de xlsx... ce qui ne semble pas le cas

Tu remarqueras que la fenêtre de sélection de la source propose Tableau/Plage : on a bien le choix...

Bonjour à tous,

Que penses-tu de l'idée de joindre un petit fichier ?

Cela ferait gagner du temps à tout le monde.

Cdlt.

bonjour à tous

oui, un fichierrrrrrrr !

ceci dit, on trouve dans le 1er menu d'Excel la commande "mettre sous forme de tableau" et personne ne l'utilise. C'est fou

Je vais essayer d'appliquer vos conseils. Malheureusement je ne peux joindre de fichier, il appartient à mon entreprise, et je n'ai pas les connaissances pour faire un fichier similaires...

Rechercher des sujets similaires à "macro tcd"