Traitement codes barres

Bonjour à tous,

J'ai deux problèmes à résoudre qui sont compliqués pour moi qui ne suis pas spécialiste en la matière

J'ai une douchette pour lire les codes barres. Le but est le suivant: l'utilisateur scanne le gencode, et il renvoie une donnée issue d'un classeur lui même issu d'une base de donnée. (Jusque là j'ai su faire sans soucis)

Je problème est que je scanne un code barre EAN 13 tout vas bien mais certains codes barres (non EAN13) comporte plus d'informations (code carton/date de péremption/date d’emballage, etc...) Exemple:

Dans ma base de donnée j'ai un code barre 50464628453697 à reconnaître mais sur le carton j'ai 1504646284536970000000000000. (en tout cas c'est ce que me renvoi la douchette). J'ai donc récupéré cette info (dans A1) et l'ai transformé avec cette formule: A1/10000000000000-1000000000000000000000000000. J'obtiens donc le bon résultat.

Et beaucoup de mes codes barres ont cette forme.

Mais comme par hasard, et je m'y attendais, certains codes irréductibles sont différents et ont 13 ou 15 chiffres au lieu de 14... Ma formule est donc inutile! J'ai pourtant essayé avec des formule "SI" ou autre mais je ne parviens pas à mon but!

Ma question est donc la suivante:

- Existe-t-il une solution au traitement de différentes suites de chiffres (retrait de certains chiffres...) afin de palier à ce problème "adaptatif"?

Merci par avance à tous ceux qui m'aideront ou même essayeront de m'aider!

Je continue à chercher!

PS: Je suis sous Excel 2019 et non 2016 mais je n'ai pas trouvé où le changer...

bonjour Siriusx81 le forum

bon alors peut-être une ânerie mais tu as en vba le like qui permet de vérifier si tout ou partie d'une cellule est contenue dans une autre!!

Bien sur cela va t'obliger à scanner tous les codes que tu as dans ta machine, mais c'est peut-être une solution, à voir avec ton fichier??

a+

Papou

Merci pour ta réponse!

Je n'y connais rien en VBA, je suis en train de regarder quelques tutos mais j'imagine qu'une formation VBA ne se fait pas en 2 h!

Voici mon fichier (les données sont modifiées pour des questions de confidentialité)

En gros le but est le suivant:

L'opérateur scanne le produit (UC) et il peut contrôler les caractéristiques de ce produit.

Ensuite il scanne le carton dans lequel va cette UC et il valide la concordance. (ici on affiche les mêmes informations que l'UC)

Il peut enfin imprimer la feuille.

Petit bonus pour lequel je n'ai pas encore réfléchi, la base de données et censée grandir dans le temps... Y a til un moyen pour que la recherche grandisse avec la base de données? C'est à dire que la recherche prenne en compte les nouvelles lignes.

Merci par avance!

Ré Siriux81 le forum’je rergarde cela cet après midi car là plus devant le PC

A plus’

Papou

Merci pas de souci je suis patient!

Bonjour à tous !

Avez vous des nouvelles pour mon problème ?

J'ai beau chercher tout ce que je code fini systématiquement à la poubelle !

Papou, as tu eu le temps de t'y pencher ?

Merci par avance !

Bonjour,

Compte tenu de la multitude incroyable de codes barres ...

As-tu clairement identifié les types que tu dois traiter ?

Référence

http://www.gomaro.ch/Specifications/symbologies.htm

Bonjour James007,

Dans mon fichier, les codes barres UC (colonne EAN UC) ne sont en fait que des EAN 13 (je n'ai et n'aurai donc pas de problèmes avec ceux-ci à priori)

Les seuls qui me posent problème sont les codes barres carton dans la colonne DUN Carton.

Je ne parviens pas à trouver les type de code dont il s'agit. En effet, dans ma liste, la plus part ont 14 chiffres mais certains en ont 13. Sur le carton, ce code est "noyé" dans un code plus long avec certains chiffres entre parenthèses...

Par exemple j'ai sur un carton: (01)53760011732575(15)191019(10)191019

Suivants mes recherches, les nombres entre parenthèses sont des indices internationaux. (Code128? UCC128? Ean-GS1 128?)

Ici:

(01)=Code EAN14 ou GTIN14

(15)=Date mini de validité

(10)=Numéro de lot de fabrication

Pour ce code ma douchette me renvoi dans la case 1537600117325750000000000000000

Mon but est donc de récupérer le code que j'ai dans ma base de données qui est 53760011732575 d'où mon calcul savant:

1537600117325750000000000000000/10000000000000000-100000000000000.

Cependant, comme je le disais plus haut, certains codes n'ont que 13 chiffres. (et non 14... Serait-ce du EAN13?) donc mon calcul est HS...

Pour moi le "plus simple" serait une macro qui ne prendrait que les chiffres concernés et les comparerait à ma base.

Comme me disait Papou précédemment, une macro If mon_code Like "*53760011732575*" Then pour comparer pourrait être la solution. (oui je me suis renseigné de ce coté du coup )

Mais là, mes capacités à développer me stoppent!

J’espère être assez clair dans mon pavé. Merci pour toutes vos futures tentatives d'aides! (encore plus si elles sont fructueuses )

Re,

Dès que j'ai un petit moment ... je vais plonger dans les détails de ta demande ...

Merci par avance! Je continue d'y réfléchir de même!

Re,

Est-ce-que le fait d'insérer une formule combinée qui identifie les Colonnes Cibles ...

en fonction de la longueur du Code EAN peut t'aider ???

J'ai essayé de travailler sur le nombre de caractères avec NBCAR mais évidemment, même si la case est en format "nombre" il compte les caractères du format "scientifique" (1,15263454186125E+20) et me renvoi donc 20 caractères bien que 35 caractères soient affichés...

Re,

Tu as totalement raison ...

C'est justement pour cette raison ... que dans ton fichier test les ' Codes Carton ' sont au format Texte ... avec 28 caractères ...

J'ai peut-etre trouvé quelques chose, j'utilise la formule STXT qui récupère le nombre de caractères de mon choix dans une chaîne de caractères, à partir d'un emplacement que je lui indique! il me faudrait la combiner avec une NBCAR ... je continue de creuser

Et maintenant, c'est la formule EQUIV qui ne veut pas fonctionner avec le résultat de la formule STXT!

Et pour moi la colonne correspondant aux code cartons est au format nombre et non texte.

Edit: En effet dans le fichier que j'ai partagé ce n'est pas le cas. Au temps pour moi.

Re,

Du coup, dis-moi exactement si tu as résolu ta question ...

ou s'il reste encore un obstacle à surmonter ...

P.S. J'ai pris bonne note de ton message privé ...

J'ai trouvé la solution à mon problème de EQUIV il suffit de multiplier la valeur cherchée par 1 pour la "transformer" en nombre.

=EQUIV(A9*1;Sheet1!I:I;0)

Maintenant reste le quid de la discrimination entre 31 ou 35 chiffres dans le code scanné!

P.S. J'ai pris bonne note de ton message privé ...

Merci!

Maintenant reste le quid de la discrimination entre 31 ou 35 chiffres dans le code scanné!

Pourquoi ne pas appliquer la même logique que les formules en lignes 11 et 12 qui opèrent déjà la discrimination entre 13 ou 28 chiffres ...?

Je ne te suis pas, je n'ai rien en lignes 11 et 12?

Je ne te suis pas, je n'ai rien en lignes 11 et 12?

Dans l'onglet Feuille 1 ...

Ci-joint le fichier ...

88test-ean-codes.xlsm (58.40 Ko)
Rechercher des sujets similaires à "traitement codes barres"