Automatisation des champs TCD

Bonjour à tous,

Je souhaiterais apporter de nouvelles fonctionnalités pour mon outil, je voudrais maintenant que les champs de mon TCD se définissent automatiquement.

C'est-à-dire que le .CurrentPage = (le contenu d'une cellule) en effet après la mise en place du boucle for l'objectif serait d'avoir toutes les entreprises et ainsi obtenir un onglet par entreprise avec son propre TCD.

Encore merci pour votre aide et vos réponses.

TCD1

PivotFields (Métier)

.CurrentPage = contenu de A1

PivotFields (Societe)

.CurrentPage = contenu de B1

TCD2

PivotFields (Métier)

.CurrentPage = contenu de A2

PivotFields (Societe)

.CurrentPage = contenu de B2

With ActiveSheet.PivotTables("TCD2").PivotFields("Métier")
        .Orientation = xlPageField
        .Position = 1
        .CurrentPage = "Mouton"
   End With

En l'occurence remplacer le "Mouton" par le contenu d'une cellule. Je vous remercie par avance pour votre aide.

Cordialement

Bonjour,

Mets ton fichier en ligne avec données non confidentielles. Ce sera plus simple de voir comment te proposer quelque chose

Amicalement

Voilà le fichier test, j'ai mis les explications dans l'onglet 5, encore merci pour votre aide.

34test.xlsm (58.51 Ko)

Re,

Merci du fichier. Je vais regarder cela dans la journée.

Juste une question, pourquoi vouloir créer autant de TCD sachant que le filtre métier du TCD en champ de page renvoie les infos relatives au choix effectué (ici je vois Charcutier et boucher)

De plus on peut mettre les années en champ de page au lieu des dates que je vois actuellement

On pourrait donc faire ceci :

  • Créer un TCD avec les années en champ de page et les métiers
  • le choix pourrait se faire à partir de ces deux champs

A vous relire

Amicalement

Merci beaucoup de votre attention à mon travail. ALors j'ai commenté mon code du module 1 avant de mieux vous faire comprendre mes attentes. De plus j'ai utilisé un code couleur dans l'onglet 5 afin que vous compreniez facilement, j'ai aussi refais mes TCD de l'onglet 4 pour l'année 2008 afin que tout cela soit plus clair.

N'hésitez pas à me recontacter si vous avez d'autres questions, je suis actuellement à temps plein sur ce projet. Merci pour le temps que vous m'accordez.

Cordialement.

51test.xlsm (65.94 Ko)

Re,

pour les années je pense faire un choix sur l'onglet 1 qui permettra de savoir à partir de quand nous voulons les statistiques

L'onglet 1 ne comporte que des boutons... s'agit-il de faire le choix de la première année dans le TCD 1 en feuille 4 ??

Si oui que se passe-t-il s'il n'y a que deux années au lieu de 3 (exemple 2008 et 2009)

Amicalement

Concernant le choix des années cela sera seulement une évolution possible lorsque j'aurai terminé le reste. En effet comme vous le signalez je n'ai pas encore réfléchi à tous les problèmes que cela pouvait engendrer.

Merci de votre intérêt.

Re,

Ok mais quid de la première question au sujet du choix de l'année ?? elle se fait dans le TCD 1 ou pas ?

Amicalement

Edit : la même question se pose pour les Nom et métier. Il faut savoir commet le choix sera opéré pour les Nom et Métier. Sachant que le résultat à obtenir sera sur trois années pour une même société et le même métier.

Bonjour,

Alors les années seront dans un premier temps obligatoirement 2008, 2009 et 2010 donc j'impose ces années aux TCD par CurrentPage="Année".

Ensuite concernant le métier il sera égal au métier dont la société fait partie en effet si la société X est spécialisé en boucherie j'imposerai le métier boucherie afin de faire un comparatif entre ma société de boucherie et toutes les autres sociétés de boucheries.

Enfin pour le nom de la société je souhaite mettre en place une boucle for qui me permettra de créer le tableau de l'onglet 5 pour chaque société présente dans la colonne B de l'onglet 2. Sachant qu'elle apparaît plusieurs fois il me faudra faire attention à ne pas créer 2 fois le même tableau.

Je vous remercie par avance pour votre aide en espérant que mes explications sont parfaitement claires.

re,

Pour les années c'est ok. Par contre pour les autres données Nom et métier, c'est simple s'il n'y a qu'une donnée Nom et métier. Ici Charcutier et Société X1 mis dans le code.

Ici c'est plus compliqué car plusieurs Nom et Métier peuvent être combinés et faire des boucles avec les champs de page n'est pas simple. Donc là je me demande si la meilleure solution n'est pas de laisser tous les champs de page Nom et métier sur position ALL (ou TOUS) et que le choix soit fait par l'utilisateur. Ces choix concernerait donc les TCD 2,3, 5,7, 8 et 9.

En gros, le code met les années correctes dans tous les TCD et pour ce qui concerne les champs Nom et Métier, le choix est fait par l'utilisateur

Merci d'un avis à ce sujet.

Bonjour à toi Dan,

Pour cette histoire de métier qui me dérange, j'ai pensé à reprendre le métier correspondant à la société en utilisant :

metier = Range("Tableau[Metier]")(Range("Tableau[Nom]").Find(Nom, lookat:=xlwhole).Row-1)

Que penses-tu de cette solution ? Est-il possible d'y arriver avec une telle phrase ?

Merci encore de ton aide et toutes mes excuses pour le gène occasionné.

re

Tu ne réponds pas vraiment à la question que je t'ai posée avant et le fait de ne pas avoir ton vrai fichier pose tout de meme un souci.

Je te propose de partir du fichier joint dans lequel j'ai refait le code de génération des 9 TCD et que tu me fasses part de tes commentaires.

Sur cette base on fera évoluer le code et peut être placer l'instruction dont tu parles.

Comme je n'ai pas excel 2003 je n'ai pas pu vérifier par rapport à ta demande car certaines instructions ne passent pas sous ma version (xl2000).

A te relire

Amicalement

23poussin1.zip (31.92 Ko)

Merci beaucoup pour cette nouvelle fonction qui facilite grandement mes calculs et m'évite les répétitions donc les erreurs. J'ai amélioré ton fichier en ajoutant la modification du métier qui ne pose maintenant plus de problème. J'ai ajouté l'année 2010 pour ainsi avoir les 9 TCD. Je transcris les valeurs des TCD dans la Feuil5 pour après créer le fichier PDF dans un dossier. Le problème qui se pose maintenant et après avoir sauvegardé le tableau récapitulatif PDF d'une société de passer aux autres sociétés comment dois-je faire ma boucle pour pouvoir créer le même tableau en Feuil5 pour chaque société sans créer de nouveaux onglets. J'espère que tu comprendras ce que je dis sinon n'hésites pas à me demander.

Encore merci de ton aide, je vais continuer à chercher en attendant avec impatience tes réponses.

Merci encore.

24poussin3.zip (44.48 Ko)

Re

comment dois-je faire ma boucle pour pouvoir créer le même tableau en Feuil5 pour chaque société sans créer de nouveaux onglets.

Alors une idée. Pourquoi ne ferais tu pas ceci :

  • en feuille 5 en B2 (attention à la fusion des cellules à supprimer pour les codes), tu crèes une liste déroulante en fonction des sociétés reprises en feuille 2 ou 3
  • en B8 tu mets une formule --> = B2
  • Dans ton code à la variable "Societe", tu lui attribues la valeur choisie en B2 de la feuille 5 comme ci-dessous
Societe = Sheets("Feuil5").range("B2")

Il ne te reste qu'à exécuter le code pour refaire tes TCD

Amicalement

Edit Dan :

Le code que tu as rajouté en fin du code TCD (activeworkbook......etc) peut être remplacé par celui-ci :

With Worksheets("Feuil5")
    .Range("C3,C9").Value = Worksheets("Feuil4").Range("B26").Value
    .Range("C4,C10").Value = Worksheets("Feuil4").Range("B27").Value
    .Range("D3").Value = Worksheets("Feuil4").Range("B6").Value
    .Range("D4").Value = Worksheets("Feuil4").Range("B7").Value
    .Range("D9").Value = Worksheets("Feuil4").Range("B16").Value
    .Range("D10").Value = Worksheets("Feuil4").Range("B17").Value

    'Retranscire les données de l'année 2009 dans le tableau récapitulatif en format PDF
    .Range("F3,F9").Value = Worksheets("Feuil4").Range("E26").Value
    .Range("F4,F10").Value = Worksheets("Feuil4").Range("E27").Value
    .Range("G3").Value = Worksheets("Feuil4").Range("E6").Value
    .Range("G4").Value = Worksheets("Feuil4").Range("E7").Value
    .Range("G9").Value = Worksheets("Feuil4").Range("E16").Value
    .Range("G10").Value = Worksheets("Feuil4").Range("E17").Value

    'Retranscire les données de l'année 2010 dans le tableau récapitulatif en format PDF
    .Range("I3, I9").Value = Worksheets("Feuil4").Range("H26").Value
    .Range("I4, I10").Value = Worksheets("Feuil4").Range("H27").Value
    .Range("J3").Value = Worksheets("Feuil4").Range("H6").Value
    .Range("J4").Value = Worksheets("Feuil4").Range("H7").Value
    .Range("J9").Value = Worksheets("Feuil4").Range("H16").Value
    .Range("J10").Value = Worksheets("Feuil4").Range("H17").Value
End With

Amicalement

Merci pour ta réponse rapide.

C'est en effet une solution mais le fait que l'utilisateur doive intervenir dans le fichier Excel me dérange, je voudrais que juste en cliquant sur le bouton Créer Tableau avec calcul, le fichier soit capable de créer les tableaux PDF dans un dossier de l'ordinateur avec un message comme : " Vos tableaux ont été créés dans le dossier suivant : C:/Bureau/Tableau PDF"

Merci pour l'amélioration je suis en train de modifier tout ça et je vais continuer à chercher pour cette histoire de boucle. Si jamais tu as une idée surtout tiens moi au courant encore merci pour ton aide.

Merci pour tout. J'attends de tes nouvelles avec impatience.

re,

Ok. Mais pour créer tes TCD le plus simple est de créer une liste des sociétés. de là on met chaque société dans la variable par boucle puis génération de la macro TCD. Au final on efface la liste. Comme cela ni vu ni connu.

Dis moi une chose , dans la tableau en feuille 5 ne va pas plus loin que la colonne M ??

A te relire

Amicalement

Bonjour,

Alors tout d'abord encore merci, pour la Feuil 5 effectivement je n'irai pas plus loin que la colonne M. De plus concernant ton idée, c'est exactement ce qu'il faut faire mais par contre je pensais intégrer cette sous-fonction dans la macro TCD de manière à tout automatiser. En effet dans le début de la fonction créer une liste des sociétés présentes en reprenant la colonne Nom puis les mettre dans la variable pour ensuite créer le tableau PDF.

Je pense qu'on arrive à se comprendre sur le rendu final.

Merci de ton aide.

Re,

Cette ligne doit buguer dans le code.

Je vois bien que tu cherches le métier mais les 2 ranges correspondent à quoi dans ton fichier ?? je ne vois ni tableau 2 ni métier. Tableau 2 = Feuille 2 ??

metier = Range("Tableau2[Métier]")(Range("Tableau2[Nom]").Find(societe, lookat:=xlWhole).Row)

Pourrais-tu me dire si il est possible d'avoir deux métiers par société ??

A te relire

Bonjour DAN,

Encore merci pour ta réponse alors le tableau 2 est présent dans la Feuil3 donc cette ligne de code marche très bien. De plus chaque société n'aura forcément qu'un seul métier donc pas de problème de ce côté là non plus.

Encore merci pour ton aide. J'apprécie réellement.

Re

Bizarre. Je suppose que "Tableau2[Métier]" est une plage que tu nommes ailleurs et ces deux Range l'un à la suite de l'autre sont une nouvelle particularité de 2010 ??? car sous les anciennes versions cela va bugger.

Tu es sur que l'utilisateur a bien la même version ??

Tu ne réponds pas à la question posée dans mon précédent post au sujet des métiers

A te relire

Rechercher des sujets similaires à "automatisation champs tcd"