Code de contrôle Ean 13

Le
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# et Y
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
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Eric Laurent
Le #19021691
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.)
jacques Trepp
Le #19026491
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" 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.)




Publicité
Poster une réponse
Anonyme