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
| Colonne | Signification prévue | Type à l'import |
|---|---|---|
| item_id | Un identifiant de cinq caractères | Texte ; conserver 00123 et 00007 |
| reference | Une longue chaîne de référence | Texte ; conserver chaque chiffre |
| label | Un code, ni une date ni un exposant | Texte ; conserver JAN1 et 1E10 littéralement |
| quantity | Un effectif | Nombre 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
- Gardez une copie inchangée du CSV source.
- Utilisez le processus d'import texte/CSV de l'application plutôt que de vous fier aux suppositions automatiques d'un double-clic.
- 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.
- Vérifiez le séparateur, l'encodage et le traitement des valeurs ressemblant à des dates.
- Chargez les données et comparez les identifiants exacts avec la source.
- 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.
