Dans un texte, dans un mot, on voit facilement si l'orthographe est correcte. Par contre lorsqu'on nous communique un nombre, comment vérifier qu'il n'y a pas d'erreur ? Et comme les nombres envahissent notre vie...
Quelles sont les erreurs les plus courantes que nous pouvons faire lorsque nous transmettons un nombre:
- transmettre un chiffre erroné
- intervertir deux chiffres (la plupart du temps consécutifs)
- transmettre un chiffre "illisible"
Il s'agit de
détecter une erreur possible; les méthodes de vérification devront donc essentiellement tenir compte de ces deux types d'erreur. Elles sont généralement basées sur le calcul d'un reste d'une division par un nombre N astucieusement choisi.
Les comptes en banque
S'il y a erreur sur un chiffre la différence entre la valeur correcte et la valeur erronée sera 10
n.(a - b), où a représente le chiffre correct et b le chiffre erroné. Par conséquent on doit éviter de choisir N multiple de a - b ou N diviseur de 10
n.
Si on a interverti deux chiffres a et b, la différence entre le nombre exact et le nombre erroné vaudra a.10
n + b.10
m - b.10
n - a.10
m. Cette différence vaut 10
m.(a - b).(10
n-m - 1).
Il faudra donc éviter de choisir pour N un nombre inférieur ou égal à 10 ou un diviseur de 9, 99, 999,....
Le plus sur est de prendre N un nombre premier supérieur à 10. En pratique on estime qu'on peut choisir N plus petit que 100 et on prend N=97. Le nombre formé par les deux derniers chiffres est donc le reste de la division par 97, avec toutefois une exception ! Si le reste est nul (on a encore toujours peur du zéro, voyez les ascenceurs...) on le remplace par 97.
Comme vérification, prenons le compte 001-0314779-90.
Le résultat de la division de 0010314779 par 97 vaut 106337 (106337*97 = 10314689), et le reste vaut bien 90.
Le numéro est correct (c'est le mien, vous y versez ce que vous voulez !)
On a récemment introduit l'
IBAN (International Bank Account number). On espérait enfin voir une vraie uniformisation des comptes bancaires avec un système de contrôle simple. Malheureusement, ce n'est pas le cas et chaque pays a adopté sa propre structure.
Comment est construit cet IBAN ?
Il se compose d'abord de 4 caractères: 2 lettres (la codification ISO du pays, BE=Belgique, FR=France, CH=Suisse,...) suivies de 2 chiffres qui constituent le contrôle. On poursuit avec l'identification de l'établissement financier (caractères alpha-numériques) suivi du BAN (Bank Account number).
Pour fixer les idées, mon ancien numéro de compte figure plus haut: 001-0314779-90. Je suis belge (code BE); mon établissement financier est codé 001. Comment, à partir de ces données, reconstiuer l'IBAN ?
On écrit BE00 (le code pays suivi de 2 zéros) puis le code de l'établissement financier suivi du numéro de compte, ce qui donne:
BE00001031477990
Il reste à calculer les deux chiffres de contrôle figurant après le code pays. Pour cela on transpose les 4 premiers caractères vers la fin, ce qui donne:
001031477990BE00
Malheureusement figurent des lettres (dans le code pays et parfois dans le numéro de compte bancaire). On les remplace avec la règle A=10, B=11, C=12,....Z=35. Cela nous donne:
001031477990111400
Ensuite on effectue, comme anciennement une division par 97. Le contrôle sera égal à 98 moins le reste de cette division entière.
Dans l'exemple le quotient entier vaut 10633793712488 et le reste vaut 64. En effet 10633793712488*97 = 1031477990111336. Le contrôle est la différence entre 98 et ce reste, c'est-à-dire 34. Mon IBAN est donc:
BE34001031477990
Pour plus de facilités, cet IBAN est décomposé en tranches de 4 caractères, c'est-à-dire:
BE34-0010-3147-7990
Ceci pour les lecteurs de l'étranger !!
L'ISBN
Actuellement tous les livres possèdent un numéro d'identification de 10 caractères appelé ISBN (International Standard Book Number); pour les périodiques il s'agit d'un nombre de 8 caractères appelé ISSN (International Standard Serial Number). Là encore le dernier caractère est présent afin de vérifier la validité des précédents.
De même que pour les comptes en banque on veut éviter les erreurs les plus courantes.
La méthode utilisée ici consiste à multiplier le premier chiffre (en partant de la droite) par 1, le deuxième chiffre par 2, le troisième par 3, le quatrième par 4... et d'en faire la somme. Plus formellement si les chiffres, en partant de la droite, sont désignés par a
1, a
2, a
3,... on effectue la somme Σk*a
k depuis k=1 jusqu'à 10 (ou 8), et le contrôle s'effectuera en calculant le reste de la division de cette somme par N.
Si on commet un erreur sur un chiffre (p.ex. le chiffre a
k), le résultat de la somme sera affecté d'une erreur multiple de k fois la différence entre le chiffre correct et le chiffre erroné. Si on a par erreur permuté deux chiffres (p.ex. a
k et a
l), là encore le résultat sera affecté d'une erreur produit de la différence (k - l)(a
k - a
l), c'est-à-dire un produit de deux facteurs inférieurs à 10.
Il suffit donc de choisir pour N un nombre premier supérieur à 9. Mais comme on n'autorise qu'un chiffre de contrôle, il faudrait prendre le reste de la division par un nombre au plus égal à 10. Cela ne permet pas de satisfaire aux exigences. L'astuce consiste à choisir comme diviseur N = 11. Mais au cas où il faudrait prendre 10 comme dernier chiffre, on se souvient que 10 s'écrit X en chiffres romains.
On voit ainsi que le dernier chiffre (contrôle) se calcule à partir des 9 (ou 7) précédents: on part du fait que Σk*a
k est un multiple de 11; on en déduit que a
1 est le naturel inférieur à 11 qu'il faut ajouter à Σk*a
k, k variant de 2 à 10 (ou 8), pour obtenir un multiple de 11.
Le chiffre de contrôle, dernier chiffre de l'ISBN (ou de l'ISSN), peut donc varier de 0 à 10 (noté X).
A titre d'exemple vérifions que l'ISBN 2-87262137-7 est correct.
On calcule 1*7 + 2*7 + 3*3 + 4*1 + 5*2 + 6*6 + 7*2 + 8*7 + 9*8 + 10*2 = 242 qui est bien divisible par 11. On a donc bien un ISBN valable.
Les Codes à barres
Il existe différents types de cades à barres. Nous décrirons celui couramment utilisé dans le commerce (EAN-8 ou EAN-13) EAN sont les initiales de "European Article Numbering". La méthode de contrôle est bien plus élémentaire.
Pour les codes EAN-8, on calcule la somme P des chiffres de rang pair et celle I des chiffres de rang impair. On effectue P + 3*I et on doit obtenir un multiple de 10.
Pour les codes EAN-13, le premier chiffre sert de contrôle, pour les 12 suivants on calcule les sommes I et P; le chiffre contrôle est le chiffre qui ajouté à P + 3*I donne un multiple de 10.
Ce type de contrôle ne permet que la détection d'un chiffre erroné; toutefois il permet de reconstituer un chiffre effacé (ou mal lu). La fiabilité est obtenue en codant astucieusement les chiffres par des traits. Ceux-ci sont obtenus en sélectionnant des barres dans un ensemble de largeur 7 (p.ex. une barre noire de largeur 2, une blanche de largeur 3, une noire de largeur 1 et une blanche de largeur 1).
On distingue sur les étiquettes deux types d'information: le producteur et le produit. Pour le codage EAN-8, les chiffres producteur-produit (4 chiffres chacun) sont codés de manière complémentaire. Pour le codage EAN-13 (préfixe 2 chiffres - producteur 5 chiffres - produit 5 chiffres et 1 chiffre contrôle) il existe un codage particulier pour le producteur mais nous n'entrerons pas dans ces détails.
Codage producteur
Codage produit
Pourquoi une largeur 7 ?

A la lecture une erreur peut se produire; nous devons coder 2 fois 10 chiffres (producteur et produit); si on choisit une largeur
n, une lecture correcte ou affectée d'une simple erreur donne lieu à
n + 1 possibilités.
On choisit
n le plus petit possible mais permettant la détection d'une erreur. Les 20 "mots" du code doivent tous être à distance au moins égale à 2 (voir
codes détecteurs). De plus on souhaite commencer (ou terminer) le codage de chaque chiffre par un blanc. Il n'est alors pas difficile de voir que la meilleure valeur de
n vaut 7.
Le choix du codage des chiffres, renforcé par l'existence d'un contrôle, permet alors une très grande fiabilité dans la lecture des codes à barres.
Testons le code 5400-4207 (EAN-8); I = 5 + 0 + 4 + 0 = 9, P = 4 + 0 + 2 + 7 = 13; on a 3*I + P = 27 + 13 = 40 ce qui est bien un multiple de 10.
Prenons à présent les codes à 13 chiffres (EAN-13).
Le code 5-410013-100003 est correct; I = 4 + 0 + 1 + 1 + 0 + 0 = 6, P = 1 + 0 + 3 + 0 + 0 + 3 = 7; on a 3*I + P = 18 + 7 = 25, il faut donc ajouter 5 pour obtenir un multiple de 10; ce chiffre est placé en tête du code.
Prenons le code ?-379671-182511; I = 3 + 9 + 7 + 1 + 2 + 1 = 23, P = 7 + 6 + 1 + 8 + 5 + 1 = 28; on a 3*I + P = 69 + 28 = 97; le contrôle est donc 3: le code à barres complet est 3-379671-182511.
Vérifions enfin le code 8-076800-3769
x9 (
x est supposé être un chiffre illisible). I = 0 + 6 + 0 + 3 + 6 +
x = 15 +
x et P = 7 + 8 + 0 + 7 + 9 + 9 = 40; on a 3*I + P = 45 + 3*
x + 40 = 85 + 3*
x; le contrôle vaut 8. Il faut donc que 85 + 3*
x + 8 = 93 + 3*
x soit multiple de 10; par conséquent 3*
x se termine par 7 et vaut 27. On détermine ainsi le chiffre manquant
x qui vaut 9. Le code correct est donc 8-076800-376999