jeudi 8 novembre 2012

Calculer la clé d'un EAN 13 et générer des codes barres en masse

5 commentaires
Une formule rapide que je partage car j'avais besoin de ce calcul.
L'objectif est de calculer la clé d'un ean 13 quand on a les 12 premiers chiffres. Je ne suis pas l'auteur premier car j'ai repris la formule que j'ai trouvé sur ce forum, il ne faut pas toujours réinventer la roue :-)
La formule si l'ean avec 12 chiffres se trouve en A1 :
=CONCATENATE(A1;RIGHT(10-RIGHT(MID(A1;1;1)+MID(A1;3;1)+MID(A1;5;1)+MID(A1;7;1)+MID(A1;9;1)+MID(A1;11;1)+3*(MID(A1;2;1)+MID(A1;4;1)+MID(A1;6;1)+MID(A1;8;1)+MID(A1;10;1)+MID(A1;12;1)))))
Cette formule retourne un texte donc pour l'avoir au format nombre (aligné sur la droite) :
=VALUE(CONCATENATE(A1;RIGHT(10-RIGHT(MID(A1;1;1)+MID(A1;3;1)+MID(A1;5;1)+MID(A1;7;1)+MID(A1;9;1)+MID(A1;11;1)+3*(MID(A1;2;1)+MID(A1;4;1)+MID(A1;6;1)+MID(A1;8;1)+MID(A1;10;1)+MID(A1;12;1))))))
Générer des codes barres en masse
Comme j'avais aussi besoin de cela donc dans la cellule A1 on met une de ces deux formules :
=int(rand()*900000000000)+100000000000
=RANDBETWEEN(100000000000;999999999999)
La première est la formule brute mais comme Google est sympa il fournit aussi une formule un peu plus simple à mettre en place.
Dans la cellule B1 vous mettez une des deux premières formules et ensuite vous tirez toutes les cellules vers le bas (cf ce billet si besoin).
Voila vous avez des codes barres aléatoires et justes car la clé est bien calculée.

5 Responses so far

  1. Alban says:

    Merci beaucoup d'avoir partagé cette formule.

  2. Si vous êtes adhérent à GS1 France (l'organisme qui délivre les codes barres) on vous calcule la clé de contrôle directement sur http://www.adherents.gs1.fr/

  3. akta says:

    Ca ne marche pas pour moi, j'ai un message "#NOM?"

  4. Anonyme says:

    Avec Excel en français:
    =CONCATENER(A1;DROITE(10-DROITE(STXT(A1;1;1)+STXT(A1;3;1)+STXT(A1;5;1)+STXT(A1;7;1)+STXT(A1;9;1)+STXT(A1;11;1)+3*(STXT(A1;2;1)+STXT(A1;4;1)+STXT(A1;6;1)+STXT(A1;8;1)+STXT(A1;10;1)+STXT(A1;12;1)))))

Leave a Reply