Modifier les paramètre d'un taleau croisé dynamique VBA

Bonjour à tous,

Sur une feuille "Donnee" se trouve mon tableau de données.

5 lignes sous ce tableau, j'ai tracé un tableau croisée dynamique et j'ai enregistré la macro liée à cette manipulation.

Mon but est d'appliquer cette macro pour l'année en cours et l'année suivante ...

Or, il faut savoir que mon tableau de donnée n'ai pas de taille fixe.

C'est pourquoi, je souhaiterai créer une boucle autour de la ligne de commande suivante:

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

"Donnee!R1C1:R36C5", Version:=xlPivotTableVersion14).CreatePivotTable _

TableDestination:="Donnee!R42:R97", TableName:="Tableau croisé dynamique8" _

, DefaultVersion:=xlPivotTableVersion14

Sheets("Donnee").Select

Pourriez-vous me dire si cela est possible s'il vous plaît?

Vous trouverez en pièce jointe une simulation de ce que j'ai fait (les données sont irrationnels je les ai mise au lien des véritables données qui sont confidentielles)

Merci d'avance

22test-forum.xlsm (19.96 Ko)

Bonjour et bienvenu(e)

1 - Une feuille pour les données, Une feuille pour le TCD

2 - Les données sont mises sous forme de tableau (dynamique)

3 - Tu parles de données pour l"année en cours et l'année suivante, mais il n'y aucune date dans ton exemple.

Je te propose donc un exemple à partir des éléments fournis.

Cdlt.

73test-forum.xlsm (29.25 Ko)

Je vous remercie de m'avoir répondu.

Votre tcd correspond effectivement à ce que je souhaite obtenir.

Toutefois, est-il possible de réalisé le tcd en dessous de mon tableau de données?

Autrement dit, de rester sur la même feuille "Donnees".

Merci d'avance.

Bonjour,

Je t'envoie 2 fichiers.

Le 1er. est identique à la version précédente avec une actualisation automatique du TCD (activation feuille)

Le second avec le TCD en dessous du tableau (mauvais choix) et une actualisation manuelle.

Cdlt.

52test-forum.xlsm (31.50 Ko)
29test-forum-v2.xlsm (29.32 Ko)

Bonjour,

Eh bien je vais suivre votre conseil et privilégier de mettre mon TCD dans une nouvelle feuille.

Toutefois, je rencontre malheureusement une erreur de type "L'indice n'appartient pas à la sélection" au niveau de la ligne "Set lo=..." en testant avec mes véritables données.

En recherchant sur internet* j'ai appris que dans ListObject on indique le nom de sa table du coup j'ai enregistré également mon tableau à partir du gestionnaire des noms mais l'erreur est toujours présente !

*http://www.thespreadsheetguru.com/blog/2014/6/20/the-vba-guide-to-listobject-excel-tables

Pourriez-vous m'éclairer sur ce point s'il-vous-plaît?

Merci d'avance.

Bonjour,

Comment se présentent tes véritables données ?

Joins un fichier représentatif (anonymisé si nécessaire).

Cdlt.

Rebonjour,

Très bien, vous trouverez en pièce jointe la structure typique de mon tableau de donnée.

En vous remerciant par avance pour votre aide.

24modele-test.xlsm (12.45 Ko)

Bonsoir,

Je vous renvoie mon fichier xlsm car j'avais précédent oublié d'intégrer la macro TCD.

Merci d'avance.

29modele-test.xlsm (21.99 Ko)

Bonjour,

Voir fichier.

A te relire pour un complément d'informations.

Cdlt.

37modele-test.xlsm (32.28 Ko)

Bonjour,

Le problème persiste au niveau de la ligne "Set lo = wsData.ListObjects(1)" [Erreur d'exécution "9"]

Pourriez-vous me dire à quoi correspond le nombre 1 dans les paramètres de ListObject, svp?

Merci d'avance

Bonjour,

Tes données doivent êtres mises sous forme de tableau (Ruban / Accueil / Mettre sous forme de tableau)

Le 1 correspond au numéro de tableau dans la feuille. Dans la mesure ou il est seul dans la feuille, il n'est pas utile de le nommer

[set lo=wsData.listobjects("Tableau1")].

Cdlt.

Excellent! Effectivement le problème venait du fait que ma base n'était pas sous forme de tableau.

Le 1 correspond au numéro de tableau dans la feuille. Dans la mesure ou il est seul dans la feuille, il n'est pas utile de le nommer

Si par la suite d'autres feuilles s'ajoutent à mon classeur. Dans ce cas là quelle serait la meilleure solution à adopter (i.e. la plus automatique possible) svp?

Je vous suis remercie pour l'aide que vous m'apportez.

Re,

Applique le même principe si c'est possible.

Cdlt.

Testé et approuvé cela fonctionne parfaitement. Il faut bien évidemment changer le nom de la feuille et c'est tout!

Pour clore le sujet, j'ai une ultime question:

Si je souhaite mettre en dessous du premier TCD un autre TCD. Celui s'ajoutera dans la feuille TCD en même temps que l'autre TCD.

Cela est-il possible?

En faite j'ai essayé et ça m'affiche l'erreur qui suit:

error tcd

Merci d'avance

Bonjour,

Me voilà de retour pour ce sujet.

En effet, dans mon dernier message je souhaitais modifier les paramètres de la macro TCD (voir dernier message de @Jean-Eric) afin de pouvoir mettre sur une même feuille deux TCD qui se suivent .

Après plusieurs recherches, je pense être sur la bonne voie et avoir (presque) trouvé la solution.

La macro TCD construit le 1er TCD puis elle évalue le nombre de ligne occupe par ce dernier. On met alors une variable derligne qui prend cette valeur.

A partir de là, on réalise la même chose que pour le 1er tdc en modifiant le nom de ce nouveau et surtout la "destination".

Eh bien, c'est exactement ici que ma macro perd le fil...

Pourriez-vous me dire la coquille qui est présente au niveau de cette ligne, svp:

capture

Sachant que dest a été déclaré comma variable string

En vous remerciant par avance.

Bonjour,

Envoie un classeur comportant les 2 TCDS que tu veux obtenir.

Cdlt.

Merci d'avoir pris en considération mon message.

Dans le document ci-joint, je vous ai résumé à la deuxième feuille ce que je cherche à obtenir.

J'ai également mis la macro sur vb afin de vous montrer comment j'ai voulu procédé pour le 2nd TCD.

En vous remerciant par avance pour votre aide.

7deux-tcd.xlsm (32.46 Ko)

Bonjour,

Ton ficher en retour (non optimisé).

Cdlt.

14modele-test-1.xlsm (34.14 Ko)

Oui c'est tout à fait la présentation que j'essayais de faire en macro, merci.

Par contre, je n'ai pas bien compris pourquoi il ne fait aucun calcul autrement dit la colonne "Réalisé" n'est pas du tout prise en compte => mon tableau ne contient finalement que les noms des lignes et des colonnes.

Est-ce normal?

Re,

Et si tu mettais des valeurs numériques pour ton Réalisé ?

Cdlt.

Rechercher des sujets similaires à "modifier parametre taleau croise dynamique vba"