Comment conserver les zéros initiaux dans un fichier CSV : identifiants, nombres et import dans un tableur

Gardez vos identifiants intacts à l'import d'un CSV : zéros initiaux, longues suites de chiffres et codes ressemblant à des dates, avec données fictives et vérification Python standard.

Lire dans une autre langue

Traduction assistée par IA d’un article d’Ithy. Version source : 2026-10-24. Traduction publiée : 2026-10-26. Lire l’original. Les exemples originaux sont signalés ; il ne s’agit pas de l’avis d’un expert humain identifié.

Un fichier CSV peut contenir correctement 00123 alors qu'un tableur affiche 123 à l'ouverture. Le fichier stocke des champs de texte ; c'est l'application qui importe qui décide comment les interpréter. Conservez les identifiants sous forme de texte lors de l'import, et vérifiez le résultat enregistré avant de remplacer l'original.

Un identifiant n'est pas forcément un nombre

Réservez le calcul aux quantités, comme un effectif ou un prix. Traitez un code postal, une clé de catalogue ou un identifiant de compte selon sa signification : ses chiffres sont peut-être des étiquettes, pas une quantité à additionner. Les zéros initiaux, les longues suites de chiffres et les codes ressemblant à des dates peuvent tous être abîmés par une conversion non voulue.

Les conseils de Microsoft sur les zéros initiaux et les grands nombres expliquent comment importer les colonnes concernées sous forme de texte. Ils documentent aussi les commandes de conversion automatique dans les versions d'Excel prises en charge. Vérifiez votre version réelle : les mêmes paramètres ne sont pas disponibles dans toutes les éditions.

Un exemple CSV original et fictif

Ces enregistrements sont inventés à des fins pédagogiques ; ce ne sont pas de vraies données de comptes ou de clients. Téléchargez l'exemple CSV.

item_id,reference,label,quantity
00123,12345678901234567890,JAN1,7
00007,98765432109876543210,1E10,12
ColonneSignification prévueType à l'import
item_idUn identifiant de cinq caractèresTexte ; conserver 00123 et 00007
referenceUne longue chaîne de référenceTexte ; conserver chaque chiffre
labelUn code, ni une date ni un exposantTexte ; conserver JAN1 et 1E10 littéralement
quantityUn effectifNombre entier, après validation

Le format CSV ne transporte pas ce tableau de types de colonnes comme un schéma imposé universellement. L'inclure dans vos consignes de transmission peut éviter qu'une autre application ne devine autrement.

Importer délibérément dans Excel

  1. Gardez une copie inchangée du CSV source.
  2. Utilisez le processus d'import texte/CSV de l'application plutôt que de vous fier aux suppositions automatiques d'un double-clic.
  3. Examinez l'aperçu et définissez les colonnes de type identifiant en texte avant que la conversion ne soit appliquée. Dans un processus de requête, examinez ou remplacez toute étape automatique de changement de type si nécessaire.
  4. Vérifiez le séparateur, l'encodage et le traitement des valeurs ressemblant à des dates.
  5. Chargez les données et comparez les identifiants exacts avec la source.
  6. Après l'export, examinez le CSV obtenu dans un éditeur de texte et importez-le de nouveau avec les types de colonnes prévus.

Les instructions de Microsoft sur l'import et l'export de fichiers texte décrivent la différence entre ouvrir et importer. Les libellés de menu varient selon la plateforme et la version. Un format d'affichage personnalisé composé de cinq zéros peut afficher 123 sous la forme 00123, mais ce n'est pas la même chose que conserver l'identifiant texte d'origine ni récupérer des chiffres déjà perdus.

Vérifier les chaînes avec Python

La documentation du module csv de Python indique que les champs sont lus par défaut comme des chaînes, avec des exceptions précises pour les options de conversion. Cette petite vérification n'utilise que la bibliothèque standard :

import csv

with open("identifier-example.csv", newline="", encoding="utf-8") as f:
    rows = list(csv.DictReader(f))

assert rows[0]["item_id"] == "00123"
assert rows[0]["reference"] == "12345678901234567890"
assert rows[1]["label"] == "1E10"
quantities = [int(row["quantity"]) for row in rows]
assert sum(quantities) == 19

Ces vérifications ne convertissent volontairement que la colonne quantity. Elles illustrent le contenu du fichier d'exemple, pas une garantie pour un export ou une application de tableur quelconques.

Ce qui ne peut pas être récupéré automatiquement

Si un long identifiant a déjà été arrondi puis enregistré par-dessus l'original, changer le format de la cellule en texte ne reconstitue pas les chiffres manquants. Restaurez à partir d'une source inchangée. Si 123 peut signifier 00123 ou 123, le compléter par des zéros relève d'une règle métier, pas d'une preuve de la valeur d'origine.

Mettre un champ CSV entre guillemets est une syntaxe qui préserve les séparateurs et d'autres caractères ; cela n'oblige pas systématiquement un tableur à traiter le champ comme du texte. Une bonne transmission précise l'encodage, le séparateur, les types de colonnes prévus et les règles de validation. Pour un problème voisin de partage de documents, voir la disponibilité et la portabilité des polices dans Word.

Pour demander une correction, envoyez l’affirmation précise et une source à l’appui via Ithy Aide. Méthodologie de recherche · Plus de guides de recherche.