Macro LibreOffice Calc pour gérer une grille de correction
Salut les profs !
Qu’est-ce qui est le plus pénible dans ce boulot ? Les corrections bien sûr !
Donc pour me faciliter un peu la vie, j’ai écrit une macro pour LibreOffice Calc qui automatise la gestion d’une grille de correction.
On crée les critères et le barème puis la macro ajoute les colonnes pour chaque étudiant, génère des fiches individuelles et exporte tout ça en PDF d’un coup. Plus besoin de copier-coller à la main !
- Ajout des colonnes par étudiant
- Génération des feuilles individuelles
- Export PDF en lot
La macro + un exemple de classeur sont disponibles sur Gitlab
Structure du classeur
Le classeur Calc doit avoir deux feuilles de départ :
Feuille Étudiants
Une colonne pour l’identifiant (ex. numéro étudiant) et une colonne pour le nom complet. Le script lit cette feuille pour savoir combien d’étudiants il doit gérer, et quels noms mettre dans les fiches individuelles.

La colonne D affiche la note pour chaque étudiant. Ça récupère la ligne “Résultat sur” de la feuille Correction (ligne 25 dans mon exemple ci-dessous)
Suivant votre grille de correction, la ligne du résultat final peut être différente, par exemple si vous avez plus ou moins de critères. Si la ligne de résultat est la ligne 56 par exemple, il suffit de modifier la formule dans la colonne D pour qu’elle pointe vers la bonne ligne :
Formule originale (ligne 25) :
=INDIRECT("Correction!" & SI(LIGNE() >26;CAR(64+(LIGNE())/26);) & CAR(65 + MOD(LIGNE();26)) & 25)
Formule modifiée (ligne 56) :
=INDIRECT("Correction!" & SI(LIGNE() >26;CAR(64+(LIGNE())/26);) & CAR(65 + MOD(LIGNE();26)) & 56)
Feuille Correction
La grille principale. Les deux premières colonnes (A et B) contiennent les critères (intitulé + barème). À partir de la colonne C, chaque étudiant occupe 3 colonnes :

- La cellule E1 contient le nom de l’étudiant (ou une formule qui le récupère).
- La colonne C permet d’attribuer un pourcentage de points pour chaque critère
- La colonne D affiche la note calculée (en appliquant le pourcentage au barème de la colonne B)
- La colonne E permet d’écrire des commentaires.
La colonne marquée REF (en-tête de la colonne F) signale la fin de la liste d’étudiants lors de la génération.
J’ai choisi de noter les critères en pourcentage mais si vous préférez attribuer directement des points, il suffit de vider la colonne des pourcentages et de mettre les points dans la colonne D (PTS)
Installation du script
Le script se place dans le dossier des macros utilisateur LibreOffice :
~/.config/libreoffice/4/user/Scripts/python/correction_rapide.pyCréer le dossier s’il n’existe pas :
mkdir -p ~/.config/libreoffice/4/user/Scripts/pythonSous Windows, le chemin est différent, mais il y a aussi un dossier de macros utilisateur dans le profil LibreOffice. Vous pouvez trouver son emplacement exact en ouvrant l’organisateur de macros dans LibreOffice et en regardant les chemins listés pour les macros Python.
Puis copier ou créer le fichier correction_rapide.py à cet emplacement. Les trois fonctions exportées sont déclarées en fin de fichier :
g_exportedScripts = add_student, generate_results, save_pdfsCette ligne rend les fonctions visibles dans l’organisateur de macros de LibreOffice.
Menu Correction
Une fois que le script est installé, un nouveau menu “Correction” apparaît dans la barre de menus de Calc, avec les trois fonctions listées :

add_studentest à exécuter une seule fois au début. Une fois que vos critères sont prêts et que vous avez rempli la feuille Étudiants, lancezadd_studentpour que les colonnes pour chaque étudiant soient créées automatiquement. Ensuite, vous pouvez saisir les notes et commentaires dans la feuille Correction.generate_resultsest à lancer une fois que vous avez fini de saisir les notes. Elle va créer une feuille individuelle pour chaque étudiant, avec les critères et les notes calculées, puis appelersave_pdfspour exporter tout ça en PDF d’un coup.save_pdfspeut aussi être lancée manuellement si vous voulez juste régénérer les PDF à partir des feuilles individuelles déjà créées.
Les trois fonctions
add_student — Ajouter les colonnes étudiants
Lance la préparation de la feuille Correction. Elle lit les noms dans la feuille Étudiants et insère 3 colonnes (note / commentaire / nom) pour chaque étudiant à partir de la colonne C, en copiant le format et les formules du bloc précédent.
À n’exécuter qu’une fois au début, quand la grille de critères est finalisée mais avant de commencer la saisie.
generate_results — Générer les fiches individuelles
Parcourt la feuille Correction, lit les 3 colonnes de chaque étudiant, et crée une feuille séparée par étudiant dans le même classeur. Chaque feuille contient :
- les colonnes A:B (critères + barème)
- les 3 colonnes de l’étudiant, avec les formules remplacées par leurs valeurs calculées
À la fin, generate_results appelle automatiquement save_pdfs.
save_pdfs — Exporter en PDF
Exporte chaque feuille individuelle (toutes sauf Correction et Étudiants) en PDF dans un sous-dossier portant le nom du fichier Calc :
mon_dossier/
├── correction_tp3_2026.ods
└── correction_tp3_2026/
├── Aminata Node.pdf
├── Foo Bar.pdf
└── Gilles Hetml.pdfLa mise en page est forcée à 1 page en largeur, marges à 0,5 cm. Le fichier Calc doit avoir été enregistré au moins une fois avant d’appeler cette fonction.
Workflow typique
- Créer le classeur, remplir la feuille
Étudiantset construire la grille de critères en colonnes A:E sur la feuilleCorrection. - Enregistrer le fichier.
- Lancer
add_student: les colonnes pour tous les étudiants suivants sont insérées automatiquement. - Saisir les notes et commentaires dans la feuille
Correction. - Lancer
generate_results: les fiches individuelles sont créées et les PDF exportés d’un coup.
Le script traite au maximum 150 lignes de la grille (pour éviter les plantages sur de très grands fichiers). On peut modifier cette limite dans le code (ligne 71).
La génération des PDF ouvre un document temporaire pour chaque étudiant. Pour une promo de 30 étudiants, l’opération prend quelques dizaines de secondes.