Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Code de contrôle Ean 13

2 réponses
Avatar
jacques Trepp
Bonjour à tous,

Nous sommes nouveaux adhérents à Gs1, et nous disposons d'une plage de 10000
codes ean13 pour nos besoins.
J'ai trouvé plusieurs méthodes de calcul de la clé. Dans la liste fournie
par GS1, les codes de 0 a 19 sont générés.
Je fais un petit module de calcul, et mes résultats sont différents des
leurs.
Je n'ai pas envie de me connecter chez eux à chaque nouveau code pour avoir
la clé.

Voici le code :
racine_EAN = "37000898"
Val_X, Val_Y, ch_unités,total_M, diff, code_controle sont des entiers
tot_tmp est une chaîne
TableSupprimeTout(Table1)
POUR ind = 0 A 19
Val_X = 0
Val_Y = 0
ch_unités = 0
total_M = 0
diff = 0
code_controle = 0
tot_tmp = ""
Code_temp = racine_EAN + NumériqueVersChaîne(ind,"04d")
POUR i = 12 A 1 PAS -1
SI EstImpair(i) ALORS
// colonne impaire
Val_Y += Val(Milieu(Code_temp,i,1))
SINON
// colonne paire
Val_X += Val(Milieu(Code_temp,i,1))
FIN
FIN
total_M = (Val_Y * 3) + Val_X
diff = total_M
BOUCLE
SI PartieDécimale(diff/10) = 0 ALORS SORTIR
diff ++
FIN
tot_tmp = NumériqueVersChaîne(total_M)
ch_unités = diff - total_M

code_controle = 10-ch_unités
TableAjoute(Table1,Code_temp+TAB+code_controle+TAB+Code_temp+code_controle)
FIN


Je fais la somme des colonnes paires (X) et impaires (Y)
le total est X + (Y*3)

Dans ce cas, X=23 et Y=12
Total = 36 + 23 = 59
premier nombre divisible par 10 = 60
60 - 59 = 1
clé = 10 - 1 = 9

là, ça correspond au code Gs1

le 2ème est incrémenté de 1
X = 24, Y = 23
Total = 36 + 24
premier nombre divisible par 10 = 60
60 - 60 = 0
clé = 10 - 0 = 10 !!!!
le code Gs1 est 6

J'ai raté un truc au passage ?

Merci d'avance


Jacques TREPP

2 réponses

Avatar
Eric Laurent
Voici le code que j'utilise pour calculer le code de controle EAN13.
C'est tout siimple et ça fonctionne.


CarControl est un entier // Caractère de contrôle
CodeBar est une chaîne //code Barre sur 12 caractères

//=== Calcul du caractère de contrôle EAN13.
CarControl=Val(CodeBar[[1]])
POUR Ind = 2 A 12
SI modulo(Ind-1,2)<>0 ALORS
CarControl = CarControl+Val(CodeBar[[Ind]])*3 // Controle*3
SINON
CarControl = CarControl+Val(CodeBar[[Ind]])
FIN
FIN
CarControl = ((PartieEntière ((CarControl-1)/10)+1)*10) - CarControl

Bon dev,

Eric

--
Eric Laurent

(enlever nospam.)
Avatar
jacques Trepp
Merci Eric
Effectivement, ça fonctionne mieux.
Je suis un peu pressé, mais j'aurai le fin mot de l'histoire. J'ai utilisé
la méthode de Wikipédia...

"Eric Laurent" a écrit dans le message de
news:
Voici le code que j'utilise pour calculer le code de controle EAN13.
C'est tout siimple et ça fonctionne.


CarControl est un entier // Caractère de contrôle
CodeBar est une chaîne //code Barre sur 12 caractères

//=== Calcul du caractère de contrôle EAN13.
CarControl=Val(CodeBar[[1]])
POUR Ind = 2 A 12
SI modulo(Ind-1,2)<>0 ALORS
CarControl = CarControl+Val(CodeBar[[Ind]])*3 // Controle*3
SINON
CarControl = CarControl+Val(CodeBar[[Ind]])
FIN
FIN
CarControl = ((PartieEntière ((CarControl-1)/10)+1)*10) - CarControl

Bon dev,

Eric

--
Eric Laurent

(enlever nospam.)