Retour aux guides

Zéros initiaux Excel/CSV : vos codes-barres perdent un chiffre

Les fichiers Excel et CSV suppriment silencieusement les zéros initiaux et arrondissent les nombres longs, ce qui corrompt les codes UPC, EAN et SSCC avant même l'impression. Voici exactement pourquoi cela arrive et comment l'éviter.

Demandez à n'importe qui a généré des codes-barres en lot et vous entendrez la même histoire : le fichier semblait correct, les codes-barres se sont imprimés, mais chacun d'eux s'est scanné vers un nombre amputé d'un chiffre — ou vers un nombre converti en notation scientifique. Le générateur de codes-barres n'était pas en cause. Le tableur avait dévoré la donnée avant même que le générateur ne la voie.

C'est le défaut de donnée le plus courant en génération de codes-barres, et il reste presque toujours invisible jusqu'à ce que vous scanniez le résultat. Voici pourquoi cela se produit, quelles symbologies sont exposées et comment faire survivre vos données du tableur jusqu'à l'étiquette.

Pourquoi Excel mange les zéros initiaux

Le comportement par défaut d'Excel consiste à interpréter comme un nombre tout ce qui ressemble à un nombre, et les nombres n'ont pas de zéros initiaux. Tapez 012345678905 dans une cellule et Excel stocke la valeur numérique 12345678905 ; le 0 initial disparaît à l'instant même où vous appuyez sur Entrée.

Pour la plupart des tableurs, c'est sans conséquence. Pour les données de codes-barres, c'est fatal, car un UPC-A fait exactement 12 chiffres, un EAN-13 exactement 13, et un GTIN-14 ou un SSCC-18 font 14 ou 18. Supprimez un zéro initial et vous avez encodé un identifiant différent, plus court et invalide — qui échouera soit au chiffre de contrôle, soit se scanner vers le mauvais produit.

La même chose se produit lorsque vous ouvrez un fichier CSV en double-cliquant dessus : Excel importe chaque colonne avec sa logique « deviner le type » par défaut, et un champ rempli de chiffres devient un nombre, ce qui supprime les zéros.

La notation scientifique : la falaise des 11 chiffres

Excel a un second comportement, plus sournois. Une valeur numérique de plus d'environ 11 chiffres est affichée (et souvent stockée) en notation scientifique — 12345678901234 devient 1.23457E+13.

Pour un UPC à 12 chiffres, c'est limite ; pour un GTIN-14 à 14 chiffres ou un SSCC à 18, c'est garanti. Dès l'instant où la valeur est reformatée en notation scientifique, les derniers chiffres sont arrondis et le code est détruit de façon irréparable. Re-formater la cellule ensuite ne récupère en rien les chiffres perdus, car le nombre lui-même a déjà été arrondi.

La limite de précision à 15 chiffres

Même si vous évitez la notation scientifique, Excel a un plafond strict : il stocke les nombres sous forme de nombres flottants IEEE 754 en double précision , exacts seulement jusqu'à environ 15 chiffres significatifs.

Tout identifiant de plus de 15 chiffres — et un SSCC-18 en fait 18 — voit ses derniers chiffres arrondis silencieusement. Vous ne pouvez pas stocker un SSCC à 18 chiffres dans une cellule numérique d'Excel et le garder intact. Il doit être stocké sous forme de texte. Ce n'est pas un paramètre que l'on peut modifier : c'est une propriété du format, documentée dans les spécifications et limites d'Excel publiées par Microsoft.

Quelles symbologies sont exposées

IdentifiantLongueurExposition ?Pourquoi
UPC-A12 chiffresOuiZéro initial fréquemment supprimé
EAN-1313 chiffresOuiZéro initial + notation limite
EAN-88 chiffresRarementAssez court pour survivre
GTIN-14 / ITF-1414 chiffresÉlevéeDépasse la falaise de notation des 11 chiffres
SSCC-1818 chiffresCritiqueDépasse la limite de précision des 15 chiffres
Code 128 (GS1)VariableSelon le casUniquement si la valeur est entièrement numérique et longue

Tout code qui commence par un zéro — ce qui est courant pour les codes EAN-13 émis dans de nombreux pays — est exposé dès l'instant où il touche une cellule de tableur non formatée.

Comment conserver les zéros

Le principe de base : forcez la colonne à être du texte avant que la donnée n'y entre. Voici les méthodes fiables, par ordre de préférence.

MéthodeComment faireIdéal pour
Pré-formater en TexteSélectionnez la colonne, définissez le format nombre sur « Texte », puis collez/saisissezNouveaux tableurs
Apostrophe initialeTapez '012345678905 — l'apostrophe indique à Excel « texte » et n'est pas stockéePetites saisies manuelles
Assistant d'importationDonnées → À partir d'un fichier texte/CSV, définissez la colonne sur « Texte » à l'importOuverture de CSV existants
Formule TEXTE()=TEXT(A1,"000000000000") pour compléter à une largeur fixeRéparer des zéros supprimés
Garder le CSV en texteOuvrez le CSV dans un éditeur de texte et vérifiez d'abord les octets brutsVérifier la source

Deux remarques sur les corrections courantes :

  • Formater une cellule en Texte après la disparition des zéros ne les fait pas revenir. La donnée a déjà été épurée. Vous devez réimporter ou ressaisir, ou la compléter avec une formule à largeur fixe.
  • L'astuce de l'apostrophe ne fonctionne qu'à la saisie. Si vous collez une colonne entière, pré-formatez d'abord la colonne en Texte.

Si vous générez à partir d'un CSV, ouvrez ce CSV dans un éditeur de texte brut et confirmez que le fichier source contient encore les zéros. Si le CSV lui-même a été écrit par un programme qui les a supprimés, aucune astuce de tableur n'y fera rien : vous devez corriger à la source qui a produit le fichier.

L'angle GS1 : ce n'est pas juste des nombres

Les identifiants corrompus par les tableurs ne sont pas arbitraires : ce sont des clés d'identification GS1 dotées d'une structure définie et d'un chiffre de contrôle calculé. Un GTIN-14, un SSCC-18 et un code-barres GS1-128 portent tous un préfixe d'entreprise GS1 suivi d'une référence et d'un chiffre de contrôle.

Cela compte pour deux raisons :

  • Le chiffre de contrôle est le filet de sécurité. Si un zéro initial est supprimé, le nombre plus court qui en résulte produit très souvent une discordance de chiffre de contrôle. C'est la bonne nouvelle : l'erreur est détectée au moment du scan plutôt que d'expédier silencieusement. La mauvaise, c'est que de nombreux opérateurs ne réalisent pas que le chiffre de contrôle est faux et continuent de réimprimer au lieu de corriger la donnée. La logique du chiffre de contrôle est expliquée dans l'entrée de glossaire check-digit.
  • Le support de données n'est pas facultatif. Un GTIN-14 doit être encodé dans un code-barres ITF-14 ou GS1-128 avec l'identifiant d'application correct (AI 01), et un SSCC-18 utilise l'AI 00. Une fois la valeur du tableur corrompue, le code-barres encode une clé GS1 d'apparence valide qui pointe simplement vers autre chose — une défaillance bien plus difficile à déboguer qu'un code-barres qui refuse tout court de se scanner.

GS1 publie l'ensemble complet des normes relatives aux supports de données et aux identifiants, et les General Specifications régissent exactement la façon dont ils sont encodés. Maintenir vos données sources propres est le préalable à tout cela.

Réparer des données déjà corrompues

Si les zéros ont déjà disparu, pas de panique : il existe trois niveaux de récupération, et un seul d'entre eux est garanti.

  • Niveau 1 — le chiffre de contrôle peut reconstruire un zéro initial. Pour un UPC-A, un EAN-13 ou une clé GS1-128, le chiffre de contrôle est calculé à partir des autres chiffres. Si votre colonne affiche 12 chiffres pour un code qui devrait en faire 13, le chiffre manquant est presque toujours un zéro initial ; vous pouvez souvent confirmer le bon premier chiffre en calculant le chiffre de contrôle de chaque candidat et en voyant lequel correspond. Voir la formule du chiffre de contrôle.
  • Niveau 2 — compléter à une largeur fixe. Si vous connaissez la longueur attendue, une formule comme =TEXT(A1,"000000000000") (12 zéros pour un UPC-A, 13 pour un EAN-13, 18 pour un SSCC) rajoute les zéros pour vous. Cela ne fonctionne que si vous connaissez la largeur et que la valeur est par ailleurs intacte ; cela ne peut pas récupérer un SSCC dont les derniers chiffres ont déjà été arrondis par la limite des 15 chiffres.
  • Niveau 3 — retourner à la source. C'est la seule correction garantie. Réexportez les données depuis l'ERP, la fiche produit maître ou le CSV d'origine, et cette fois forcez la colonne au format texte à l'import. N'essayez pas de réparer un fichier corrompu jusqu'à le rendre correct : les chiffres perdus sont réellement partis, et les deviner est le meilleur moyen d'expédier un code-barres qui pointe vers le mauvais produit.

La distinction entre « se scanne mais faux » et « ne se scanne pas » fait l'objet de l'article se scanne mais rejeté : valeur encodée et base de données — à lire si vos codes-barres se lisent bien mais que le système continue de les refuser.

Comment vérifier vos données avant de générer

Avant de confier un lot à un générateur, effectuez un audit de deux secondes :

  1. Comptez les chiffres. Une colonne UPC-A doit comporter 12 chiffres partout ; EAN-13, 13 ; SSCC, 18. Si chaque valeur est amputée d'un chiffre, un zéro initial a été mangé.
  2. Cherchez E+ ou E-. Toute cellule affichée en notation scientifique est déjà corrompue — les derniers chiffres ont disparu.
  3. Triez et regardez les extrêmes. Les valeurs les plus grandes révéleront en premier l'arrondi à 15 chiffres ; un SSCC qui se termine par ...0000 alors qu'il devrait finir par ...1234 a été arrondi.

La correction d'un zéro initial supprimé est rapide ; celle d'un SSCC à 18 chiffres arrondi ne l'est pas, car les chiffres perdus ne peuvent pas être récupérés depuis le tableur. Dès l'instant où vous stockez un identifiant long sous forme de texte, vous n'avez plus jamais besoin d'effectuer cette réparation.

C'est la première couche du diagnostic en 12 causes « ne scanne pas » — et celle qui prend le plus de gens au dépourvu, car le code-barres s'imprime et se scanne , simplement vers la mauvaise valeur. Pour le cas étroitement lié où le symbole se scanne correctement mais que le système le rejette, voir se scanne mais rejeté : valeur encodée et base de données.

Pour aller plus loin