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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.)
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
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
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
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.)
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" <nospam.laurent.systel@wanadoo.fr> a écrit dans le message de
news:mn.fc147d93ea5763ea.17482@wanadoo.fr...
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
nospam.laurent.systel@wanadoo.fr
(enlever nospam.)
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