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

Conception Discussion :

Optimisation tableau de bord interactif [XL-2016]


Sujet :

Conception

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 80
    Points : 33
    Points
    33
    Par défaut Optimisation tableau de bord interactif
    Bonjour à tous,
    Il s'agit d’un tableau de suivi de collaborateurs sur divers indicateur qui se présente de la manière suivante

    Onglet DATAS :

    DATE_ACTION NOM_AGENT INDICATEUR1 INDICATEUR2..... INDICATEURN

    Onglet TCD :

    tableau croisé dynamique (nommé TCD)

    FILTRES : DATE_ACTION
    LIGNES : NOM_AGENT
    VALEURS : Somme de INDICATEUR1
    .
    .
    Somme de INDICATEURN

    et une chronologie sur le champ DATE_ACTION

    Onglet STATS-AGENTS :

    NOM_AGENT INDICATEUR1 INDICATEUR2..... INDICATEURN
    =TCD!A4 =SIERREUR(LIREDONNEESTABCROISDYNAMIQUE("Somme de INDICATEUR1";TCD!$A$3;"Agent";$B20);"") et ainsi de suite pour chaque indicateur

    J'ai recopié la ligne ci-dessus 200 fois

    Sachant que avec les RTT, absences, roulements...
    Je n'ai pas les mêmes agents présents tous les jours

    En changeant la plage de dates avec la chronologie, je me retrouve donc avec des lignes sans valeurs (par exemple une plage de dates pour laquelle le TCD ne comptabilisera que 80 agents)

    J’aimerais savoir comment pallier à cela

    Je pensais par exemple une fonction vba qui à chaque changement de plage de dates sélectionnées recopierait la 1ère ligne de formules autant de fois que de données de lignes de données dans le TCD
    et effacerait le reliquat de lignes inexploitées
    Le soucis est que je ne sais pas le faire

    En espérant être clair dans l’énoncé

    Une fois cela résolu,je souhaiterais :
    - Afficher dans un autre onglet le détail d'un agent sélectionné pour la période choisie (1 ligne par jour)
    - Trier le TCD sur un champs sélectionné pour mettre à jour l'onglet STATS-AGENTS

    Mais il faudra peut-être que j'ouvre une nouvelle discussion pour ces 2 derniers points, en temps voulu ?

    Merci à tous ceux qui prendront le temps de m'apporter une réponse

    Cordialement

  2. #2
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,

    Pourrais-tu nous joindre une copie d'écran du fichier actuel + résultat attendu. C'est un peu compliqué à visualiser avec du texte seulement

    Petite idée comme ça avec la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(LIREDONNEESTABCROISDYNAMIQUE("Somme de INDICATEUR1";TCD!$A$3;"Agent";$B20);"")
    Vu que tu le nom de l'indicateur inscrit sur la première ligne, tu peux l'utiliser au lieu de recopier chaque formule avec le nom de l'indicateur. Supposons que les indicateurs sont en ligne 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(LIREDONNEESTABCROISDYNAMIQUE("Somme de " & A$1;TCD!$A$3;"Agent";$B20);"")
    Comme tu le fais déjà avec le nom de l'agent.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 80
    Points : 33
    Points
    33
    Par défaut
    Nom : copie_donnees.jpg
Affichages : 176
Taille : 90,6 Ko

    Bonjour,
    Merci pour la réponse
    dans la copie d'écran ci-dessus, on peut voir qu'il n'y a que 2 agents pour la période sélectionnée (j'ai modifié la source originale pour préserver les données personnelles)

    la formule : =SIERREUR(LIREDONNEESTABCROISDYNAMIQUE("Somme de INDICATEUR1";TCD!$A$3;"Agent";$B15);"") dans la cellule E15 est recopiée 200 fois dans les lignes dessous, en prévision.

    Je voudrais simplement qu'elles soient supprimées à partir de la ligne 17, sachant que si je choisis une autre plage de dates dans le sélecteur (la chronologie)
    mon TCD comprendra peut-être 50 agents, il faudra donc dans ce cas renseigner les lignes 15 à 65 dans la feuille ci-dessus

    Dans l'attente de votre réponse

    Cordialement

  4. #4
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Bonjour,

    J'ai plusieurs pistes de réflexion à ce sujet.

    Pourquoi faut-il effacer la formule ?
    La formule que tu as écrites avec le SIERREUR(...;"") permet d'avoir une cellule vide s'il n'y a pas d'agent en colonne B. Cela te donne donc un tableau propre selon le nombre d'agent inscrits sur la colonne B. Tu pourrais même adapter les couleurs avec une mise en forme conditionnelle (colorier en bleu si la cellule <>"").

    Pourquoi passer par un tableau et ne pas prendre directement le TCD ?
    C'est vrai que les TCD générés automatiquement par Excel n'ont pas un super design, mais il peut être modifié ! Donc avec un peu de modification, tu pourrais avoir un TCD qui ressemble tout à fait au tableau que tu présentes. Or le TCD se met automatiquement à jour en terme de longueur.
    Vu que la formule dans ton tableau ne fait que appel aux données du TCD, a priori, tu pourrais te contenter du TCD.

    Pour changer le nom des colonnes => paramètres de champ.
    Mettre les lignes de sommes etc. => Option du TCD
    "Totaux et filtre" => enlever les totaux
    "Affichage" => "Enlever la légendes des champs et les listes déroulantes" pour enlever "étiquette de ligne"
    Dans création en cliquant sur la double flèche en bas à droite, tu peux créer ton propre TCD. Il faut un peu bidouiller pour trouver ce qu'on veut exactement.
    Nom : forum13.PNG
Affichages : 178
Taille : 106,2 Ko

    Passer par VBA
    Avec Excel seul, il n'est pas possible d'ajouter ou d'effacer automatiquement le contenu d'une cellule. Pour cela, il faut passer par VBA. Est-ce que tu t'y connais ?
    Tu pourras t'aider de l'enregistreur de macro pour savoir comment tirer des formules et comment effacer des cellules.
    Pour connaître le nombre de ligne que dois comporter ton tableau, tu devras utiliser la fonction End.

    J'attends ton retour pour savoir sur quoi on part

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 80
    Points : 33
    Points
    33
    Par défaut
    Bonjour,
    Merci beaucoup pour la réponse.
    Pour répondre aux 2 premières questions, ce document s'adresse aux différents services de productions, ainsi qu'à la direction. L'objectif étant de produire un état irréprochable au niveau du design, et de ne faire apparaître aucun calcul intermédiaire, juste le rendu et de manière la plus intuitive possible.
    De plus la disposition peut être amenée à évoluer, ainsi que les indicateurs. Et dernière chose, au dessus du tableau, je fais apparaître une consolidation par équipe (un agent étant affecté à une équipe)
    Donc la présentation du simple TCD ne me semble pas approprié (il sera même masqué)

    Je pense effectivement passer par vba, je commence à m'y intéresser, mais suis loin d'être un expert
    Dans mon esprit je pensais garder la 1ère ligne de formules, effacer les lignes suivantes, jusqu'à la fin du document, puis recopier cette ligne n fois (n étant le nombre de lignes du TCD -1)
    à chaque fois que la chronologie est modifiée
    Pour ce dernier point, j'ai un TCD qui ne prend que le champs LADATE et 2 cellules à coté : MAX de la colonne et MIN de la colonne
    Je pensais tester le changement de ces 2 valeurs pour remettre à jour mon tableau
    Mais côté technique je sèche.
    Est-ce que déjà, l'idée est bonne dans l'absolu ?

    Je pensais également tester un double-clic sur la ligne d'en tête de mon tableau, pour aller trier le TCD sur celle-ci, et donc présenter le tableau trié sur l'indicateur sélectionné par l'utilisateur

    Dans l’attente d'un retour.

    Cordialement

  6. #6
    Membre émérite
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Points : 2 813
    Points
    2 813
    Par défaut
    Est-ce que déjà, l'idée est bonne dans l'absolu ?
    A priori, ça me paraît pas trop farfelu

    Dans mon esprit je pensais garder la 1ère ligne de formules, effacer les lignes suivantes, jusqu'à la fin du document, puis recopier cette ligne n fois à chaque fois que la chronologie est modifiée
    • "Jusqu'à la fin du document" : il faudra utiliser End. Tu connais cette formulation ? :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      derniereLigne = Range("A" & Rows.Count).End(xlUp)
    • "recopier cette ligne n fois" ... ou utiliser Autofill. Aide-toi de l'enregistreur de macro pour savoir comment l'utiliser. Ce sera mieux que de recopier n fois la formule (et donc de faire une boucle).
    • "à chaque fois que la chronologie est modifiée" : il faudra sûrement s'intéresser aux évènements => https://silkyroad.developpez.com/VBA/EvenementsFeuille/ ... mais je serais plutôt partisane de mettre un bouton quand on veut générer le rapport. A mon avis ça risque de t'embrouiller plus qu'autre chose les évènements. Surtout quand je lis ceci :
      Je pensais tester le changement de ces 2 valeurs pour remettre à jour mon tableau
      Je vois pas trop comment déclencher une macro sous condition de 2 évènements

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 80
    Points : 33
    Points
    33
    Par défaut
    Désolé d'avoir tardé à répondre, j'avais délaissé le projet ces derniers temps
    Merci pour toutes ces informations, je vais me explorer ces pistes?
    Je vais donc clôturer le sujet et ouvrirai une nouvelle discussion, en cas de probable sur un point précis.
    Cordialement

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 07/04/2016, 09h08
  2. Réponses: 10
    Dernier message: 27/02/2014, 18h16
  3. Tableau a bord rond :)
    Par NeHuS dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 14/01/2005, 13h34

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