Aller directement à l’outil
ViewCSV
Aucun envoi de fichier

Valider un fichier CSV

signups.csv· DONNÉES D’EXEMPLE7 lignes · 6 colonnes
Règles par colonne (facultatif)
Les règles sont enregistrées au format JSON Table Schema (Frictionless Data) : d’autres outils peuvent donc les lire.
Erreurs : 4 · avertissements : 2
Rapport
LigneColonneProblèmeValeur
1nameCommence ou finit par des espaces. Gabriel Martin
2emailValeur non valide pour le format Adresse e-mail.not-an-email
2signup_dateValeur non valide pour le type Date (AAAA-MM-JJ).2026-02-30
6emailValeur non valide pour le format Adresse e-mail.N/A
6signup_dateValeur non valide pour le type Date (AAAA-MM-JJ).11/03/2026
7nameCommence ou finit par des espaces.Emma Richard

Les numéros de ligne comptent les lignes de données après les en-têtes ; un saut de ligne entre guillemets ne crée pas de nouvelle ligne.

Ouvrez un fichier CSV pour contrôler sa structure : le nombre de champs de chaque enregistrement par rapport à l’en-tête, les noms de colonnes vides ou en double, les guillemets égarés, les fins de ligne mélangées et les lignes vides. Ajoutez si besoin des règles par colonne (entier, date, e-mail, obligatoire, unique, valeurs autorisées ou expression régulière) : chaque problème est listé avec sa ligne de données, sa colonne et sa valeur. Les règles reprennent le vocabulaire de Frictionless Table Schema. Le contrôle a lieu dans votre navigateur, sans envoi du fichier.

Valider un fichier CSV, étape par étape

  1. Ouvrez un fichier .csv, .tsv ou .txt. Le séparateur et le BOM UTF-8 ou UTF-16 sont détectés ; si les colonnes semblent fausses, choisissez un autre séparateur ou un encodage ancien dans les paramètres d’importation.
  2. Indiquez si vous le souhaitez le nombre de colonnes que chaque enregistrement doit avoir. Si le champ reste vide, c’est le nombre de colonnes de l’en-tête qui sert de référence.
  3. Ajoutez si besoin des règles pour les colonnes qui vous importent : un type, une valeur obligatoire ou unique, des valeurs autorisées, un minimum et un maximum, une plage de longueur ou un motif.
  4. Lancez le contrôle et parcourez le rapport : les erreurs d’abord, puis les avertissements. Corrigez les valeurs dans l’éditeur CSV ou remettez-les en ordre avec Nettoyer les données d’un CSV, puis validez de nouveau.

Pour connaître les types, les cellules vides et les valeurs distinctes de chaque colonne avant d’écrire des règles, consultez le profil des colonnes du fichier.

Contrôles de structure sur chaque enregistrement

Nombre de champs (erreur)Un enregistrement a plus ou moins de champs que l’en-tête, ou que le nombre que vous avez saisi. La RFC 4180 prévoit le même nombre de champs pour chaque enregistrement ; un écart signale le plus souvent un séparateur hors guillemets ou une valeur manquante.
En-tête vide (erreur)Un nom de colonne est vide ou ne contient que des espaces. Le rapport indique sa position.
En-tête en double (erreur)Deux noms de colonnes sont identiques une fois les espaces retirés. Le rapport indique les deux positions.
Guillemet égaré (avertissement)Un guillemet apparaît à l’intérieur d’une valeur non entourée de guillemets, comme 5" screen. La valeur est conservée telle qu’elle est écrite ; le rapport donne le total pour le fichier.
Texte après un guillemet fermant (avertissement)Des caractères suivent un guillemet fermant avant le séparateur suivant, comme dans "abc"x.
Fins de ligne mélangées (avertissement)Le fichier mélange des fins d’enregistrement CRLF, LF et CR. Le rapport compte chaque type.
Lignes vides (avertissement)Des lignes vides entre les enregistrements. Elles sont ignorées, et le rapport les compte.
Espaces autour des valeurs (avertissement)Une valeur contient des espaces avant ou après son texte. Activé par défaut ; les valeurs composées uniquement d’espaces ne sont pas signalées.

Une valeur entre guillemets qui n’est jamais refermée arrête le contrôle avec une erreur qui indique l’enregistrement où elle commence, car le reste du fichier ne peut plus être découpé de façon fiable en enregistrements.

Règles par colonne : type, obligatoire, unique et motif

Type : entierUn signe facultatif suivi uniquement de chiffres, comme -12 ou 007. Les valeurs au-delà de ±9 007 199 254 740 991 sont signalées : pour les identifiants longs, utilisez plutôt une règle de texte avec un motif.
Type : nombreNotation décimale simple avec un point, comme 3.5, -0.25 ou 1e3. Pas de séparateur de milliers, de devise ni d’espaces autour : un montant à la française comme 1 234,50 est donc signalé.
Type : booléentrue ou false, quelle que soit la casse. 1, 0, yes et no sont signalés.
Type : date, date-heureUne date réelle du calendrier écrite YYYY-MM-DD : 2024-02-30 est donc signalée. Une date-heure y ajoute une heure (2024-03-05T09:30, avec secondes et décalage Z ou +02:00 facultatifs).
Type : texte avec un formatE-mail (simple vérification de la forme name@domain.tld, pas un test de délivrabilité), URI (une URL absolue avec un schéma) ou UUID (versions 1 à 8).
ObligatoireLa valeur ne doit pas être vide. Sans cette règle, les valeurs vides passent toutes les autres règles.
UniqueAucune valeur ne doit se répéter dans la colonne. Le rapport indique la ligne où elle est apparue pour la première fois. Les valeurs vides ne sont pas comparées.
Valeurs autoriséesLa valeur doit être exactement égale à l’une des valeurs listées, casse et espaces compris.
Minimum, maximumBornes incluses pour les colonnes d’entiers et de nombres, ou dates ISO pour les colonnes de dates et de dates-heures.
Longueur minimale et maximaleComptée en caractères Unicode : é et 日 comptent chacun pour un.
MotifUne expression régulière qui doit correspondre à la valeur entière, comme l’exige Table Schema ; par exemple [A-Z]{2}\d{4}. La comparaison respecte la casse.

Une règle s’applique à la colonne dont l’en-tête correspond exactement à son nom ; les règles visant des colonnes absentes du fichier sont ignorées. Les règles peuvent être enregistrées dans un fichier JSON Table Schema et rechargées pour l’export suivant ; les types et les clés inconnus d’un schéma chargé sont ignorés.

Lire le rapport

  • Les numéros de ligne comptent les enregistrements de données après l’en-tête (l’en-tête est la ligne 0). Une valeur contenant un saut de ligne entre guillemets reste un seul enregistrement : le numéro de ligne peut donc différer du numéro de ligne affiché par un éditeur de texte.
  • Chaque problème indique sa colonne et cite la valeur, pour que vous puissiez la rechercher dans le lecteur CSV ou dans l’éditeur.
  • Les erreurs cassent la structure ou enfreignent une règle ; les avertissements signalent des données valides en CSV mais qui posent souvent problème à l’import.
  • Jusqu’à 5 000 problèmes sont listés. Au-delà, les totaux par type de problème continuent d’être comptés et la liste est signalée comme tronquée.

Limites de la validation et confidentialité

Le validateur lit un enregistrement à la fois : les fichiers qui dépassent la limite interactive de 25 Mo sont contrôlés en flux dans un worker en arrière-plan, avec suivi de la progression et possibilité d’annuler. En mode flux, les enregistrements qui ont moins de champs que l’en-tête sont pour l’instant complétés avant le contrôle : seuls ceux qui ont des champs en trop sont signalés comme erreur de nombre de champs.

La validation s’exécute dans votre navigateur. Le fichier CSV n’est pas envoyé sur un serveur.

Exemple : contrôler un export d’inscriptions avec quatre règles

Un export d’inscriptions contrôlé avec quatre règles : id est un entier obligatoire et unique ; email est un texte obligatoire au format e-mail ; signup_date est une date ; plan accepte basic, pro et team. Le résultat est le rapport du validateur, un problème par ligne après le résumé : une date impossible, un e-mail sans extension de domaine, Pro avec la mauvaise casse, un id répété, un e-mail manquant, et team suivi d’une espace, qui déclenche à la fois un avertissement et une erreur de valeur non autorisée.

CSV
id,email,signup_date,plan
1,ana@example.com,2024-02-30,pro
2,kim@example,2024-03-01,Pro
2,bao@example.com,2024-03-04,basic
4,,2024-03-05,team 
Rapport de validation
{"rows":4,"errors":6,"warnings":1,"truncated":false}
{"code":"type","row":1,"column":"signup_date","value":"2024-02-30","params":{"type":"date"}}
{"code":"format","row":2,"column":"email","value":"kim@example","params":{"format":"email"}}
{"code":"enum","row":2,"column":"plan","value":"Pro","params":{"allowed":"basic, pro, team"}}
{"code":"unique","row":3,"column":"id","value":"2","params":{"first":2}}
{"code":"whitespace","row":4,"column":"plan","value":"team ","params":{}}
{"code":"required","row":4,"column":"email","value":"","params":{}}
{"code":"enum","row":4,"column":"plan","value":"team ","params":{"allowed":"basic, pro, team"}}

Questions fréquentes

Pourquoi une valeur avec des espaces est-elle refusée par une liste de valeurs autorisées ?

Les règles comparent la valeur exactement telle qu’elle est écrite, sans supprimer les espaces : team n’est donc pas team. Nettoyez la colonne avec Nettoyer les données d’un CSV ou corrigez l’export.

La validation modifie-t-elle mon fichier ?

Non. Elle se contente de lire le fichier et de signaler ce qu’elle trouve. Corrigez les problèmes dans l’éditeur ou dans le logiciel d’origine.

Puis-je réutiliser les mêmes règles pour chaque export mensuel ?

Oui. Enregistrez les règles dans un fichier JSON Table Schema et rechargez-le la fois suivante ; les règles sont associées aux colonnes par leur nom.

Normes et références