Voila, j'ai une application qui tournait chez un client depuis quelques temps, cette application génére, entre autre, des codes barres.
J'ai un code unique à 11 chiffres, et je calcul la clé de controle moi même. Ensuite j'imprime des codes barre de type EAN13 sous windev en envoyant mon code de 12Chiffres (11 chiffres du code + 1controle).
Le problème c'est que sur certains codes, la clé de controle que je calcul n'est pas la même que celle que calcul windev pour l'impression. Du coup je me retrouve à imprimer un code différent de la valeur envoyée.
Par exemple pour le code 00000010638, je calcul 6 en clé, ça me donne : 000000106386, mais mon état imprime le code 000000106382.
Ci dessous mon algo de calcul de la clé de controle :
PROCEDURE calculControleEAN13(_codeInitial)
temp est un entier
sommePair, sommeImpair sont des entiers
z est un entier
m est un entier
controle est un entier
chaineControle est une chaîne
i est un entier = 1
BOUCLE(Taille(_codeInitial))
temp = _codeInitial[[i A i]]
SI EstPair(i+1) ALORS
sommePair += temp
SINON
sommeImpair += temp
FIN
i++
FIN
z = 3*sommeImpair + sommePair
m = z
BOUCLE
SI modulo(m,10) = 0 ALORS SORTIR
m++
FIN
controle = m - z
chaineControle = controle
RENVOYER chaineControle
Les codes sont issus de codes articles de type 9999, que je complète à gauche par un nombre de 0 variable afin d'avoir toujours la même longeur. Le problème est apparut aves les codes de plus de 4 chiffres. Néanmoins ce problème n'affecte pas tous les codes barre
![](http://old.wdforge.org/uploads/icon_confused.gif)
Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=14&topic_id=3558&post_id=15002