J’aurais aussi pu intituler cet article : « Créer un fichier Excel® par candidat »
Je reviens d’une séance de correction d’épreuve… Désormais, l’évaluation se faisant par compétences, nous devons remplir une feuille Excel® par candidat.
On pourrait envisager une seule feuille Excel© avec autant d’onglets que de candidat, ça simplifierait la récolte pour analyse finale et la génération des onglets en interne par script, mais comme nous sommes plusieurs correcteurs nous ne pouvons pas tous travailler sur le même document (je sais qu’il existe des alternatives, mais on ne fait pas toujours ce qu’on veut).
Donc un fichier Excel® par candidat… soit un peu moins de 250 fichiers à créer. Cette fois ci nous les avons fait à la main : copier le modèle / coller / renommer pour chacun des candidats par le premier correcteur de la copie.
De retour, je me dis que je vais croiser cette situation de plus en plus régulièrement maintenant, et qui si je pouvais automatiser ça ce serait pratique. Ça pourrait aussi me servir à d’autres occasions.
Comme la plupart des PC des établissements ou rectorats que je croise sont sur Windows®, j’ai fais un script batch tournant sous Windows®…
Méthode
Dans un répertoire, créez :
- un fichier « Original.xlsx » qui correspond au modèle vierge à copier (allez au bout de la préparation, jusqu’au aperçu avant impression…)
- un fichier « Liste.txt » contenant la liste des candidats (ou autre)
- un fichier « Génération des fichiers.bat » contenant le code suivant :
@echo off
REM --------------------------------------------------------------
REM Génération de fichiers à partir d'une liste et d'un modèle
REM Éric Bugnet (eric.bugnet.fr)
REM --------------------------------------------------------------
REM - - - VARIABLES - - -
set _model=Original.xlsx
set _list=Liste.txt
set _dir=Fichiers générés
REM Check files
if not exist "%_rep%%_model%" goto:original
if not exist "%_rep%%_list%" goto:liste
REM Set variables
set /A _count=0
set _rep=%~dp0
for /f "tokens=1,2 delims=." %%a IN ("%_model%") do (
set _ext=.%%b
)
REM Create directory if not exist
if not exist "%_rep%%_dir%" mkdir "%_rep%%_dir%"
REM Copy and rename files
for /f "delims=" %%a in ('type "%_list%"') do (
if not exist "%_rep%%_dir%\%%a%_ext%" copy "%_rep%%_model%" "%_rep%%_dir%\%%a%_ext%"
set /A _count +=1
)
echo OK : %_count% fichiers créés.
pause
goto:end
:original
echo Le fichier %_model% n'existe pas. Il est nécessaire pour la bonne exécution du code.
pause
goto:end
:liste
echo Le fichier %_list% n'existe pas. Il est nécessaire pour la bonne exécution du code.
pause
goto:end
:end
Une fois les fichiers prêts, double clic sur le fichier « Génération des fichiers.bat » pour l’exécuter :
Surement améliorable, mais ça marche !
1 commentaire
toto · 7 septembre 2018 à 22 h 56 min
Voir du coté de latex également.
Pour ton linux tu peux mettre ton modéle dans ~/Modéles et cela devrais te donner avec via le clic droit > nouveau > nom-de-ton-modele
Les commentaires sont fermés.