Mot exact Résultats par page

Index des mots-clés

AGENDA PERSONNEL
ALBUM PHOTO (Script)
ANTI SPAM
APICULTURE
BOISSONS (Recettes)
BREDELE
C++
CADRE
CHARLOTTE AUX FRUITS
CODAGE ADRESSES MAIL
CODE 2 DE 5 ENTRELACE
CODE 3 DE 9
CODE 128
CODE PDF417
CODES BARRE
CODE POSTAL
CODES VIDEOTEXT
CONFITURES
CONGOLAIS
CONSERVES (Recettes)
CORNICHONS AU VINAIGRE
COUARAIL
CUISINE (Bases)
CYBERMUT
DADANT
DATAMATRIX
DDE
DESSERTS (Recettes)
DOUBLE NAT
DYNDNSUPDATE
EAN 13
EAN 128
ELECTRONIQUE
ENTREES (Recettes)
ENVOI DE SMS
ESPACE MEMBRE
EURO
EXEMPLES VB6
FAVORIS
FONCTIONS
FONCTIONS EN C++
GUACAMOLE
IMPRIMANTES RESEAUX
INSTANCE UNIQUE
KIT VB4
LANGSTROTH
LEGUMES (Recettes)
MADELEINES
MAISONS
MAQUEREAUX AU VIN BLANC
MAQUEREAUX (Rillettes)
NMEA
NOUGATINE
PAIN
PDF417
PHP
PIC
PLANS DE MAISON
PATISSERIE (Bases)
PLANTEUR
PLATS COMPLETS (Recettes)
POISSONS (Recettes)
PROCEDURES
PROGRAMMATION
RECETTES DE CUISINE
RESSOURCES RESEAUX
R.I.B.
ROUTINES
RUCHE
SALADES (Recettes)
SAUMON EN CROUTE
SCRIPTS
SITES
SLICE
SMS
SOUPE DE COURGE
TABLE PERIODIQUE
TATIN (Tarte)
USB
VIANDES (Recettes)
VIDEOTEXT
VISUAL BASIC
VOIRNOT
WNTIPCFG

Mot exact Résultats par page
I
N
D
E
X

Le code EAN 13


English version

Ce code utilisé sur tous les articles de consommation courante permet le codage de 12 chiffres, le treizième chiffre étant une clé de contrôle qu'il faudra générer. Avant d'entrer dans la technique, deux petites digressions.

Le code barre type UPC-A utilisé aux états unis

Il ne comporte que 11 chiffres plus la clé. C'est en réalité un code EAN13 dont le premier chiffre serait zéro et dont la présentation serait légérement différente. Le code UPC-A est un sous-ensemble du code EAN13.
Exemple :

Ces deux codes barre sont identiques, on a rajouté un zéro devant le code UPC-A pour obtenir le code EAN13 mais le motif des barres est strictement identique.
Début 2005 tous les magasins des Etats-Unis doivent accepter le code EAN13, il n'y a donc plus de raison de produire des codes UPC-A.


Signification des chiffres.

- 2 chiffres pour le code pays ou code système
- 5 chiffres pour l'identificateur de société
- 5 chiffres pour l'identificateur d'article
- 1 chiffre pour la somme de contrôle
Cette règle subit de nombreuses entorses pour améliorer l'usage des chiffres disponibles.
Voici la liste des codes pays ou système :

00 à 13 UCC (Etats-Unis et Canada)
20 à 29 Codification interne en magasin
30 à 37 GENCOD-EAN France
380 BCCI (Bulgarie)
383 SANA (Slovénie)
385 CRO-EAN (Croatie)
387 EAN-BIH (Bosnie-Herzégovine)
400 à 440 CCG (Allemagne)
45 + 49 Distribution Code Center – DCC (Japon)
460 à 469 UNISCAN - EAN Russie (Fédération de Russie)
471 CAN (Taiwan)
474 EAN Estonie
475 EAN Lettonie
476 EAN Azerbaï djan
477 EAN Lituanie
478 EAN Ouzbékistan
479 EAN Sri Lanka
480 PANC (Philippines)
481 EAN Biélorussie
482 EAN Ukraine
484 EAN Moldavie
485 EAN Arménie
486 EAN Georgie
487 EAN Kazakhstan
489 HKANA (Hong Kong)
50 E Centre UK
520 HELLCAN-EAN HELLAS (Grèce)
528 EAN Liban
529 EAN Chypre
531 EAN-MAC (FYR Macédonie)
535 EAN Malte
539 EAN Irlande
54 ICODIF/EAN Belgique. Luxembourg
560 CODIPOR (Portugal)
569 EAN Islande
57 EAN Danemark
590 EAN Pologne
594 EAN Roumanie
599 H.A.P.M.H. (Hongrie)
600 - 601 EAN Afrique du Sud
609 EAN Ile Maurice
611 EAN Maroc
613 EAN Algérie
619 Tunicode (Tunisie)
621 EAN Syrie
622 EAN Egypte
625 EAN Jordanie
626 EAN Iran

628 EAN Arabie Saoudite
64 EAN Finlande
690 - 693 Article Numbering Centre of China - ANCC (Chine)
70 EAN Norge (Norvège)
729 Israeli Bar Code Association – EAN Israël
73 EAN Suède
740 EAN Guatemala
741 EAN El Salvador
742 ICCC (Honduras)
743 EAN Nicaragua
744 EAN Costa Rica Panama
746 746 EAN République Dominicaine
750 AMECE (Mexique)
759 EAN Venezuela
76 EAN (Schweiz, Suisse, Svizzera)
770 IAC (Colombie)
773 EAN Uruguay
775 APC - EAN Peru (Pérou)
777 EAN Bolivie
779 CODIGO - EAN Argentine
780 EAN Chili
784 EAN Paraguay
786 ECOP (Equateur)
789 EAN Brésil
80 à 83 INDICOD (Italie)
84 AECOC (Espagne)
850 Camera de Comercio de la Republica de Cuba (Cuba)
858 EAN Slovaquie
859 EAN République Tchèque
860 EAN YU (Yougoslavie)
867 EAN DPR Korea (Corée du Nord)
869 Union of Chambers of Commerce of Turkey (Turquie)
87 EAN Nederland (Hollande)
880 EAN Korea (Corée du Sud)
885 EAN Thaï lande
888 SANC (Singapour)
890 EAN Inde
893 EAN Vietnam
899 EAN Indonésie
90 - 91 EAN Autriche
93 EAN Australie
94 EAN Nouvelle Zélande
955 Malaysian Article Numbering Council (MANC) - Malaisie
977 Publications sérielles (ISSN)
978 - 979 Livres (ISBN)
980 Reçus de remboursement
981 - 982 Coupons (monnaie courante)
99 Coupons

Voyons maintenant le calcul de la somme de contrôle.

Les chiffres sont numérotés de droite à gauche;
Soit x, la somme des chiffres pairs et y la somme des chiffres impairs
Calculons z = x +3*y
Soit m le nombre divisible par 10 immédiatement supérieur à z
La somme de contrôle est : m - z

Exemple : 978020113447
x = 4 + 3 + 1 + 2 + 8 + 9 = 27
y = 7 + 4 + 1 + 0 + 0 + 7 = 19
z = 3 * 19 + 27 = 84
m = 90
Somme de contrôle = 90 - 84 = 6
EAN13 ---> 9 780201 134476

Puis étudions le système d'encodage.

Symbolisons le module de barre par "1" et le module d'espace par "0"

Les chiffres sont convertis selon l'une des 3 tables ci dessous; les codes des tables A et B commencent par un espace alors que ceux de la table C commencent par une barre.

chiffre

Table A

Table B

Table C

0

0001101

0100111

1110010

1

0011001

0110011

1100110

2

0010011

0011011

1101100

3

0111101

0100001

1000010

4

0100011

0011101

1011100

5

0110001

0111001

1001110

6

0101111

0000101

1010000

7

0111011

0010001

1000100

8

0110111

0001001

1001000

9

0001011

0010111

1110100

Le premier chiffre n'est pas codé, chacun des 6 chiffres suivants est converti soit par la table A soit par la table B, et cela en fonction du premier chiffre. Les 6 derniers chiffres sont convertis par la table C.
Une nouvelle table indique l'utilisation des tables A ou B en fonction du chiffre N°1

Selon chiffre 1

chiffre 2

chiffre 3

chiffre 4

chiffre 5

chiffre 6

chiffre 7

0

A

A

A

A

A

A

1

A

A

B

A

B

B

2

A

A

B

B

A

B

3

A

A

B

B

B

A

4

A

B

A

A

B

B

5

A

B

B

A

A

B

6

A

B

B

B

A

A

7

A

B

A

B

A

B

8

A

B

A

B

B

A

9

A

B

B

A

B

A


Certains code EAN13 sont suivi d'un "supplément" de 2 ou 5 chiffres, notamment sur les livres et magazines.
Ce supplément est codé à l'aide des tables A & B. Le choix, pour chaque chiffre du supplément, de la table A ou B dépend d'une somme de contrôle qu'il faut calculer.

Supplément à 2 chiffres.

Calcul de la somme de contrôle :
Soit x, la valeur du supplément
Soit m le nombre divisible par 4 immédiatement inférieur à x
La somme de contrôle est : x - m
Exemple :
x = 35 --> m = 32
Somme contrôle = 35 - 32 = 3

Somme
de contrôle

chiffre 1

chiffre 2

0

A

A

1

A

B

2

B

A

3

B

B

Supplément à 5 chiffres

Calcul de la somme de contrôle :
Soit x, la somme des chiffres pairs et y la somme des chiffres impairs
Calculons z = 9 * x + 3 * y
Soit m le nombre divisible par 10 immédiatement inférieur à z
La somme de contrôle est : z - m
Exemple :
Supplément = 12345
x = 2 + 4 = 6 et y = 1 + 3 + 5 = 9 donc z = 9 * 6 + 3 * 9 = 81 Somme contrôle = 81 - 80 = 1

Somme
de contrôle

chiffre 1

chiffre 2

chiffre 3

chiffre 4

chiffre 5

0

B

B

A

A

A

1

B

A

B

A

A

2

B

A

A

B

A

3

B

A

A

A

B

4

A

B

B

A

A

5

A

A

B

B

A

6

A

A

A

B

B

7

A

B

A

B

A

8

A

B

A

A

B

9

A

A

B

A

B

De plus un supplément débute par un délimiteur spécial de 4 modules dont la formule est : 1011 et chaque caractère, sauf le dernier,est suivi d'un séparateur de formule 01.

La création des codes barres.

Maintenant que nous savons créer le motif d'un code barre, il nous reste à le dessiner à l'écran et à l'imprimer sur papier. Deux approches sont possibles :

Toutes les polices pour codes barre EAN trouvées sur le net (Polices de démonstration incomplètes) sont payantes (Parfoistrès chères) etde qualité douteuse; la largeur des modules n'étant pas toujours constante dans la définition de la police. J'ai donc décidé de dessiner entièrement une police EAN 13 et de la proposer en téléchargement. Je l'ai testé sur une imprimante laser en corps 14, ce qui donne un très petit code barred'environ 13 mm de largeur,résultat : lecture à 100% ! Sur une bonne imprimante à jet d'encre, ce même corps de 14 fonctionne parfaitement.

La police " EAN13.ttf "

Cette police contient 5 jeux des 10 chiffres pour les trois tables A, B et C étudiées plus haut ainsi que 2 jeux pour l'inscription du premier chiffre (Table D & E)

Le tableau suivant indique la correspondance entre le code barre dessiné et la lettre tapée (Code ASCII entre parenthèse)

Chiffre

Table A

Table B

Table C

Table D

Table E

0

A (65)

K (75)

a (97)

0 (48)

k (107)

1

B (66)

L (76)

b (98)

1 (49)

l (108)

2

C (67)

M (77)

c (99)

2 (50)

m (109)

3

D (68)

N (78)

d (100)

3 (51)

n (110)

4

E (69)

O (79)

e (101)

4 (52)

o (111)

5

F (70)

P (80)

f (102)

5 (53)

p (112)

6

G (71)

Q (81)

g (103)

6 (54)

q (113)

7

H (72)

R (82)

h (104)

7 (55)

r (114)

8

I (73)

S (83)

i (105)

8 (56)

s (115)

9

J (74)

T (84)

j (106)

9 (57)

t (116)

Codes supplémentaires :
: (58) : Délimiteur de début (Pour logiciel SAGE)
* (42) : Délimiteur central
+ (43) : Délimiteur de fin
[ (91) : Délimiteur début de supplément
\ (92) : Séparateur de caratère dans le supplément

Copiez ce fichier
dans le répertoire des
polices, le plus souvent :
C:\WINDOWS\FONTS

Le délimiteur de début seul (Code 58) et la table E ont étés ajoutés pour les utilisateurs des logiciels SAGE qui devront alors configurer dans leur logiciel le tableau de codage de la police EAN13 comme suit :

Position

1

2

3

4

5

6

7

8

9

Valeur

[

:

A

K

*

a

+

k

]

Structure d'un code EAN13

Un code barre EAN13 sera donc constitué de la manière suivante :

Un petit programme pour tester tout ça

Voici un petit programme écrit
en Visual Basic 6; le fichier
d'installation copiera le
programme, les dépendances Visual
Basic ainsi que les
fichiers sources et la police.

Fichier d'auto-installation :

Fichier ZIP sans installation :

La fonction EAN13$ peut -être réutilisée dans n'importe quel autre programme écrit en Visual Basic 6 ; elle peut également être recopiée telle quelle dans une macro VBA rattachée à un document Excel ou Word.

Public Function ean13$(chaine$)
  'Cette fonction est régie par la Licence Générale Publique Amoindrie GNU (GNU LGPL)
  'This function is governed by the GNU Lesser General Public License (GNU LGPL)
  'V 1.1.1
  'Paramètres : une chaine de 12 chiffres
  'Parameters : a 12 digits length string
  'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre
  '         * une chaine vide si paramètre fourni incorrect
  'Return : * a string which give the bar code when it is dispayed with EAN13.TTF font
  '         * an empty string if the supplied parameter is no good
  Dim i%, checksum%, first%, CodeBarre$, tableA As Boolean
  ean13$ = ""
  'Vérifier qu'il y a 12 caractères
  'Check for 12 characters
  If Len(chaine$) = 12 Then
    'Et que ce sont bien des chiffres
    'And they are really digits
    For i% = 1 To 12
      If Asc(Mid$(chaine$, i%, 1)) < 48 Or Asc(Mid$(chaine$, i%, 1)) > 57 Then
        i% = 0
        Exit For
      End If
    Next
    If i% = 13 Then
      'Calcul de la clé de contrôle
      'Calculation of the checksum
      For i% = 12 To 1 Step -2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      checksum% = checksum% * 3
      For i% = 11 To 1 Step -2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      chaine$ = chaine$ & (10 - checksum% Mod 10) Mod 10
      'Le premier chiffre est pris tel quel, le deuxième vient de la table A
      'The first digit is taken just as it is, the second one come from table A
      CodeBarre$ = Left$(chaine$, 1) & Chr$(65 + Val(Mid$(chaine$, 2, 1)))
      first% = Val(Left$(chaine$, 1))
      For i% = 3 To 7
        tableA = False
         Select Case i%
         Case 3
           Select Case first%
           Case 0 To 3
             tableA = True
           End Select
         Case 4
           Select Case first%
           Case 0, 4, 7, 8
             tableA = True
           End Select
         Case 5
           Select Case first%
           Case 0, 1, 4, 5, 9
             tableA = True
           End Select
         Case 6
           Select Case first%
           Case 0, 2, 5, 6, 7
             tableA = True
           End Select
         Case 7
           Select Case first%
           Case 0, 3, 6, 8, 9
             tableA = True
           End Select
         End Select
       If tableA Then
         CodeBarre$ = CodeBarre$ & Chr$(65 + Val(Mid$(chaine$, i%, 1)))
       Else
         CodeBarre$ = CodeBarre$ & Chr$(75 + Val(Mid$(chaine$, i%, 1)))
       End If
     Next
      CodeBarre$ = CodeBarre$ & "*"   'Ajout séparateur central / Add middle separator
      For i% = 8 To 13
        CodeBarre$ = CodeBarre$ & Chr$(97 + Val(Mid$(chaine$, i%, 1)))
      Next
      CodeBarre$ = CodeBarre$ & "+"   'Ajout de la marque de fin / Add end mark
      ean13$ = CodeBarre$
    End If
  End If
End Function
Pour tester cette fonction avec Excel, voici un fichier de démonstration : et avec Open Office :

Depuis la première parution de cette page, j'ai reçu de nombreuses versions dans différents langages, les voici :

Language

Auteur

Neobook 4

Jean-Louis HUVE


(Simplement lancer l'exe qui se trouve dans le zip.)

Visual Foxpro

Emile MAITREJEAN

Delphi

John SWIJSEN
YARDIMLI EKIM E YARDIMLI
Francisco FERNANDEZ



C#

Russell SAYERS

Perl

Simone FIORAVANTI

Axapta

Søe JESPER


Le code EAN 8
 

Il ressemble beaucoup au code EAN 13. Il comporte 7 chiffres et une somme de contrôle calculée exactement de la même manière que pour le code EAN13. Les délimiteurs gauche (On utilisera l'ASCII 58), central et droit sont les mêmes. Les 4 premiers chiffres sont construits avec la table A et les 4 derniers avec la table C.
Nous utiliserons donc aussi la police EAN13 avec cette fonction :

Public Function EAN8$(chaine$)
  'V 1.0.0
  'Paramètres : une chaine de 7 chiffres
  'Parameters : a 7 digits length string
  'Retour : * une chaine qui, affichée avec la police EAN13.TTF, donne le code barre
  '         * une chaine vide si paramètre fourni incorrect
  'Return : * a string which give the bar code when it is dispayed with EAN13.TTF font
  '         * an empty string if the supplied parameter is no good
  Dim i%, checksum%, first%, CodeBarre$, tableA As Boolean
  EAN8$ = ""
  'Vérifier qu'il y a 7 caractères
  'Check for 7 characters
  If Len(chaine$) = 7 Then
    'Et que ce sont bien des chiffres
    'And they are really digits
    For i% = 1 To 7
      If Asc(Mid$(chaine$, i%, 1)) < 48 Or Asc(Mid$(chaine$, i%, 1)) > 57 Then
        i% = 0
        Exit For
      End If
    Next
    If i% = 8 Then
      'Calcul de la clé de contrôle
      'Calculation of the checksum
      For i% = 7 To 1 Step -2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      checksum% = checksum% * 3
      For i% = 6 To 1 Step -2
        checksum% = checksum% + Val(Mid$(chaine$, i%, 1))
      Next
      chaine$ = chaine$ & (10 - checksum% Mod 10) Mod 10
      'Les 4 premier chiffre viennent de la table A
      'The first 4 digits come from table A
      CodeBarre$ = ":"   'Ajout marque de début / Add start mark
      For i% = 1 To 4
         CodeBarre$ = CodeBarre$ & Chr$(65 + Val(Mid$(chaine$, i%, 1)))
      Next
      CodeBarre$ = CodeBarre$ & "*"   'Ajout séparateur central / Add middle separator
      For i% = 5 To 8
        CodeBarre$ = CodeBarre$ & Chr$(97 + Val(Mid$(chaine$, i%, 1)))
      Next
      CodeBarre$ = CodeBarre$ & "+"   'Ajout de la marque de fin / Add end mark
      EAN8$ = CodeBarre$
    End If
  End If
End Function
	    

Vous aimez cette page ?

Elle vous est utile ?

Cliquez ici !