mygems

Comment empêcher Excel de modifier vos données CSV

Excel supprime les zéros initiaux, change les ID en 1,23E+15 et les codes en dates dès l'ouverture d'un CSV. Voici comment l'importer sans rien changer.

Par mygems ·

Vous double-cliquez sur un CSV et Excel « vous aide ». Le code postal 01234 devient 1234. Le numéro de commande 4012888888881881 devient 4,01289E+15, et le dernier chiffre est remplacé par un zéro. Le code produit 3-5 devient le 3 mai. Rien de tout cela n'est dans le fichier. Excel l'a fait à l'ouverture, et si vous enregistrez, c'est définitif.

La solution n'est pas d'ouvrir le fichier autrement à chaque fois en espérant que ça passe. Il faut empêcher Excel de deviner, ce qui prend environ une minute.

La réponse rapide

  • Ne double-cliquez pas sur le CSV. Utilisez Données → À partir du texte/CSV et réglez les colonnes fragiles sur Texte avant le chargement.
  • Sur Microsoft 365, désactivez les conversions indésirables dans Fichier → Options → Données → Conversion automatique des données.
  • N'écrasez jamais l'original après l'avoir ouvert par double-clic. Les dégâts sont écrits dans le fichier à ce moment-là.
  • Google Sheets : Fichier → Importer, puis décochez Convertir le texte en nombres, dates et formules.

Ce qu'Excel modifie, et pourquoi

Un CSV n'a pas de types : chaque valeur est du texte. Excel veut des nombres et des dates, alors il devine, colonne par colonne, cellule par cellule. Les suppositions qui font mal :

Vous aviezExcel afficheCe qui s'est passé
012341234Zéro initial supprimé d'un « nombre »
40128888888818814,01289E+15Notation scientifique ; les chiffres après le 15e deviennent 0
3-5, 1/25-mars, 2-janvLu comme une date
MARCH1, SEPT21-Mar, 2-SepLu comme une date (un problème célèbre pour les noms de gènes)
1E5100000Lu comme une notation scientifique
=1+12Lu comme une formule
TRUETRUE (en booléen)Généralement sans danger, jusqu'à ce que ce soit un nom

Deux de ces cas sont destructeurs et pas seulement cosmétiques. La notation scientifique sur un nombre à 16 chiffres perd le dernier chiffre, car Excel stocke les nombres avec 15 chiffres significatifs. Et une valeur lue comme une date est stockée sous forme de numéro de série de date. Si vous repassez le format en texte, vous voyez un numéro de série comme 46086, pas 3-5.

Le moment qui compte, c'est l'enregistrement. Ouvrir un CSV change ce que vous voyez. L'enregistrer en CSV réécrit dans le fichier ce que vous voyez, et les valeurs d'origine sont perdues.

Solution 1 : importer au lieu d'ouvrir

Cela fonctionne dans toutes les versions de bureau d'Excel depuis 2016.

  1. Ouvrez un classeur vide.
  2. Données → À partir du texte/CSV, puis choisissez le fichier.
  3. Dans l'aperçu, cliquez sur Transformer les données (pas sur Charger).
  4. Dans Power Query, sélectionnez chaque colonne fragile : identifiants, codes postaux, numéros de téléphone, codes produit, numéros de compte. Puis Transformer → Type de données → Texte. Si Excel le demande, choisissez Remplacer l'actuel.
  5. Fermer et charger.

Les valeurs arrivent exactement comme elles sont écrites. Vous pouvez toujours faire des calculs sur les colonnes vraiment numériques, car vous n'avez désactivé la devinette que là où elle posait problème.

Si vous préférez l'ancien assistant : Fichier → Options → Données → Afficher les anciens assistants d'importation de données → À partir du texte (héritage). Il apparaît alors sous Données → Obtenir des données → Assistants hérités, et l'étape 3 de l'assistant permet de marquer des colonnes comme Texte.

Solution 2 : désactiver la conversion automatique

Les versions récentes d'Excel pour Microsoft 365 ont des paramètres pour cela, dans Fichier → Options → Données → Conversion automatique des données :

  • Supprimer les zéros non significatifs et convertir en nombre
  • Conserver les 15 premiers chiffres des nombres longs et afficher en notation scientifique
  • Convertir en nombre en notation scientifique les chiffres entourant la lettre « E »
  • Convertir en date les suites de lettres et de chiffres

Décochez ceux qui vous posent problème. Il existe aussi une option pour être averti quand Excel convertit quelque chose à l'ouverture d'un CSV. Laissez-la activée : elle transforme un changement silencieux en changement visible.

Ces paramètres s'appliquent aussi à l'ouverture par double-clic, ce qui en fait la solution la plus pratique. C'est aussi la moins portable : la personne à qui vous envoyez le fichier a ses propres paramètres.

Solution 3 : Google Sheets et Numbers

Google Sheets convertit aussi par défaut. Utilisez Fichier → Importer → Importer, puis dans la boîte de dialogue décochez Convertir le texte en nombres, dates et formules. Tout arrive en texte, exactement comme écrit.

Numbers sur Mac et iPhone supprime aussi les zéros initiaux et lit les valeurs ressemblant à des dates comme des dates. Sélectionnez la colonne et réglez son format sur Texte pour éviter cela sur les nouvelles saisies, mais la conversion à l'ouverture a déjà eu lieu. Si les données comptent, comparez quelques valeurs connues avec le fichier brut.

Les astuces qui ont l'air malines et qui ne le sont pas

  • Écrire les valeurs sous la forme ="01234" dans le CSV. Excel affiche 01234. Tous les autres outils qui lisent le fichier y voient une formule, tout comme le prochain système dans lequel va votre export.
  • Ajouter une apostrophe, '01234. Même problème : l'apostrophe fait désormais partie de vos données partout sauf dans Excel.
  • Formater la colonne en Texte après l'ouverture. Trop tard. Le zéro a déjà disparu ; le formatage ne le fera pas revenir.

Sur téléphone

Les téléphones ont le même problème avec moins de réglages. Numbers sur iPhone et les applications Sheets et Excel convertissent tous à l'ouverture, et un CSV réenregistré depuis elles garde les modifications.

Une application CSV qui traite chaque cellule comme du texte n'a pas ce problème, car elle ne convertit jamais. Dans Smart CSV Viewer, vous pouvez quand même indiquer qu'une colonne contient des nombres, des montants ou des dates, pour qu'elle se trie et se filtre correctement, mais le type ne change que l'affichage de la colonne. Le texte du fichier reste tel quel.

La feuille Type de colonne pour une colonne Budget réglée sur Nombre affiché en monnaie, avec la mention que le fichier garde son texte tel quel
Un type d'affichage, pas une conversion
CSV File Viewer - Smart CSViPhone et iPad · Android

Affiche une colonne comme un nombre, un montant ou une date sans la réécrire : les zéros initiaux, les longs identifiants et les codes restent exactement comme dans le fichier.

Ce que ça fait

Une habitude utile

Avant de faire confiance à un aller-retour de CSV dans un tableur, vérifiez trois valeurs faciles à abîmer : un identifiant avec un zéro initial, le nombre le plus long du fichier et un code qui ressemble à une date. Si ces trois-là ont survécu, le reste a presque certainement survécu aussi. Le guide CSV vs XLSX explique pourquoi cela arrive avec tous les tableurs, pas seulement Excel.

Questions

Comment empêcher Excel de supprimer les zéros initiaux dans un CSV ?
N'ouvrez pas le CSV par double-clic. Utilisez Données → À partir du texte/CSV, choisissez Transformer les données, réglez les colonnes concernées sur Texte, puis chargez. Sur Microsoft 365, vous pouvez aussi décocher « Supprimer les zéros non significatifs et convertir en nombre » dans Fichier → Options → Données → Conversion automatique des données.
Pourquoi Excel transforme-t-il les longs nombres en 1,23E+15 ?
Excel stocke les nombres avec 15 chiffres significatifs et affiche les longs en notation scientifique. Les chiffres après le 15e sont remplacés par des zéros : un identifiant à 16 chiffres est donc modifié définitivement si vous enregistrez. Importez la colonne en Texte pour garder tous les chiffres.
Comment empêcher Excel de transformer des nombres en dates dans un CSV ?
Importez le fichier avec Données → À partir du texte/CSV et réglez la colonne sur Texte, ou, sur Microsoft 365, décochez « Convertir en date les suites de lettres et de chiffres » dans les paramètres de conversion automatique des données. Changer le format ensuite ne sert à rien, car la valeur a déjà été stockée comme une date.
Puis-je récupérer mes zéros initiaux après avoir enregistré le CSV ?
Pas depuis le fichier enregistré : les zéros n'y sont plus. Si les valeurs avaient une longueur fixe, vous pouvez les compléter avec une formule comme TEXT(A2; "00000"), mais la solution fiable est de réexporter depuis le système source et de l'importer correctement.
Google Sheets modifie-t-il aussi les données d'un CSV ?
Oui, par défaut. Utilisez Fichier → Importer et décochez « Convertir le texte en nombres, dates et formules » pour garder chaque valeur en texte.

mygems — Développe CSV Editor et Smart CSV Viewer, deux apps qui existent parce que les tableurs abandonnent face aux gros fichiers.