Aller au contenu principal

Comment réparer un fichier CSV corrompu ou mal formé

Aucun téléversementTesté jusqu’à 100 MB

Comment diagnostiquer une structure CSV mal formée : lignes inégales, en-têtes dupliqués, espaces, lignes vides, BOM, délimiteurs et guillemets.

Publié le: 2026-08-19Mis à jour: 2026-09-083 minNettoyer un CSV dont la structure est mal formée
Illustration du flux de données pour « Comment réparer un fichier CSV corrompu ou mal formé »

Un CSV est structurellement mal formé lorsqu'un lecteur ne peut plus déterminer les mêmes champs d'une ligne à l'autre. Le bon diagnostic consiste à trouver où cette structure cesse d'être cohérente.

Une ligne « trop longue » peut cacher un champ mal protégé

En France, un export peut utiliser le point-virgule entre les champs tout en gardant la virgule pour les décimales :

Export français cohérent

reference;libelle;montant;note
R-19;Forfait;42,50;renouvellement

Si une note contient elle-même un point-virgule sans guillemets adaptés, cette seule ligne peut être découpée en une colonne supplémentaire. Un guillemet non fermé peut au contraire faire absorber plusieurs morceaux de texte dans un même champ.

Comparez avant et après la première anomalie

Ne corrigez pas toutes les lignes parce qu'une seule paraît décalée. Examinez la ligne précédente, la ligne fautive et la suivante, puis cherchez ce qui change : délimiteur dans un texte libre, guillemet, saut de ligne ou export tronqué.

Compléter les lignes courtes ou supprimer les valeurs en trop sans comprendre la cause peut déplacer des données valides.

Traitez les en-têtes comme des données de structure

Un en-tête vide ou dupliqué peut passer inaperçu à l'écran mais devenir bloquant lorsqu'un logiciel d'import doit associer chaque colonne à un champ précis. Renommez les colonnes selon leur rôle métier avant l'import.

Les petits caractères invisibles méritent une vérification séparée

Des espaces autour d'un code client peuvent empêcher une correspondance exacte. Des lignes entièrement vides peuvent gêner certains imports. Un BOM mal interprété peut apparaître au début du premier en-tête.

Ces symptômes ne sont pas équivalents à du mojibake généralisé. Si François devient François dans tout le fichier, recherchez plutôt un problème d'encodage.

Vérifiez aussi le délimiteur utilisé par l'import

Avec la virgule décimale et le point-virgule couramment utilisé comme séparateur de liste, un mauvais réglage d'import peut donner l'impression que la structure est cassée. Ouvrez le fichier en texte brut pour confirmer ce qui sépare réellement les champs.

Nettoyer seulement ce que vous avez identifié

Une fois la cause mécanique comprise, vous pouvez produire une copie nettoyée et contrôler les lignes touchées.

Le nettoyeur Nablyx effectue un premier passage pour comprendre la structure du fichier, notamment la ligne la plus large, puis un second pour écrire la sortie nettoyée. Cette distinction compte pour les fichiers irréguliers : les valeurs d'une ligne plus large que l'en-tête d'origine ne sont pas supprimées silencieusement. Le nettoyeur étend l'en-tête avec des noms de colonnes générés afin que ces valeurs aient toujours une destination.

Il peut aussi récupérer le dernier enregistrement lorsque son guillemet de fermeture manque, au lieu de perdre cet enregistrement, puis signaler la ligne récupérée dans le résumé du nettoyage. Cette réparation mérite d'être vérifiée dans l'aperçu : l'outil peut préserver l'enregistrement, mais il ne peut pas savoir si l'absence du guillemet final était intentionnelle.

Nettoyer le CSV après le diagnostic

Si des valeurs ont disparu de la source, si plusieurs schémas ont été concaténés ou si vous devez décider comment mapper les colonnes vers un autre système, le nettoyeur n'est pas l'outil approprié.

Voir la transformation

Les défauts structurels sont réparés sans masquer les changements.

Les espaces superflus, lignes vides et colonnes inégales sont nettoyés pour obtenir un CSV cohérent.

Entrée
customer_id ; name ; email

1042 ;  Alex  ; alex@example.com
1043 ; Sam ; sam@example.com ;
Résultat
customer_id,name,email
1042,Alex,alex@example.com
1043,Sam,sam@example.com

✓ Les lignes et colonnes sont cohérentes