IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Comment réaliser un Tableau croisé dynamique avec des colonnes prédéfinies ? [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Points : 18
    Points
    18
    Par défaut Comment réaliser un Tableau croisé dynamique avec des colonnes prédéfinies ?
    Bonjour à tous,

    Je voudrais savoir s'il était possible de réaliser un tableau croisé dynamique avec des colonnes prédéfinies. Et si oui, comment ?

    Origine du problème :
    Je travaille sur une plateforme de gestion de documents, et j'aimerai faire un suivi de ces documents à la semaine (en utilisant une macro qui génère les tableaux).
    La base de données excel avec laquelle je veux réalisé le suivi contient la liste de tous les documents ajoutés et modifié depuis les 7 derniers jours.
    Je souhaite obtenir un tableau/TCD du nombre de documents en fonction de leur "Type"{Plan,Dessin,Note,Rapport,...} (en ligne) et de leur "Etape"{Prod, Analyse, Refuse, Valide} (en colonne).
    Dans ma base de données, j'ai donc la colonne "Etape" qui contient une des 4 étapes qu'un document peut avoir mais il se peut qu'il n'y ait aucun document qui se retrouve en "Valide" pendant une certaine semaine par exemple. Du coup, l’étape du document "Valide" n'apparait pas dans mon TCD puisqu'il n'y ait pas dans ma base de données cette semaine la. Mais je veux quand même avoir cette colonne dans mon tableau (qui afficherait donc 0 pour chaque type de documents).

    J'espère avoir été clair et compréhensible.

    Avez vous une solution à mon problème ? Ou suis-je obligé de réaliser un tableau à double entrée classique "à la main" avec des formules pour chaque case ?

    Merci de vos réponses.
    Bakamii.

  2. #2

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Merci dysorthographie pour ta réponse, cette classe simplifiera la création de mes TCD à l'avenir.

    Mais elle ne réponds pas à mon problème. Je cherche à savoir comment ajouter l'etape "Valide" aux colonnes de mon TCD (que j'ai déja créer),
    s'il existe une fonctionnalité qui permet de faire ça, s'il faut que je modifie ma source données (mais je vois pas trop comment) ou tout autres indices.

    Bakamii.

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 405
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 405
    Points : 16 245
    Points
    16 245
    Par défaut
    Bonjour

    Il faut sélectionner le champ étape et dans les paramètres cocher l'affichage des éléments sans données.

    Si une valeur a existé, le cache du TCD peut la garder et donc l'afficher.

    Néanmoins il se renouvelle et si une valeur n'apparait pas pendant longtemps, elle disparaitra du cache.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Bonjour à toi,

    Citation Envoyé par 78chris Voir le message
    Il faut sélectionner le champ étape et dans les paramètres cocher l'affichage des éléments sans données.
    Malheureusement, je l'ai déjà coché et ça n'a pas résolu mon problème. Il manque toujours les "étapes" qui n'apparaissent pas dans la base (car aucun document ne possède cette étape pour une semaine donnée).

    Citation Envoyé par 78chris Voir le message
    Si une valeur a existé, le cache du TCD peut la garder et donc l'afficher.
    Néanmoins il se renouvelle et si une valeur n'apparait pas pendant longtemps, elle disparaitra du cache.
    Les valeurs n'existent pas dans le fichier excel (pour chaque semaine, un fichier excel). Et le TCD ne va pas les inventer...

    Ce qui m'a amené à penser à une solution qui consisterait à ajouter des documents (une ligne dans mes données sources) du nombre de mes étapes (pour chaque étape, un document qui est à cette étape) qui sert de "modèle" pour le TCD. Il utilisera ces lignes pour créer toutes les colonnes "étapes" existantes. Je peux aussi mettre ces documents dans un "Type" nommé "modele" (ou quelque chose comme ça) que je filtrerai sur mon TCD pour qu'il ne s'affiche pas. (A voir si j'y arrive dans la pratique )

    Pour moi, ça reste du bricolage donc si vous avez une autre solution ou une autre approche, n'hésitez pas à me les partager.

    Bakamii.

  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 405
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 405
    Points : 16 245
    Points
    16 245
    Par défaut
    Bonjour

    Si je comprends bien tu refais un TCD à chaque fois ?

    Ce n'est pas le bonne méthode : le TCD doit être fait une fois pour toutes et si la source évolue on l'actualise.

    Dans la majorité des cas on utilise les TCD pour du reporting où il y a plusieurs TCD et diverses analyse avec des indicateurs : tout refaire n'est pas logique.

    Il faut avoir une approche base de données : les données évoluent mais le paramétrage des restitutions est stable.

    Si les sources sont des extractions régulières le mieux est soit de lier le TCD à un fichier externe dont le contenu évolue au fil du temps, soit de reparamétrer la source du cache des TCD par VBA mais pas de tout rebâtir.

    Sinon le seul moyen d'ajouter une colonne correspondant à des valeurs manquantes est d'ajouter à la sources quelques lignes sans données numériques mais avec ces valeurs, soit dans la source elle-même, soit en construisant une requête union entre la source et ces lignes de référence et en basant le cache des TCD sur cette requête.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Si je comprends bien tu refais un TCD à chaque fois ?
    Oui, je le refais à chaque fois. C'est ce qui me semblait le plus simple n'ayant qu'un seul tableau à réaliser.

    Citation Envoyé par 78chris Voir le message
    Ce n'est pas le bonne méthode : le TCD doit être fait une fois pour toutes et si la source évolue on l'actualise.
    Dans la majorité des cas on utilise les TCD pour du reporting où il y a plusieurs TCD et diverses analyse avec des indicateurs : tout refaire n'est pas logique.
    Il faut avoir une approche base de données : les données évoluent mais le paramétrage des restitutions est stable.
    D'accord, je vois maintenant mieux comment on utilise le TCD, je trouvais ça long de devoir tout reparamétrer à chaque TCD.

    Citation Envoyé par 78chris Voir le message
    Si les sources sont des extractions régulières le mieux est soit de lier le TCD à un fichier externe dont le contenu évolue au fil du temps, soit de reparamétrer la source du cache des TCD par VBA mais pas de tout rebâtir.
    Effectivement, les sources sont des extractions régulières. Je pense que je vais choisir de :
    Changer la source des données de mon TCD par un fichier export de la plateforme de document chaque semaine et actualiser le TCD.

    Du coup, ma macro demandera la sélection d'un fichier excel et définira une plage dynamique (des données à l'intérieur du fichier sélectionné) qui servira de source de données de mon TCD déjà paramétré. Je n'aurais plus qu'à affecter cette plage à mon TCD et à l'actualiser.
    Cette méthode est-elle correcte et correspond-t-elle à la bonne méthode de l'utilisation des TCD ?

    Finalement, pour les valeurs qui ne s'affichent pas actuellement, elles devraient donc s'afficher grâce à la mémoire (cache) du TCD ? Faut-il paramétrer quelque chose ?

    Merci beaucoup de ta réponse précédente, elle m'a beaucoup aidé à y voir plus clair!

    Bakamii.

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 405
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 405
    Points : 16 245
    Points
    16 245
    Par défaut
    Bonjour

    A noter que les plages dynamiques nommées, que ce soit des tableaux structurés ou des plages nommées à base de DECACLER ne fonctionnent pas sur un fichier externe.

    Selon les cas on peut soit utiliser des colonnes complètes (je n'aime pas trop mais parfois je me force) soit une requête.

    Si la source est gérée par VBA tu as le choix entre calculer le taille de la source pour paramétrer le cache ou paramétrer le lien de la requête.

    Cependant avec l'histoire des cas manquants je pense que le 1er cas vide le cache alors que le requête ne le fais peut-être pas. Cela reste à vérifier.

    Pour ma part je conseille de créer une arborescence de dossiers pour gérer le temps
    2016
    janvier
    février
    mars
    ...
    2017
    janvier
    février
    mars
    ...

    et de copier les fichiers de la période précédente (source et analyse) toujours sous le même nom : ainsi l'actualisation suffit.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Territoire de Belfort (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Août 2017
    Messages : 20
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    Par facilité et par manque de temps et d'expériences, j'ai finalement décidé de bricoler mon fichier source à chaque fois en ajoutant des lignes comprenant les valeurs manquantes et en filtrant l'affichage de mon TCD pour ne pas qu'ils les affichent.

    Merci encore pour le conseil pour l'arborescence de dossiers, c'est ce que j'ai du coup mis en place.

    Un grand merci à toi 78chris pour avoir pris le temps de te pencher sur mon problème, d'y avoir répondu et de partager tes lumières sur l'approche à prendre.

    Bakamii.

    Je mets le sujet en résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/11/2010, 18h42
  2. Tableau croisé dynamique : forme des graphiques
    Par onejock dans le forum Excel
    Réponses: 6
    Dernier message: 12/08/2008, 15h44
  3. Tableau croisé dynamique avec critère
    Par gege87270 dans le forum Macros et VBA Excel
    Réponses: 35
    Dernier message: 12/06/2008, 15h22
  4. Réponses: 3
    Dernier message: 22/11/2007, 14h44
  5. Réponses: 6
    Dernier message: 20/02/2007, 11h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo