Outils pour gérer le planning des cours (ATER/MCF/PU)

Publié le 06 septembre 2021 dans [ academia, CNAM ]

Pour gérer le planning de mes cours, j’ai au fil des années développé un classeur numérique (surnommé ExcelDeLaMuerte™, hébergé sur Google Sheets). Après en avoir parlé à des collègues, il semble que ça puisse servir à d’autres. Voici donc une présentation de la chose, complétée par un outil bonus : un script Python permettant l’export vers un calendrier (type Outlook ou Google Agenda).

Le lien

Le fichier est publié ici, pour se faire une idée des fonctionnalités (cf ci-dessous pour la description). Il devrait être possible de le voir sur Google Sheets ici, et de le recopier (Fichier > Créer une copie).

Je ne suis pas certain que ça marche directement dans Excel/Office 365 (j’avais testé une ancienne version, qui ne marchait pas).

Description

Le classeur comporte deux types de feuilles : les plannings “par enseignant” (Planning_) et les plannings "par cours" (des _vues_ dans le langage bases de données).

On doit pouvoir faire du travail collaboratif avec ce classeur, mais je n’ai pas essayé.

Les feuilles de calcul

Vue d’un cours

Dans la feuille d’un cours, on saisit le détail des séances d’un cours, de façon à en avoir une vue synthétique : qui fait quelle séance, quel jour/à quelle heure, dans quelle salle, sur quel sujet ? Pour cela, chaque cours a une feuille de calcul dédiée, appelée par le nom du cours1 (suffixé de ALL, exemple : ABC123_ALL).

Un tableau simple comporte les séances (une par ligne) avec leurs attributs (nom du cours, semestre, date de début, fin, durée, type (cours magistral — CM, travaux pratiques — TP), le numéro dans la série (il y a régulièrement plusieurs séances du TP2, à des jours/horaires différents), l’enseignant⋅e, la salle et le sujet.

Séances: exemple

La saisie des dates est facilitée par la présence d’un calendrier. Les horaires de fin sont calculés à partir de l’horaire de début auquel est ajoutée la durée. Des “mises en forme conditionnelles” permettent de colorer les différents intervenants.

Un second tableau rassemble les quantités enseignées par chacun (avec conversions en HED/HTD2), de façon à permettre une comparaison avec ce qui a été validé côté université.

Planning par personne

Outre les vues par cours, le classeur présente une vue de tous les cours prévus pour une personne (par exemple : l’enseignant “Raphaël), avec un tableau disposant des mêmes colonnes que pour les cours.

Synthèse pour l'enseignant

À l’aide d’une formule un peu complexe saisie en cellule B4, le classeur effectue une recherche sur les feuilles des cours et récupère toutes les séances correspondant à un enseignant.

La mise en forme conditionnelle permet cette fois de distinguer les différents cours, ou des choses plus subtiles (comme des horaires de fin de cours tardifs).

Une cellule affiche (à droite) le total des heures effectuées (en allant chercher les totaux dans les autres feuilles, pas à partir du tableau affiché à gauche).

La formule utilisée est la suivante :

=query({ABC123_ALL!$B3:L94;ABC123_ALL!$B50:L106;ABC321_ALL!$B3:L33;XYZ234_ALL!$B3:L20}, "select * where Col9 = 'Raphaël' order by Col3 asc")

Attention, il faut préciser à la main (en dur) les feuilles et les plages concernées par la recherche du nom de l’enseignant, ainsi que le nom de l’enseignant (ici, Raphaël).

L’export vers Google Agenda ou Outlook

Avec Fichier > Télécharger > Valeurs séparées par des virgules (.csv, feuille active), on peut exporter en format CSV3 le programme d’un enseignant ou celui d’un cours.

Avec le script Python disponible ici, il est possible de transformer ce CSV en calendrier, de façon à l’importer dans une appli de calendrier supportant le format ical. On passe ainsi de ça :

Semaine exemple en tableau et Google Agenda

À ça :

Semaine exemple dans Google Agenda

Les attributs de la séance sont placés en “description” de l’événement, sauf le nom du cours et son type, qui servent à nommer l’événement.

Le script s’utilise comme ceci :

python3 seances2ical.py --csvfile exempleWeek.csv > week.ics

Tous les retours sont les bienvenus (mail : fournier at cnam.fr), sur l’Excel ou le script associé. Tous les partages et toutes les réutilisations sont aussi évidemment les bienvenus.


  1. Le “nom long” des cours n’apparaît pas, ils ne sont référencés que par leurs codes. Ainsi, le cours de Stanford “cs224w: Machine Learning with Graphs” ne serait appelé que cs224w

  2. HED : Heures Equivalent TD, HTD : Heures équivalent TD. 

  3. Comma-Separated Values, “valeurs séparées par des virgules”