Template Grist : Gestion des Congés

Introduction et Objectifs :

Cet outil a été initialement construit pour la gestion des congés et absences pour les petites collectivités.

Il est déclinable pour d’autres organisations (service, équipe, département, etc.).

Il est idéal pour un effectif allant de 5 à 200 personnes.

Au delà, on privilégiera plutôt un outil spécifique du marché, pour des questions de visibilité, d’automatisations et de robustesse.

Les fonctionnalités principales sont :

  • Accéder à son solde de congés

  • Faire une demande de congés

  • Faire une demande d’heures supplémentaires / de récupération

  • Valider / Refuser les congés de son équipe

  • Visualiser les congés dans un calendrier

L’outil assure la gestion des congés et absences suivants :

  • Congés Annuel (CA) - ou Congés Payés

  • Réduction du temps de travail (RTT)

  • Jours de fractionnement (FR)

  • Compte Epargne Temps (CET)

  • Heures supplémentaires (RC)

  • Enfant Malade (ENFM)

  • Journée de formation (JF)

  • Autorisation Spéciale d’Absence (ASA)

  • Congés Maternité (MAT)

  • Congés Maladie Ordinaire (CMO)

  • Évènement Familiaux (EF)

  • Autres

Voici un aperçu en 5mn de l’outil :

https://www.loom.com/share/0b8aa3bf0be841b2aa5dae3b69a38444?sid=ac24829f-6efd-4874-9710-c5323247d12a

Ça vous intéresse?

Je vous accompagne pour vous lancer, c’est parti !

1. Télécharger le Template

Pour construire votre propre version de l’outil, vous avez 2 options :

  1. Télécharger Template Gestion des Congés (376 Ko)

  2. Uploader le fichier dans votre espace de travail

    • Bouton Nouveau > Importer un fichier

OU

  1. Sur les instances ANCT et DINUM, cliquer sur Modèles, en bas à gauche de l’écran

  2. Cliquer sur le template Gestion des congés et absences

  3. Cliquer sur Enregistrer une copie en haut à droite

2. Paramétrage du document

  1. Faire le nettoyage du jeux de données de démo
  • Supprimer toutes les lignes des pages suivantes :
    • Le Personnel
    • Demandes de Congés
    • Heures Supplémentaires
  • Pour cela, sélectionner de la 1ère ligne à la dernière ligne avec un cliquer-glisser, puis clic droit et supprimer
  1. Renseigner les informations sur vos agents dans la page Le Personnel

  2. Dans la page Solde Congés, il faut s’assurer que tous les agents apparaissent

    • Le plus simple est de copier-coller la colonne « Nom Complet » de la page Le Personnel, dans la colonne « Nom de l’agent » dans la page Solde Congés
  3. Compléter / Modifier les règles de congés inhérent à votre organisation dans la page Info Congés.

    • Les informations contenues dans cette page ont été rédigé par le service RH d’une collectivité, vous pouvez l’ajuster selon vos règles internes de congés

    • Cette page sera visible par vos agents/utilisateurs

  4. Mettre à jour la liste des jours fériés en ajoutant des lignes pour l’année en cours et celle à venir dans la page Paramètres

  5. Si votre organisation n’utilise pas certains types de congés (RTT par exemple) vous pouvez masquer les colonnes qui concernent ces congés

    • Vidéo détaillée : https://www.loom.com/share/fee63443d9744f318521c7b70bb7471a?sid=db9a9a52-a898-4fce-8221-00404eea040d

    • Dans la page Solde Congés, en cliquant droit sur la ou les colonnes en question puis Masquer la colonne

    • Il faut ensuite supprimer la possibilité à vos agents de faire une demande de congés de ce type via le formulaire. Pour cela :

      • Page Demande de Congés > cliquer sur la colonne « Type de congés »

      • Ouvrir le panneau de créateur à droite > Onglet Colonne

      • Zone « Type de colonne » > Retirer les options de congés que vous voulez dans la partie « Choix Unique »

    • Si vous ne souhaitez pas utiliser le module de gestion des heures supplémentaires, vous pouvez supprimer les pages Formulaire Heures Supp et Heures Supplémentaires

  6. Initialiser les Formulaires de Congés et des Heures Supplémentaires

    • Vidéo détaillée : https://www.loom.com/share/7e49be14deb84bd0b0993a75af9cb723?sid=7f92cb15-4b81-4278-9cb7-2dd87d7c359e

    • Aller dans la page Paramètres

    • Au dessus de la table des jours fériés, vous avez 2 vues réduites, cliquer sur Paramétrage Formulaire Congés

    • Cliquer sur Partager (en bas du formulaire) puis Copier le lien

    • Cliquer sur la page Formulaire Congés

    • Ouvrir le panneau de créateur à droite

    • S’assurer d’être dans l’onglet « Personnalisé » et coller l’URL dans la zone Widget

    • Répéter l’opération avec le Formulaire Heures Supp

  7. Inviter les agents à Grist :

    • Bouton Partager en haut à droite

    • Gérer les utilisateurs

    • Ajouter les adresses mails des agents et donner leur un rôle (pour plus de détails, aller voir la page « Documentation », Section 2, et lire la partie « Inviter un agent au document Grist »

    • Penser à cliquer sur le bouton Confirmer

    • Partager l’URL de Grist à vos collègues pour qu’ils puissent se connecter à l’outil (il n’y a pas d’envoi automatique de mails)

3. Utilisation de l’outil

Toutes les fonctionnalités de l’outil sont détaillées dans la page Documentation, section 2 : Utilisation de l’outil.

Je vous invite à les lire afin de prendre connaissance des fonctionnalités principales mais aussi les subtilités de l’outil.

Ici je vais faire un focus sur les quelques cas complexes qui méritent de passer un peu plus de temps.

Permissions Avancées

Les permissions avancées permettent 2 choses dans cet outil :

  1. Avoir une vue épurée : voir uniquement son propre solde de congés (et ses demandes) et celui de son équipe

  2. Permettre uniquement aux responsables d’équipe et aux administrateurs de valider les congés

La bonne nouvelle c’est qu’il n’y a rien à faire (ou presque), tout est déjà paramétré.

Il vous suffit de remplir 3 colonnes dans la page Le Personnel :

  • Responsable

  • Responsable Hiérarchique

  • N+2

Une fois que c’est fait, les permissions avancées fonctionneront comme mentionné plus haut.

Dans la vidéo ci-dessous on voit ensemble 2 vues différentes :

  • Celle d’un agent

  • Celle d’un manager/responsable d’équipe

Vidéo : https://www.loom.com/share/996f6209dd8443b4836682d8f179bf5d?sid=9a5d952f-d40e-43c4-a349-230b43574f8c

Envoie de Mail

A ce jour, il n’y a pas d’envoi automatique de mail lorsque les congés sont validés ou refusés.

Pour autant, nous avons créé une aide pour l’envoi de mail en quelques clics.

Dans la page Demande de Congés, il existe une colonne nommée « Envoi Mail ».

L’objectif de cette colonne est de préparer un mail en automatique avec toutes les informations concernant la demande de congés de la ligne en question. Il ne restera plus qu’à relire et l’envoyer pour informer l’agent de la validation ou du refus du congés.

En cliquant sur l’URL « Envoyer Mail », cela va ouvrir votre client mail avec les informations pré-remplies suivantes :

  • Email du destinataire

  • Sujet du mail

  • Corps du mail

Il ne vous reste plus qu’à relire les informations et cliquer sur envoyer.

Actions à réaliser lors du passage à une nouvelle année

Vidéo détaillée : https://www.loom.com/share/21757da4ff1247af9e7dd49aa03ac6d0?sid=5644f3ba-32b3-440f-aa5d-eeac217e030e

  1. Dans la table Paramètres, ajouter les nouveaux jours fériés au tableau

  2. Dans la table Le Personnel, passer les « CA attribués N » dans la colonne « CA attribués N-1 » et les « Droits en RTT N » dans la colonne « Droits en RTT N-1 »

  3. S’il y a un changement de formule ou de rythme d’un agent, une arrivée ou un départ prévu, dans la table Le Personnel, modifier les « CA Attribués N » et « Droits en RTT N » en conséquence, ainsi que le « Nbre Heures Hebdo » et « Nbre Jours Hebdo »

  4. Faire le passage des CA et RTT restants en CET (voir passage des congés en CET plus bas)

4. Règles de congés complexe

Toutes les règles sont détaillées directement dans Grist dans la page Documentation, dans la Section 3.

On va tout de même faire un focus ici sur les règles complexes.

Jours de fractionnement (FR)

Vidéo : https://www.loom.com/share/ae64f9579a9949ff9cdccbb24c15ec8b?sid=55ccd100-be5c-49cb-a86b-818a5969bd17

  • 1 jour de fractionnement est accordé si l’agent a pris, pour l’année N, entre 5 et 7 jours de congés entre le 1/01 et le 30/04/N et entre le 01/11 et le 31/12/N

  • 2 jours de fractionnement sont accordés si l’agent a posé 8 jours ou + pendant les mêmes périodes.

Important : Une fois vos jours de fractionnement acquis, ils seront automatiquement ajoutés à votre solde de congés annuels (CA).
Le chiffre dans la colonne « FR N » est uniquement indicatif de l’attribution acquise.

Si vous souhaitez modifier la période de fractionnement (que ce soit les dates ou le gain de jours de congés), contactez moi à cette adresse : donnees@anct.gouv.fr

Attention, si votre organisation n’utilise pas les Jours de fractionnement, alors regardez la vidéo ci-dessous et suivez les actions à réaliser.

Si vous ne faites pas cette manipulation, les FR vont impacter les quantités de CA des agents.

Vidéo : https://www.loom.com/share/4efb6455157e4ec487911534cb13ed27?sid=3dec5fc6-d08b-4e57-9ebf-72e8e4785ebb

Passage des congés non consommés en CET

Pour passer des Congés Annuels (CA) ou RTT non consommés en CET, il faut réaliser une manipulation spécifique dans l’outil.

Cette manipulation est en 2 temps :

  1. Basculer le solde CA (ou RTT) non consommés à zéro

  2. Ajouter ces CA (ou RTT) dans les CET

Pour cela, je vous invite à regarder la vidéo ci-dessous.

Cette manipulation n’est pas des plus intuitives, donc suivez bien les étapes à la lettre.

Vidéo : https://www.loom.com/share/febfe571cd5940ed9c96961c36fe2106?sid=1571af83-0d2c-4f4e-978f-910691674f98

Congés Enfant Malade (ENFM)

Il est nécessaire de cocher la case « Enfant(s) - 16 ans » dans la page Le Personnel, c’est cette action qui va générer les congés Enfants Malade (ENFM).

La formule de calcul est ensuite la suivante : Nbre de jours Hebdo travaillé par l’agent +1

Donc si l’agent travaille 5 jours par semaine, il aura droit à 6 ENFM pour l’année.

Cette formule est arrondie à la demi-journée supérieure (ie. 3.25 → 3.5)

Congés Maladie Ordinaire (CMO)

Pour les Congés Maladie Ordinaire, contrairement aux autres congés ce n’est pas l’agent qui fait une demande de congés, mais un administrateur (Direction ou Service RH) qui va renseigner le CMO directement dans la page Demande de Congés.

Bien penser à valider.

4 « J'aime »

@nicolas.imbert, super boulot et documentation super complète. Merci beaucoup :slight_smile:

1 « J'aime »

Merci Nicolas pour le partage.
ça donne de bonnes idées sur ce qu’on peut faire, notamment sur la restriction des droits. Beau boulot !
Dommage, qu’on ne puisse pas encore conditionner les entrées dans les listes déroulantes des formulaires. En l’état n’importe quel personnel peut faire une demande pour un autre collègue

Merci Matt !
Oui c’est une limite actuelle de Grist. J’imagine mal des agents/utilisateurs mal intentionnés, mais plutôt des erreurs de saisies. Dans la pratique, avec les collectivités qui utilisent cet outil au quotidien, cette situation n’arrive jamais.

Une alternative serait de demander aux agents de se connecter à Grist et de remplir le formulaire dans Grist (et non sur une URL externe). Dans ce cas on pourrait avoir un tracking de la demande via une colonne de Paternité (Créé par) et donc s’assurer que ce soit bien la bonne personne qui a fait la demande.

1 « J'aime »

Bonjour,

Super travail !

Ce n’est pas spécialement une requête mais je tenais à évoquer pourquoi cela ne convient pas au fonctionnement de mon service :

  • Nous souhaitons que les congés (et du coups absences) de tous soient visible pour tous ;
  • Nous préférons une vue permettant de comparer facilement par service la présence ou l’absence de chacun (donc pas calendrier) ;
  • L’outil informatique est la pour faciliter le suivi et la planification mais il ne peut se substituer au logiciel institutionnel (lourd d’utilisation) et à la feuille institutionnelle de validation des congés. Un système de validation n’est donc pour le moment pas souhaitable. Par contre, permettre à l’utilisateur de ne pouvoir modifier uniquement sa propre ligne oui !

Je met en image ci-dessous le tableur Excel que j’ai mis en place dans mon service. Il crée automatiquement 12 feuilles représentant les mois de l’année avec les fériés et week-end, et une feuille récap des congés restant par agent. Le fichier est généré avec du VBA en fin d’année n pour le calendrier n+1. Le code VBA est ensuite enlevé.

Notre outil fonctionne mais un équivalant sur GRIST serait top pour éviter les problèmes d’Excel (suppression du fichier/de données par un utilisateur, accès au fichier qui est forcément sur un serveur, gestions des droits, fichier partagé, etc.).

J’essaye d’apprendre le Python et de me familiariser avec GRIST. Dans un futur lointain je me pencherai peut-être sur cela.

Dans tous les cas c’est un sacré boulot bravo !

1 « J'aime »

Merci Julien pour ta réponse.
En effet, les besoins ne sont pas les mêmes et je comprends pourquoi tu as cette vision qui permet de comparer les congés rapidement.
Ça doit être envisageable sur Grist aussi avec un peu de travail, avec quelques vues spécifiques filtrées par mois. Et surtout le widget TCD qui permettrait d’avoir cette vue : les Noms en ordonnées et les Dates en abscisses.
Bref à tester ! Mais beau boulot aussi de ton côté !

Bonsoir à tous ! Et merci Nicolas pour ce modèle :slight_smile:

J’ai pris le temps de le manipuler aujourd’hui et il me semble voir d’ores et déjà une piste d’amélioration :
À l’heure actuelle, il faut remplir manuellement la table « Soldes Congés » en copiant-collant les noms des agents dedans. Il est vrai que l’effectif ne change pas tous les quatre matins, mais je me demandais ce qui justifiait de séparer les données sources des pages « Soldes Congés » et « Le Personnel ». S’il n’y a qu’une ligne par agent dans les deux tableaux, pourquoi pas n’en faire qu’un seul ? J’imagine que cela a à voir avec les permissions complexes sur l’un et l’autre ; j’essaierai de faire des tests de mon côté, mais tu as sans doute un avis plus éclairé sur la question.

Encore merci !

P.S. : et pour le fun, j’ai tenté d’utiliser la vue personnalisée Ws-timeline de Raphaël Guénot pour essayer de reproduire le tableau que voulait faire @Julien.Demantes. C’est imparfait (car il faut apparemment calculer les durées des congés en heures ; et vous remarquerez que les jours fériés n’apparaissent pas) mais j’ai l’impression que ça peut fonctionner :

2 « J'aime »

J’adore cette communauté ! Pleins de petites briques par ci par là et l’on construit quelque chose ensemble.

Merci @nicolas.imbert ! Je suis satisfait de ce que j’ai fait. Les seuls problèmes que j’ai sont : les limitations de sécurité d’Excel, le fait d’être sur une version pas à jour (2019) et l’accessibilité du fichier (emplacement et lecture seule).

Incroyable @ailepet ! C’est marrant l’autre widget dont j’attend avec impatience la version Gantt c’est celui-ci ! J’ai déjà un peu échangé avec le dév.

L’idée de l’utilisé est très pertinente. Tiens nous au courant.

Je n’est pas encore les compétences pour bidouiller moi-même. Je n’ai pas dév depuis 10 ans et jamais appris le Python. Mais c’est dans mes objectifs l’année prochaine ! J’aimerai tellement avoir une vraie formation mais mon hôpital n’a pas de sous pour quoi que ce soit.

2 « J'aime »

@ailepet : c’est une très bonne question, on pourrait tout à fait avoir qu’une seule table ! Et 2 vues qui n’affichent que certaines colonnes pour « Le Personnel » et « Solde congés ».

Dans les bonnes pratiques de base de données relationnelles, je ne saurai dire ce qui est le mieux. Je crois que j’aime bien avoir des tables distinctes pour des utilisations métiers différentes (RH d’un côté et Solde congés de l’autre) plutôt qu’une seule grosse table avec pleins de colonnes. Mais c’est discutable !
Et comme tu l’as si bien dit : « il est vrai que l’effectif ne change pas tous les quatre matins » donc l’impact est vraiment minime. Il y a le paramétrage du début, puis une petite manip pour chaque arrivée et départ de collaborateurs.

Et oui, j’adore la vue Timeline, c’est une super idée pour avoir une représentation graphique différente du widget calendrier. Ça pourrait tout à fait être un complément, j’y penserai.

@Julien.Demantes : très intéressant ton retour sur les limitations d’Excel. Je pense que le plus ennuyant est l’aspect collaboratif (emplacement et lecture seule comme tu dis). Et ça fonctionne bien aussi parce que vous n’avez pas besoin de limiter l’accès avec des permissions avancées. Ce qui n’est vraiment pas le cas de toutes les structures et organisations.

Pour la formation python, un développeur de GristLabs a créé un jeu pour apprendre le python, tu peux voir le post de Aude à ce sujet sur le forum : Apprendre le python
Je ne l’ai pas testé personnellement mais il parait que c’est super bien fait et très ludique, si tu veux essayer :slight_smile:

2 « J'aime »

Bonjour
Nous avons exactement le même type de tableau dans notre service, et donc le même besoin : pas de gestion / validation des demandes, uniquement une vue à plat de l’équipe, croisée avec les absences matin et/ou am, pour chaque jour du calendrier.

Bonjour,
Content de voir que nous ne sommes pas les seuls avec ce fonctionnement.

Je ne peux pas partager de fichier Excel sur ce forum mais si vous êtes intéressé je peux vous fournir mon fichier de congé via France Transfert.

Voici le code VBA qui génère les 12 mois de mon fichier :

Sub Copier()
Dim i As Integer

Application.ScreenUpdating = False

For i = 1 To 12
    ActiveWorkbook.Sheets("Modèle").Copy _
    After:=ActiveWorkbook.Sheets("Modèle")
    ActiveSheet.Name = MonthName(13 - i)
    ActiveSheet.Shapes("Rectangle 1").Delete
    ActiveSheet.Range("D:AH").Copy
    ActiveSheet.Range("D1").PasteSpecial Paste:=xlPasteValues
    ActiveSheet.Range("D5:AH5").ClearContents
    Select Case ActiveSheet.Name
        Case "avril", "juin", "septembre", "novembre"
        Columns(34).Delete
        Case "février"
            If IsDate("2/29/2025") = True Then
            Columns("AG:AH").Delete
            Else
            Columns("AF:AH").Delete
            End If
        Case Else
        'do nothing
    End Select
    Next
Application.CutCopyMode = False
Application.ScreenUpdating = True

End Sub

Bonne journée.

1 « J'aime »

Bonjour ! un grand merci pour ce travail. Je me retrouve cependant face à un petit problème d’utilisation.
J’ai suivi pas à pas les étapes et bien renseigné la liste des personnels ainsi que tableur solde de congés en faisant le copier coller. Ce dernier est correct.

Cependant, lors de l’utilisation du formulaire de demande de congé, qu’on choisisse des congés annuels ou des RTT, la colonne « nombre de jours » reste à 0, peu importe la période choisie. Naturellement, le solde ne diminue pas après une validation.

D’où peut venir l’erreur ?

Merci encore !

[edit] en fouillant un peu j’ai fini par trouver comment faire. Mes agents sont à tous à temps complet sans semaine variable. J’ai fini par ajouter les colonnes jours travaillés semaines paires et impaires et rempli par l’ensemble des jours de la semaine. Le décompte de jours sur une demande de congés se fait désormais mais pas pour les RTT

[edit 2] pour les RTT, j’ai modifié le script en ajoutant le même que pour les congés, en modifiant le mot conges par RTT. j’avance !

1 « J'aime »