Aller au contenu

ComprendreNiveau 3, Construire12 minutes

Pièges des fichiers de données

Un fichier de données a l'air juste dans le tableur, et ne l'est plus : un zéro de tête effacé, un identifiant changé en date, un accent illisible, des lignes perdues. Ce qui casse, pourquoi chaque programme devine, deux cas réels, et la façon de lire un fichier sans l'abîmer.

Écrit le 9 octobre 2026 · Vérifié le 9 octobre 2026

Vous saurez

  • Reconnaître les six pièges d'un fichier de données
  • Comprendre pourquoi un tableur ou un programme modifie ce qu'il lit
  • Lire un fichier en gardant tout en texte, puis le vérifier
  • Régler Excel pour qu'il ne convertisse plus d'office
Sur cette page
  1. Rappel
  2. L'essentiel
  3. Problème
  4. Principe
  5. Fonctionnement
  6. Exemple détaillé
  7. Risques
  8. Mise en place
  9. Exercice
  10. Vérification
  11. Lectures suivantes
Rappel de la page précédente

Répondez de tête, puis ouvrez. Faire sortir les chiffres d'un document

1L'outil rend un tableau complet, au bon format. Les chiffres sont-ils justes ?

Pas forcément. Les éditeurs garantissent la forme, pas les valeurs : un chiffre mal lu ou inventé a la même forme qu'un juste. Seules des règles, ou une personne, le repèrent.

2Quelle règle aurait arrêté l'erreur de l'exemple ?

Total = hors taxe + TVA : 1 250,00 + 250,00 donne 1 500,00, et non le 1 580,00 lu.

L'essentiel
  1. Un fichier de données est du texte avant d'être un tableau : le tableur ou le programme qui l'ouvre devine le séparateur, l'encodage et le type de chaque colonne. Chaque devinette peut abîmer une valeur, sans rien dire.
  2. Excel enlève les zéros de tête, coupe les nombres à 15 chiffres, lit « 1E5 » comme un nombre et change certains textes en dates ; depuis octobre 2023, ces conversions se coupent dans les options.
  3. Le cas d'école : une étude de 2016 trouve des noms de gènes changés en dates dans environ un cinquième des articles de génomique qui joignent des listes Excel.
  4. En 2020, près de 16 000 cas de Covid-19 n'ont pas été signalés en Angleterre : un ancien format Excel s'arrêtait vers 65 000 lignes, et les suivantes étaient laissées de côté.
  5. La parade : garder l'original intact, tout lire en texte, déclarer les types soi-même, et vérifier par des règles avant de calculer.
1

Problème

Un fichier de clients arrive, exporté d'un logiciel. Vous l'ouvrez dans Excel, il a l'air juste ; vous le donnez à un programme ou à une IA, qui le lit à son tour. Entre les deux, le code postal 01000 est devenu 1000, la ville Évry s'affiche « Ã‰vry », et un montant écrit 12,5E3 vaut maintenant 12 500. Rien ne l'a signalé.

Ce n'est pas une erreur de l'IA : c'est la façon dont les fichiers circulent. Un CSV n'a ni type ni encodage déclarés ; la norme elle-même parle de virgules, quand un tableur français sépare par des points-virgules. Le programme qui l'ouvre devine, et chaque devinette fausse se propage à tout ce qui suit : l'extraction, le calcul, la réponse de l'assistant.

2

Principe

Avant de regarder : dans la ligne « C-0042;Bourg-en-Bresse;01000;1250,50;03/04/2026 », combien de valeurs un tableur peut-il changer en l'ouvrant ?

Six pièges, et le réflexe contre chacun

  • Le zéro de tête01000 devient 1000 : codes postaux, numéros de client, référencesla parade : texte
  • Le nombre trop longau-delà de 15 chiffres, Excel arrondit ; les derniers deviennent des zérosla parade : texte
  • La lettre E12,5E3 ou 1E5 lus comme des nombres en notation scientifiquela parade : texte
  • La date devinéeun identifiant fait de lettres et de chiffres, ou 03/04 : le 3 avril ou le 4 mars ?la parade : AAAA-MM-JJ
  • Le séparateurvirgule ou point-virgule, virgule décimale ou point : tout tient dans une seule colonnela parade : déclaré
  • L'encodageun fichier en UTF-8 lu en Windows-1252 : « Évry » devient « Ã‰vry »la parade : UTF-8
Les quatre premiers sont des conversions automatiques d'Excel, décrites par Microsoft ; les deux derniers tiennent au format CSV, sans type ni encodage déclarés.

Trois : le code postal perd son zéro ; le montant n'est un nombre que si la virgule est la virgule décimale attendue ; la date devient un jour ou un autre selon les réglages. Le principe tient en une phrase : tant qu'une valeur n'a pas été vérifiée, elle reste du texte.

3

Fonctionnement

Un même fichier fabriqué, lu de quatre façons par un petit programme Python, sans modèle d'IA : chaque lecture rate quelque chose, sauf la dernière, qui lit tout en texte et vérifie.

clients.csv
code_client;ville;code_postal;montant;date
C-0042;Bourg-en-Bresse;01000;1250,50;03/04/2026
C-0043;Évry;91000;980,00;04/03/2026
C-0044;Saint-Étienne;42000;12,5E3;2026-04-05
lire.py
"""Un même fichier, trois lectures. Fichier fabriqué : clients.csv, séparé par des points-virgules,
écrit en UTF-8 par un tableur français."""
import csv

brut = open("clients.csv", "rb").read()

print("1. Lu avec le mauvais encodage (Windows-1252 au lieu d'UTF-8) :")
print("  ", brut.decode("cp1252").splitlines()[2])

print("2. Lu avec la virgule comme séparateur :")
with open("clients.csv", encoding="utf-8", newline="") as f:
    print("  ", next(csv.reader(f, delimiter=","))[:3], "...")

print("3. Lu comme il faut, puis converti sans précaution :")
with open("clients.csv", encoding="utf-8", newline="") as f:
    for ligne in csv.DictReader(f, delimiter=";"):
        cp = int(ligne["code_postal"])                  # le zéro de tête disparaît
        montant = float(ligne["montant"].replace(",", "."))
        print(f"   {ligne['code_client']} : code postal {cp}, montant {montant}, date {ligne['date']}")

print("4. Lu prudemment : tout en texte, puis vérifié par des règles :")
import re
with open("clients.csv", encoding="utf-8", newline="") as f:
    for ligne in csv.DictReader(f, delimiter=";"):
        alertes = []
        if not re.fullmatch(r"\d{5}", ligne["code_postal"]):
            alertes.append("code postal")
        if not re.fullmatch(r"\d+(,\d{1,2})?", ligne["montant"]):
            alertes.append("montant illisible : " + ligne["montant"])
        if not re.fullmatch(r"\d{4}-\d{2}-\d{2}", ligne["date"]):
            alertes.append("date ambiguë : " + ligne["date"])
        print(f"   {ligne['code_client']} {ligne['code_postal']} :", "; ".join(alertes) or "conforme")
La sortiepython3 lire.py
1. Lu avec le mauvais encodage (Windows-1252 au lieu d'UTF-8) :   C-0043;Évry;91000;980,00;04/03/20262. Lu avec la virgule comme séparateur :   ['code_client;ville;code_postal;montant;date'] ...3. Lu comme il faut, puis converti sans précaution :   C-0042 : code postal 1000, montant 1250.5, date 03/04/2026   C-0043 : code postal 91000, montant 980.0, date 04/03/2026   C-0044 : code postal 42000, montant 12500.0, date 2026-04-054. Lu prudemment : tout en texte, puis vérifié par des règles :   C-0042 01000 : date ambiguë : 03/04/2026   C-0043 91000 : date ambiguë : 04/03/2026   C-0044 42000 : montant illisible : 12,5E3

Essayé le 9 octobre 2026 avec Python 3.12.7.

Ce que montre la sortie : l'encodage faux abîme chaque accent ; le mauvais séparateur met toute la ligne dans une colonne ; la conversion sans précaution efface le zéro de 01000 et transforme 12,5E3 en 12 500 ; la lecture prudente garde 01000, signale le montant illisible et les deux dates ambiguës, sans rien corriger d'office.

4

Exemple détaillé

Deux cas publics, et la réponse de Microsoft. Aucun ne tient à l'IA : ils tiennent aux fichiers, et touchent pareil un programme ou un assistant qui les lit.

  1. 2004 à 2015Des noms de gènes changés en datesLe défaut est décrit dès 2004 ; en 2016, des chercheurs passent au crible 35 175 fichiers Excel joints à des articles de dix-huit revues, de 2005 à 2015 : environ un cinquième des articles qui joignent des listes de gènes en Excel contiennent des noms convertis.
  2. Octobre 2020Des cas de Covid-19 laissés de côtéEn Angleterre, des résultats de tests passent par des modèles au format XLS, limité à environ 65 000 lignes ; chaque modèle tient environ 1 400 cas ; au-delà, les suivants sont laissés de côté. Près de 16 000 cas ne sont pas signalés à temps. Le format XLSX, en service depuis 2007, en aurait tenu seize fois plus.
  3. Octobre 2023Excel laisse couper ses conversionsMicrosoft rend réglables quatre conversions automatiques : les zéros de tête, les nombres au-delà de 15 chiffres, la notation scientifique autour de la lettre E, et les textes changés en dates.
5

Risques

  • L'erreur silencieuse : ni le tableur ni le programme ne préviennent ; la valeur fausse a l'air d'une valeur juste.
  • L'IA qui corrige d'elle-même : un assistant à qui l'on donne un tableau abîmé peut compléter ou « réparer » une valeur ; d'où des règles dans le programme, et la valeur d'origine gardée (faire sortir les chiffres d'un document).
  • Le fichier réenregistré : ouvrir un CSV dans Excel puis l'enregistrer fige les conversions dans le fichier ; l'original est perdu s'il n'a pas été gardé.
  • La date à double sens : 03/04/2026 est le 3 avril en France et le 4 mars aux États-Unis ; seule la forme AAAA-MM-JJ ne se lit que d'une façon.
  • La limite de lignes : 1 048 576 lignes par feuille dans Excel ; au-delà, un tableur n'est plus l'outil.
6

Mise en place

  1. Garder l'original, intact

    Ce qu'on fait : le fichier reçu, rangé à part, jamais réenregistré ; on travaille sur une copie.

  2. Importer plutôt qu'ouvrir

    Excel : Données › À partir d'un fichier texte/CSV

    Ce qu'on fait : l'import laisse choisir l'origine du fichier, le séparateur et le type de chaque colonne : Texte pour les codes et les identifiants.

  3. Couper les conversions automatiques d'Excel

    File › Options › Data › Automatic Data Conversion

    Ce qu'on fait : les quatre cases décochées : zéros de tête, 15 chiffres, lettre E, dates ; libellés en anglais, tels que Microsoft les publie.

  4. Dans un programme, tout lire en texte

    Ce qu'on fait : le module csv de Python rend du texte ; on convertit ensuite, colonne par colonne, ce qui doit être un nombre ou une date.

  5. Vérifier par des règles avant de calculer

    Ce qu'on fait : cinq chiffres pour un code postal, une forme de montant, des dates AAAA-MM-JJ ; ce qui échoue est signalé, pas corrigé d'office.

  6. Compter

    Ce qu'on fait : le nombre de lignes reçues et lues, les totaux de contrôle : une ligne perdue se voit au compte.

  7. Échanger en XLSX, en UTF-8, avec des dates AAAA-MM-JJ

    Ce qu'on fait : et jamais en XLS, limité à environ 65 000 lignes.

7

Exercice

Un fichier fabriqué de cinq clients, déjà passé par un tableur. Repérez chaque valeur abîmée ou douteuse, et dites quelle règle l'aurait arrêtée.

clients-recus.csv
code_client;ville;code_postal;montant;date
C-0101;Le Puy-en-Velay;43000;2 150,00;2026-03-12
C-0102;Ajaccio;20000;0,00;12/03/2026
C-0103;Châlons;51000;845,5;2026-02-30
C-0104;Bourg-en-Bresse;1000;1250,50;2026-04-01
C-0105;Saint-Malo;35400;1E4;2026-04-15
Voir la correction

C-0101« 2 150,00 » : une espace dans le montant ; selon le programme, elle bloque la conversion ou coupe le nombre. Règle : la forme du montant.

C-0102La date 12/03/2026 : le 12 mars ou le 3 décembre, selon le pays. Règle : les dates en AAAA-MM-JJ.

C-0103Le 30 février n'existe pas. Règle : une date valide au calendrier.

C-0104Le code postal 1000 a perdu son zéro de tête : 01000. Règle : cinq chiffres.

C-0105« 1E4 » : un montant en notation scientifique, lu 10 000. Règle : la forme du montant ; puis demander la valeur d'origine.

8

Vérification

1ComprendrePourquoi un fichier peut-il être abîmé sans que personne ne s'en aperçoive ?

Parce que le tableur ou le programme qui l'ouvre devine le séparateur, l'encodage et le type des colonnes, et convertit sans prévenir ; la valeur fausse a la forme d'une valeur juste.

2ComprendreQue fait Excel, par défaut, d'un code postal 01000 ?

Il le lit comme un nombre et enlève le zéro de tête : 1000 ; depuis 2023, cette conversion peut se couper dans les options.

3AppliquerUn fichier de commandes doit passer d'un logiciel à un autre par un programme. Quelles précautions ?

Garder l'original, tout lire en texte, convertir colonne par colonne, vérifier par des règles et compter les lignes ; échanger en UTF-8, avec des dates AAAA-MM-JJ.

9

Lectures suivantes

Les pages qui renvoient ici

Limites et sources

Les fichiers sont fabriqués ; le programme a tourné sur un poste de Meridal, sans modèle.

Les libellés des options d'Excel sont ceux de Microsoft en anglais ; la version française n'a pas été trouvée.

  1. Microsoft, conversions de données ; Microsoft, fichiers texte et CSV ; Genome Biology, 2016 ; BBC, 5 octobre 2020 ; RFC 4180.
  2. Le code : apprendre/pages/construire/casse-fichier/code/.

Écrit par Meridal, avec l'aide de l'IA ; chaque fait vérifié à sa source et relu avant publication. Texte et schémas sous licence CC BY 4.0 : reprenez-les en citant Meridal. Le code sous licence MIT.

Service correspondant

Ne plus recopier d'un logiciel à l'autre

1 100 € à 3 400 €, puis sur devis

Voir le service

Un premier échange de 30 minutes

En visio et sans frais : vous décrivez votre situation, nous vous indiquons ce qui est réalisable, avec quels outils et pour quel ordre de prix. Vous pouvez aussi nous écrire ; chaque message reçoit une réponse écrite.