Aller au contenu

Importer les élèves en masse

En une phrase

L'import en masse transforme 3 heures de saisie manuelle pour 500 élèves en 30 secondes de traitement automatique. C'est l'outil indispensable pour la rentrée scolaire et les migrations depuis un autre système.

Cet article couvre les 3 formats supportés, le template fourni, le workflow complet, la résolution des erreurs ligne par ligne (le piège #1), l'encodage UTF-8 (le piège #2), et les bonnes pratiques pour ne pas perdre la moitié de votre fichier en chemin.


Pourquoi importer en masse

Comparaison brute

Saisie manuelle d'un élève : ~1-2 minutes.

Volume Saisie manuelle Import en masse
50 élèves ~1h30 1 minute
200 élèves ~5h 2 minutes
500 élèves ~13h 5 minutes
1000 élèves ~26h (3 jours) 10 minutes

Conclusion : au-delà de 30 élèves, l'import en masse devient quasi-obligatoire.

Cas d'usage typiques

Cas Volume Import recommandé ?
Rentrée scolaire 50-2000+ ✅ Obligatoire
Migration depuis autre système tout l'historique ✅ Obligatoire
Inscription en cours d'année (1 élève) 1 ❌ Manuel plus rapide
Reprise d'historique élèves anciens variable ✅ Si nombreux
Import régulier d'inscriptions externes en flux À automatiser via API (à venir)

Pré-requis avant import

Vous ne pouvez PAS importer des élèves si :

  • Les classes ne sont pas créées (l'import lie chaque élève à une classe existante par nom)
  • L'année scolaire active n'est pas configurée
  • Vous n'avez pas la permission import.csv

Solution : configurer ces pré-requis d'abord (voir Checklist de rentrée).


Les 3 formats supportés

CSV (Comma-Separated Values)

Format universel : Excel, Google Sheets, LibreOffice, OpenOffice — tous savent l'ouvrir et l'exporter.

Avantages :

  • Léger : un fichier de 1000 élèves fait ~50 Ko
  • Lisible dans n'importe quel éditeur de texte (vérifications faciles)
  • Standard : pas de format propriétaire bloquant

Inconvénients :

  • Encodage UTF-8 obligatoire (sinon les accents se transforment en é)
  • Risque de mauvais séparateur (virgule vs point-virgule)
  • Risque de quoting incorrect si du texte contient des virgules

Quand l'utiliser : si vous êtes à l'aise avec Excel ou que vous générez le fichier par script.

XLSX (Excel)

Format Excel natif : mise en forme propre, multi-feuilles, formules conservées.

Avantages :

  • Pas de problème d'encodage (UTF-8 nativement)
  • Pas de problème de séparateur
  • Visuel clair (couleurs, mise en forme)
  • Multi-feuilles possibles (élèves + parents + classes dans le même fichier)

Inconvénients :

  • Plus lourd (~3× le CSV)
  • Nécessite un outil compatible (Excel, LibreOffice Calc, Google Sheets, Numbers Mac)

Quand l'utiliser : recommandé par défaut si votre équipe utilise Excel. C'est notre recommandation pour la plupart des écoles.

JSON (développeurs)

Format structuré pour les développeurs.

Avantages :

  • Préserve les relations entre entités (parent → élèves multiples)
  • Standard pour les API
  • Idéal pour migration depuis un autre système

Inconvénients :

  • Pas directement ouvrable dans Excel
  • Lisible mais peu pratique pour humain
  • Risque d'erreur de syntaxe (virgule oubliée, accolade non fermée)

Quand l'utiliser : si vous migrez depuis un système qui exporte en JSON, OU si vous avez un développeur qui peut générer le fichier.


Télécharger le template

Admin → Importation → onglet Élèves → Télécharger le modèle

Choisir le format :

  • eleves-template.csv : 3 lignes d'exemple + colonnes vides
  • eleves-template.xlsx : idem avec mise en forme
  • eleves-template.json : structure JSON commentée

À ne pas oublier : le template a déjà les bonnes colonnes dans le bon ordre — ne pas les modifier (Argon les lit par nom).


Structure du fichier

Colonnes obligatoires

Colonne Type Exemple Notes
prenom texte Marie Capitalisation libre
nom texte Mballa Recommandé en majuscules
date_naissance YYYY-MM-DD 2014-03-15 Format strict ISO 8601
sexe M ou F F Majuscule obligatoire
classe_nom texte 6A Exactement comme en DB

Colonnes optionnelles

Colonne Type Exemple Notes
matricule texte (vide) Vide → généré automatique
parent_email email marie.parent@gmail.com Crée le compte parent
parent_prenom texte Antoine Optionnel si parent_email seul
parent_nom texte Mballa Idem
parent_telephone texte +237 6 95 12 34 56 Format international recommandé
adresse texte Bastos, Yaoundé Adresse postale
photo_url URL https://... Photo accessible publiquement
groupe_sanguin A+/A-/B+/B-/AB+/AB-/O+/O- O+ Pour dossier médical
allergies texte Arachides Pour dossier médical
notes_admin texte Élève transféré de St-Joseph Note interne admin

Format strict des dates

⚠️ Une seule forme acceptée : YYYY-MM-DD (norme ISO 8601).

Bon : 2014-03-15, 2008-11-30

Mauvais :

  • 15/03/2014 (format français) → refusé
  • 15-03-2014 (séparateur tirets) → refusé
  • 2014/03/15 (slash) → refusé
  • Mar 15, 2014 (texte) → refusé

Pourquoi ce format strict : il est non ambigu internationalement (15/03 ≠ 03/15 selon les pays), et trié naturellement par ordre alphabétique.

Comment convertir dans Excel : sélectionner la colonne → Format cellules → Personnalisé → AAAA-MM-JJ.


Workflow d'import

Étape 1 : préparer le fichier

Dans Excel

  1. Ouvrir le template
  2. Coller depuis votre fichier source (extrait de votre ancien système, liste manuelle, etc.)
  3. Vérifier ligne par ligne au moins les 5 premières :
    • Date au format YYYY-MM-DD
    • Sexe en M ou F (majuscule)
    • Classe correspondant exactement à une classe existante
    • Pas de cellule cassée (#REF, #N/A)
  4. Enregistrer sous :
    • Pour CSV → Fichier → Enregistrer-sous → CSV UTF-8 (séparateur virgule)
    • Pour XLSX → juste sauvegarder normalement

Le piège Excel UTF-8

Excel a 3 options "CSV" différentes :

  • CSV (séparateur point-virgule) : pas standard, à éviter
  • CSV (séparateur virgule) : standard mais encodage Windows, accents cassés ❌
  • CSV UTF-8 (séparateur virgule) : bon choix

Choisissez TOUJOURS "CSV UTF-8". Sinon vos é, à, ç, ô deviennent é, Ã, ç, ô.

Dans Google Sheets (alternative recommandée)

  1. Ouvrir le template
  2. Coller données
  3. Fichier → Télécharger → Valeurs séparées par des virgules (.csv)

Google Sheets exporte toujours en UTF-8 — pas de risque d'encodage.

Étape 2 : uploader

Admin → Importation → onglet Élèves → Téléverser le fichier

Glisser-déposer OU sélectionner.

Étape 3 : aperçu (dry-run)

Argon affiche un aperçu des 5 premières lignes :

  • Lecture des colonnes (le nom de colonne correspond bien à ce qu'on attend ?)
  • Détection automatique du séparateur
  • Détection de l'encodage
  • Détection des erreurs visibles (date mal formatée, sexe invalide)

Si l'aperçu est bon : confirmer pour lancer le traitement complet.

Si erreurs détectées : corriger le fichier source + re-uploader.

Étape 4 : traitement

Argon traite chaque ligne :

  • Vérifie les champs obligatoires
  • Vérifie le format
  • Vérifie l'unicité (matricule)
  • Vérifie l'existence des classes référencées
  • Crée l'élève
  • Crée ou lie le compte parent si parent_email fourni

Performance : ~30-50 élèves traités par seconde. 500 élèves → ~15 secondes.

Étape 5 : rapport de résultat

À la fin, Argon affiche :

✅ 247 élèves créés
✅ 198 comptes parents créés
⚠️  3 erreurs :
   Ligne 142 : Matricule "INS-26-A2B4C" déjà utilisé
   Ligne 198 : Classe "Terminale Z" inexistante
   Ligne 201 : Sexe "X" invalide (doit être M ou F)

📥 Télécharger le rapport complet (CSV)

Les lignes valides sont créées. Les lignes en erreur sont sautées sans bloquer le reste.

Étape 6 : corriger les erreurs et relancer

  1. Télécharger le rapport CSV des erreurs
  2. Corriger les lignes dans votre fichier source
  3. Garder uniquement les lignes en erreur (Argon est idempotent — ne re-créera pas les déjà créées)
  4. Re-uploader le fichier corrigé

Erreurs courantes (table de référence)

Erreur Cause Solution
Sexe "X" invalide Valeur ≠ M/F (cas majuscule) Mettre M ou F (majuscule)
Classe "..." inexistante Faute frappe OU classe pas créée Créer la classe OU corriger l'orthographe
Date invalide : 15/03/2014 Format ≠ YYYY-MM-DD Reformater en 2014-03-15
Matricule déjà utilisé Doublon avec un élève existant Vide pour génération auto OU choisir autre
Email parent invalide Format email incorrect (espace, sans @) Corriger format
Caractères illisibles (é) Encodage non UTF-8 Re-enregistrer en CSV UTF-8
Trop de colonnes Mauvaise détection séparateur Vérifier que le séparateur est virgule (pas ;)
Pas de colonne "prenom" Mauvais nom de colonne Respecter exactement le nom du template
Date de naissance dans le futur Erreur de frappe (2114 au lieu de 2014) Corriger
Sexe "f" Minuscule Mettre F (majuscule)
Téléphone format invalide Caractères non numériques (ex : tel:) Nettoyer le format

Cas particuliers

Plusieurs enfants pour un même parent_email

Cas : Mme Mballa a 3 enfants dans l'école, vous l'importez 3 fois.

Comportement : Argon détecte le doublon d'email. La 1re ligne crée le compte parent. Les 2 suivantes lient les enfants au compte existant — pas de doublon de compte.

Vérification : après import, le compte parent voit ses 3 enfants dans /parent/mes-enfants.

Caractères spéciaux dans les noms (Ç, É, Ô, à, é)

Bonne approche :

  • Toujours UTF-8
  • Toujours utiliser Google Sheets ou "CSV UTF-8" dans Excel
  • Tester sur 1 ligne d'exemple avec accents avant l'import massif

Si vous voyez é côté admin après import : l'encodage est mauvais. Re-faire avec UTF-8 strict.

Élèves déjà existants (mise à jour vs création)

Argon v1 (limitation actuelle) : l'import en masse est création seule.

Si vous tentez d'importer un élève qui existe déjà (même prénom + nom + date naissance) :

  • Argon crée un doublon (sans bloquer)
  • À gérer manuellement (supprimer le doublon)

Roadmap : mode "mise à jour" qui détecte les existants et les met à jour. À venir.

Photos d'élèves

Le champ photo_url permet d'importer des photos via une URL accessible publiquement.

Workflow :

  1. Uploader vos photos sur un serveur web (Cloudinary, AWS S3, ou même Google Drive en partage public)
  2. Remplir la colonne photo_url avec l'URL de chaque photo
  3. Argon télécharge et stocke chaque photo lors de l'import

Limites :

  • Format accepté : JPG, PNG, WebP
  • Taille max : 5 Mo par photo
  • Si URL invalide ou inaccessible : l'élève est créé sans photo (pas bloquant)

Élèves transférés depuis une autre école

Cas spécial : importer des élèves avec leur historique (anciennes notes, anciens bulletins).

Argon v1 : import des élèves possible, mais pas l'historique automatiquement.

Procédure :

  1. Importer les élèves (CSV)
  2. Saisir manuellement les bulletins d'années précédentes (champ "Bulletin importé") OU les attacher en pièce jointe scan
  3. Marquer les élèves avec notes_admin = "Transféré de [école]" pour traçabilité

Roadmap : import d'historique complet via JSON structuré. À venir.

Mises à jour ponctuelles (changement adresse de 100 élèves)

Pour une mise à jour en masse de champs sur des élèves existants (sans création) :

Argon v1 : pas natif. Workaround :

  • Exporter les élèves en XLSX (Admin → Exports → Élèves → XLSX)
  • Modifier la colonne souhaitée
  • Pas de réimport (créerait des doublons)
  • Utiliser l'API admin (avancé)

Roadmap : mode "update by matricule" dans l'import. À venir.


Bonnes pratiques

Avant l'import

  • Tester sur 5 élèves d'abord avant le gros lot
  • Vérifier les classes existent avec le nom exact attendu
  • Aligner la convention nom/prénom (capitalisation cohérente)
  • Format de date unifié dans toutes les lignes
  • Encodage UTF-8 explicite (vérifier dans un éditeur texte si possible)

Pendant l'import

  • ✅ Lire attentivement l'aperçu avant de confirmer
  • Ne pas fermer l'onglet pendant le traitement (peut couper l'import)

Après l'import

  • Compter : nombre d'élèves attendus = nombre d'élèves importés ?
  • Vérifier 5 élèves au hasard : profil + parent rattaché + classe
  • Notifier les parents avec leur code d'activation (annonce groupée)
  • Conserver le fichier source pour traçabilité

À éviter

  • Importer 2 fois le même fichier (créerait des doublons si pas de détection d'existence)
  • Modifier le template (en ajoutant des colonnes inconnues)
  • Mélanger plusieurs années scolaires dans le même import
  • Importer pendant l'année scolaire sans vérification (préférer en pré-rentrée)

Sécurité

Permissions

L'import en masse nécessite la permission import.csv. Par défaut accordée aux admins, mais peut être retirée pour des comptes admin restreints (secrétariat).

Audit log

Chaque import est tracé dans Admin → Audit → Action: IMPORT :

  • Qui a importé
  • Quel fichier (nom + taille)
  • Nombre de lignes traitées
  • Nombre d'erreurs
  • Date + heure

Conservation : 5 ans.

Limite de taille

  • CSV / XLSX : max 50 000 lignes par fichier
  • JSON : max 100 000 entités

Au-delà : découper en plusieurs fichiers.


Modules importables (au-delà des élèves)

Argon propose l'import en masse pour plusieurs entités :

Module Endpoint Notes
Élèves Admin → Importation → Élèves Le plus utilisé
Parents Admin → Importation → Parents Pour créer des comptes sans élèves liés
Enseignants Admin → Importation → Enseignants Avec matières affectées
Classes Admin → Importation → Classes Niveau + effectif
Matières Admin → Importation → Matières Coefficients
Notes Admin → Importation → Notes Import en masse pour migration
Frais Admin → Importation → Frais Grille tarifaire complète
Emploi du temps Admin → Importation → EDT Depuis EDT/ADE/Hyperplanning

Chaque module a son template dédié. Workflow identique (télécharger, remplir, uploader, aperçu, confirmer).


Checklist d'import réussi

Avant import :

  • Classes créées dans Argon avec noms exacts
  • Année scolaire active configurée
  • Fichier source nettoyé (pas de lignes vides, pas de #REF)
  • Format de date YYYY-MM-DD partout
  • Sexe en M ou F (majuscule)
  • Encodage UTF-8 confirmé

Pendant :

  • Aperçu lu attentivement avant confirmation
  • Pas de fermeture d'onglet pendant le traitement

Après :

  • Nombre d'élèves créés = attendu
  • Erreurs corrigées et ré-importées (lignes manquantes)
  • Vérification de 5 élèves au hasard
  • Annonce parents publiée
  • Fichier source archivé

Voir aussi