Génération automatique d'un document depuis des données saisies

Bonsoir à tous,

Je viens vers vous car je suis vraiment bloqué sur un projet de planning de roulement que je suis en train de réaliser pour une résidence de personnes âgées.

Ce planning (en PJ) permettra de générer pour chaque roulement (4x7jours) un planning opérationnel par intervenant en récupérant les données depuis la feuille planning du classeur.

Je vous explique rapidement le fonctionnement .

  1. Paramètres

En retrouve pour les paramètres :

  • la feuille codes abs qui contient tous les codes d’absences.
  • La feuille Horaires n’est pas vraiment utilisée pour l’instant sauf pour le nombre d’heures max par jour, par la suite on gérera les horaires de l’établissement et les heures de nuit.
  • La feuille Personnel, liste tous les métiers de la résidence ainsi que le nom de chaque personnel rattaché au métier.

Le premier tableau me permet de séparer les noms des prénoms et faire une concaténation.

Le 2ème récupère la liste des noms concaténés par métiers. (il y a sûrement un doublon là avec le tableau précédent...)

En dessous, il y aura la liste des remplaçants, qui reprend en fait tous les salarié(e)s quel que soit le métier dans une seule colonne.

Ce que je recherche à faire

Revoir le système de cette feuille pour permettre à un utilisateur lambda de rajouter facilement un métier et/ou un salarié(e) sans casser le lien avec les menus déroulants dans la feuille personnel permettant de sélectionner un titulaire en fonction du métier.

  • Planning Théorique

C'est le cœur du système.

On rajoute une date de début de vacation et automatiquement on a la date de fin, le nom du mois en cours et les en-têtes du planning qui se mettent à jour.

On clique sur Ajoutez un titulaire ou un remplaçant et on remplit son planning de roulement.

On saisit dans le menu déroulant le métier, puis le nom du salarié rattaché au métier et on remplit les heures prévues et/ou le code absence s’il est absent.

S’il est absent, on rajoute un bloc remplaçant et on sélectionne son nom dans le menu déroulant, puis on saisit son planning.

A la fin de chaque ligne, il y a un tableau qui calcul le total des heures par semaine et par cycle.

Ce planning sera imprimer au format A3.

  • Feuille d’émargement

Il s’agit du planning opérationnel de chaque intervenant(e).

On doit se servir du gabarit visible dans la feuille planning.sal pour la génération automatique des plannings pour chaque intervenant (titulaires, remplaçants, etc…)

Ce que je recherche à faire

Mettre en place un bouton (macro) dans la feuille personnel pour permettre la génération automatique de feuille d’émargement pour chaque intervenant en .docx et/ou .pdf (si possible) avec le nommage suivant : Planning-nom-prenom-poste-année-mois-jour.docx dans un dossier PLANNINGS-OP-ANNEE-MOIS-JOUR qui sera lui aussi créé automatiquement et où année, mois et jour sont récupérés du planning théorique.

Les données à récupérer dans la feuille personnel pour le gabarit sont : Le nom complet du salarié, la date de début et fin de vacation, les horaires des plages 1,2 et 3, le code absence si absence, le nombre d’heure prévues (total des heures de la journée)

Exemple de l’arborescence souhaité

planning.xlsm

  • PLANNINGS-OP-ANNEE-MOIS-JOUR (dossier)
  • -Planning-nom-prenom-poste-année-mois-jour.docx
  • -Planning-nom-prenom-poste-année-mois-jour.pdf

Les plannings seront imprimés au format A4.

Je suis désolé si mon texte est long, mais je voulais vous donner tous les éléments.

Merci par avance pour votre retour.

Amicalement,

Binaire 01

137planning.xlsm (67.01 Ko)

Bonjour,

Une petite contribution, embryonnaire par rapport à l'ensemble de ton projet, recomposition de la feuille Personnel.

Les modifications apportées à la ListeCDI sont répercutées dans les listes par Métiers.

Je ne m'étends pas pour l'instant sur les détails ou le code. A toi d'étudier et voir si cela va dans le sens que tu souhaites. J'ai laissé de côté les Remplaçants, car ce n'était pas clair à leur propos, et leur utilisation dans planning n'est pas claire, mais cela pourra se compléter.

Pour les autres questions, je les ai laissées de côté pour le moment. Je pourrais évidemment regarder si je suis amené à d'autres contributions.

De ce que j'ai vu d'autres, l'utilisation de planning est à préciser de façon détaillée... Le code (enregistré) ne mérite pas d'être conservé, j'ai donc supprimé les 5 modules standard. Je considère comme pré-requis pour envisager la suite :

  • un seul module Standard pour le code qui relève de ce type de Module (et pas d'ajout de module tant que ce n'est pas justifié par la nature du code...)
  • oublier l'enregistreur et à la place penser ! définir les opérations à réaliser pour les traduire en code, sans Select ni Activate ni Selection, en qualifiant les expressions devant renvoyer des objets, et en évitant le copier-coller tant que l'on peut faire autrement (et l'on peut faire autrement presque toujours !)

Cordialement.

Bonjour MFerrand,

C'est vraiment génial ce que tu viens de faire ! C'est énorme !!!

Tu as raison pour la partie enregistrement des macros et des copier/coller de codes que j'ai chiné par ci par là.

J'avoue être une bille en VBA (pour l'instant, car j'espère évoluer avec vous tous ) mais petit à petit j’engrange les bonnes pratiques.

Je teste rapidement tes modifications et je te fais un retour ce soir en précisant mieux les parties où je me suis mal exprimé.

Cordialement,

Binaire01

Bonsoir,

Ce que j'ai fait se limite à la feuille Personnel : que l'on puisse modifier la liste, ajouter des personnes, et que cela se répercute dans les listes par métiers. La macro qui assure la mise à jour est une évènementielle Change (dans le module de la feuille). J'ai redécliné tes tableaux d'origine en 3 tableaux Excel, mais en mixant avec des noms de plage de façon que tu retrouves à cet égard la situation que tu me semblais viser...

Les écarts avec ce que tu peux souhaiter devraient se situer au niveau Remplaçants (je n'ai pas vu comment ils devaient être définis) et en rapport avec l'utilisation à en faire sur planning, comme je l'ai indiqué.

Ce qui se passe sur cette feuille Personnel consiste simplement à la tenir à jour et faire en sorte que soient définies les listes dont on a besoin ailleurs.

La question essentielle qui va conditionner le reste est donc la façon dont tu entends constituer et utiliser le planning. L'important est de définir ce qu'on doit y faire et ce qui doit en résulter selon ce qu'on y fait. Un fois que l'on voit bien se qui doit se passer (et sans oublier ce qui ne soit pas se passer) selon actions de l'utilisateur, il devient beaucoup plus facile de penser le code qui le réalisera.

Cordialement.

Bonjour MFerrand,

Encore merci pour ta participation.

J'ai testé ton fichier en détail, mais je n'arrête pas de retomber sur un message d'erreur de VBA.

Je ne sais pas si je saisis correctement mais voici ma façon de faire :

  • Je rajoute un métier en le saisissant dans la cellule F11, par exemple INFORMATIQUE
  • Je me positionne en B23 pour saisir le nouveau salarié
  • Le sélectionne dans le menu déroulant le métier précédemment créé
  • En O3 une nouvelle colonne se crée avec bien le salarié à l'intérieur, mais l'en-tête ne porte pas le nom du métier mais par défaut Colonne1
  • Je me positionne sur la feuille planning, je sélectionne dans le menu déroulant en B20 le nouveau métier

Et là hop j'ai une erreur VBA (voir PJ)

Pourrais-tu stp m'expliquer stp si je fais pas bien quelque chose ?

J'espère ne pas abuser de ta gentillesse, mais pourrais-tu stp commenter ton code afin que je comprenne les différentes étapes ?

Merci par avance pour ton retour.

Binaire01

bug planning

Relis mon post, ce que j'ai fait se limite à la procédure qui met à jour la liste par métiers à partir de la liste des personnes...

Par ailleurs, le fait d'utiliser des tableaux Excel, compte tenu de leurs propriété, fait que ton ajout d'un métier se répercutera automatiquement dans la liste planning en B20. L'ajout d'une personne dans la liste, sur le métier ajouté, aboutit à son inscription dans la colonne correspondant au rang de métier dans la liste métier, parce que je ne l'ai pas verrouillée dans la mesure où le dispositif n'était pas encore complet.

Et j'ai laissé ce point de côté, parce que je ne connais pas son dimensionnement maximal. Lorsqu'on met un dispositif en place, pour que tout fonctionne correctement, on doit pouvoir définir à partir de quels éléments on le déclenche et de quels autres on cesse de le déclencher... Dans ton système, l'utilisation du planning n'est pour moi pas définie, je ne peux donc apprécier toutes les incidences d'utilisation, la question des remplaçants est nébuleuse et je ne l'ai pas encore comprise, enfin les ajouts de métiers n'étaient pas évoqués de façon très précises...

Je les ai donc laissé de côté, sachant que si on se met à ajouter ou enlever des métiers à tour de bras, c'est une organisation délirante ! Cela peut se concevoir mais de façon très très occasionnelle.

La procédure (car il ne peut y en avoir qu'une pour le même évènement dans la même feuille) doit être complétée :

  • par une action lors de modifications de la liste métiers, action qui doit être répercutée sur la structure de tableau métiers,
  • action à compléter par la reconstitution du tableau Métiers,
  • et la liste des personnes doit aussi être triée à chaque opération (je l'avais négligé...)

Mais la gestion des remplaçants n'est toujours pas incluse dans le dispositif, et je n'aime pas procéder par rustine, cela ne donne rien de bon. J'aimerais donc une vue globale...

Bonjour MFerrand,

Merci encore pour ton retour et désolé pour ma réponse tardive.

Je vais essayer d’être plus clair et concis dans mes explications.

Le but de ce planning est de gérer le roulement des salarié(e)s d’une résidence de personnes âgées.

Un roulement est composé de 4 semaines de 7 jours et peut démarrer à n’importe qu’elle date.

Le personnel intervenant peut être un salarié en CDD, en CDI, un stagiaire, etc… et peut intervenir le jour, la nuit et le week-end.

Tu trouveras en PJ la dernière mouture de mon fichier épuré au niveau des feuilles, du contenu et du code VBA.

On a une nouvelle fonctionnalité, un bouton qui permet de générer automatiquement des feuilles d'émargement à partir du planning et cela aux formats pdf et xlsx.

On a également un bouton permettant de supprimer les blocs titulaires et remplaçants en une seule fois.

En ce qui concerne la feuille personnel, sur laquelle je souhaiterais que l’on travaille pour l’instant, voici ce que je cherche à faire :

  • Ajouter une colonne métier, listant tous les métiers (IDE, PARAMEDICAL, etc…) que l’on pourra facilement mettre à jour en rajoutant, modifiant ou supprimant des entrées (comme tu me l’as déjà fait dans ton fichier précédent),
  • la modification des entrées de la colonne métiers (ajout, suppression, modification) met à jour directement un tableau adjacent : ajout d'une nouvelle colonne pour un nouveau métier, suppression d'une colonne (et de son contenu) si suppression d'un métier, modification du nom du métier dans l'en-tête de la colonne si modification du nom d'un métier,
  • On rajoutera ensuite des salarié(e)s dans le tableau ainsi créé,
  • une colonne remplaçants, rassemblera tous les salarié(e)s de tous métiers.

Une fois le feuille personnel modifiée, on pourra dans la feuille planning ajouter un bloc titulaire, sélectionner un métier et ensuite un salarié rattaché à ce métier.

Si l'on rajoute par contre un bloc remplaçant, on aura la liste complète de tous salarié(e)s

L'étape suivante consistera à rajouter dans la feuille horaires des heures de nuit et de rajouter 1 ligne pour faire ressortir le nombre d'heures de nuit travaillé /jour.

Je dois présenter un fichier fonctionnel le lundi 10 déc soir pour effectuer des tests et noter s'il faut rajouter des éléments et cela pour une mise en test/prod le 15 déc. J'avoue que je stresse un peu ...

N'hésite pas à me solliciter pour toute question, je vais pouvoir répondre rapidement ces jours-ci.

Je te remercie par avance pour ton aide et j'ai hâte de voir ta réponse.

Cordialement,

binaire01

Bonjour,

Je dois dire qu'au terme de diverses observations je ne vois pas où tu veux aller avec ton fichier...

La feuille planning dont l'usage n'était pas particulièrement clair, s'est sans doute épurée mais son usage est encore moins clair !

On ne sait pas plus qu'avant planning de qui ou quoi ? Alors savoir ce que l'on y saisit et ce que deviennent ces données n'est même pas envisageable.

J'avais pensé au départ que cette feuille n'était qu'une ébauche incomplète (pensant peut-être bêtement que lorsque l'on parle de planning dans une entité, il s'agit du planning de ladite entité...) mais visiblement rien n'est moins sûr.

J'avais commencé de travailler sur la liste de personnel en proposant une orientation de nature à aboutir à une gestion efficace de cet aspect. Et j'étais en attente des informations nécessaires pour le compléter et le boucler.

Je ne peux que constater que l'on revient en arrière, et en outre avec réintroduction de code enregistré. Conformément à ce que j'ai indiqué dans mon premier post sur le sujet, j'en conclus que l'orientation proposée ne te convient pas, donc bonne continuation tout de même...

Bonsoir MFerrand,

Je viens de lire ta réponse et je trouve que tu n'es pas juste du tout.

Parce que tu as pris la peine de m'écrire, je te réponds.

Ma réponse entre tes lignes.

Je dois dire qu'au terme de diverses observations je ne vois pas où tu veux aller avec ton fichier...

Pour quelqu'un qui ne voit pas où je veux aller, dès mon premier message, tu m'as fourni un début de solution que je t'ai dit me convenir alors je ne comprends pas ton propos là ?

La feuille planning dont l'usage n'était pas particulièrement clair, s'est sans doute épurée mais son usage est encore moins clair !

J'ai été plus que précis quant à son usage dans mon premier post, tu n'as juste pas lu ou/et compris. Il s'agit d'un planning théorique qui sera saisi en début de chaque mois pour avoir une vue générale de l'effectif qui interviendra "théoriquement" et quelles seront les heures "théoriques" que les intervenants feront. Si un titulaire ne peux pas intervenir, on prévoit 1 ou plusieurs remplaçants.

On ne sait pas plus qu'avant planning de qui ou quoi ? Alors savoir ce que l'on y saisit et ce que deviennent ces données n'est même pas envisageable.

J'avais pensé au départ que cette feuille n'était qu'une ébauche incomplète (pensant peut-être bêtement que lorsque l'on parle de planning dans une entité, il s'agit du planning de ladite entité...) mais visiblement rien n'est moins sûr.

Le planning est complet et fonctionnel, tu ne l'as juste pas utilisé comme il se doit, tu as sûrement ouvert et refermé le classeur.

Je t'assure que si tu tentais 2 min de le remplir, tu comprendrais.

J'avais commencé de travailler sur la liste de personnel en proposant une orientation de nature à aboutir à une gestion efficace de cet aspect. Et j'étais en attente des informations nécessaires pour le compléter et le boucler.

L'information, je te l'ai donné déjà, tu voulais savoir quel était le rôle des remplaçants et je te l'ai expliqué plus haut.

Je ne peux que constater que l'on revient en arrière, et en outre avec réintroduction de code enregistré. Conformément à ce que j'ai indiqué dans mon premier post sur le sujet, j'en conclus que l'orientation proposée ne te convient pas,

Alors là pas du tout, car mon planning est presque terminé et si j'ai utilisé du code enregistré c'est parce que comme je te l'ai expliqué je ne suis pas un expert VBA comme toi. Il faut un début à tout et quand on a pas le choix on fait avec les moyens du bord.

donc bonne continuation tout de même...

Ne t'inquiète pas, je ne te solliciterai plus si c'est ce qui te fait peur et pour ton info j'ai trouvé la solution en cherchant sur le forum.

Bref ... merci quand même et bonne continuation tout de même.

Il y en a un qui ne doit pas avoir les yeux en face des trous !

Dans mon premier post sur le sujet du 25/11, il me semblait avoir exprimé assez clairement le cadre de mon intervention :

Une petite contribution, embryonnaire par rapport à l'ensemble de ton projet, recomposition de la feuille Personnel.

Et en précisant que je laissais l'aspect Remplaçants de côté car pas clair au niveau utilisation, de même que l'ensemble des autres questions qui auraient nécessité au minimum un mode opératoire...

J'ai donc recomposé la feuille Personnel, de façon que sa gestion repose sur une liste générale à partir de laquelle s'opérerait automatiquement une répartition par métiers, code de mise à jour reposant sur une évènementielle, et l'ensemble utilisant des tableaux Excel. Plus une 2e évènementielle assurant la mise à jour de la liste de validation sur Planning, mais en laissant de côté les ajouts/suppressions de métiers et comme je l'avais préalablement indiqué la question des remplaçants.

Le cadre était parfaitement délimité ! Mais tu commences par vouloir réaliser une opération que je n'ai pas codée, et qui débouche sur une erreur parce que je n'ai pas verrouillé la chose à ce stade : ajout d'un métier. La chose avait été évoquée mais en savoir un peu plus là-dessus me semblait nécessaire : tout simplement parce qu'une résidence de personnes âgées dans laquelle on ajoute et supprime des métiers tous les mois, je conseillerais de la fuir au plus vite !!! Et si l'on peut envisager quelques métiers optionnels (en nombre très très réduits), ils doivent pouvoir être listés et gérés autrement que par libre ajout ou suppression. J'ai donc soulevé la question, restée sans réponse.

C'est sans doute hors Excel-VBA mais je n'ai aucune raison de travailler sur un projet dont je serais en désaccord avec la philosophie inhérente.

Puis vient ton second fichier : que tu me dises que ma proposition t'a intéressé est une chose, mais ton intérêt conduisant à la faire disparaître pour revenir à la version antérieure me paraît une option claire !

L'autre aspect des modifications que j'avais apportées avait consisté à éliminer tout le code enregistré qui figurait initialement, pour la simple raison que c'est la seule destination que j'envisage pour un tel code !

On pouvait à partir de là définir les objectifs recherchés dans le détail et procéder à l'écriture du code VBA correspondant... car faire avec les moyens du bord ça consiste à apprendre à écrire en VBA

Tu penses que tes propos suffisent à éclairer ton fichier et son utilisation, tant mieux pour toi, mais je ne partage pas ce point de vue et ne vois nullement comment établir le planning mensuel de global de l'établissement, qu'il soit théorique ou non, à partir de ta feuille planning... (j'ai beau scruter, je n'y vois qu'un salarié ! ) Difficile d'intervenir sur ce qu'on ne comprend pas...

D'autre part, j'ai fait une proposition sur un point, je poursuis et complète dès lors qu'elle est reprise, mais si elle disparaît je n'ai plus rien à poursuivre. Et par ailleurs, je ne travaille pas sur un fichier contenant du code enregistré avant de l'avoir supprimé...

Tant mieux pour toi si tu trouve ton bonheur ailleurs.

Rechercher des sujets similaires à "generation automatique document donnees saisies"