Retrouver une cellule dans une liste par un scan douchette

Hurricane.Tn

XLDnaute Nouveau
bonjour, je voudrais savoir comment faire pour que dans le même fichier un message s'affiche "code a barre incorrecte" si le code a barre scanner ne contient pas "/"
merci.
 

youky(BJ)

XLDnaute Barbatruc
Salut bien,
Remplacer le code par celui là
Bruno
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Target.Value Like "*/*" = False Then
MsgBox "Code Barre Incorrect", vbExclamation, "ANNULATION"
Application.EnableEvents = False
Target = "": Target.Select
Application.EnableEvents = True
Exit Sub
End If
ref = Split(Target, "/")(0): lot = Split(Target, "/")(1)
If Intersect(Range(Target.Address), Range("K6,N6")) Is Nothing Then Exit Sub
If Target.Address = "$K$6" Then lda = "B10": col = 8
If Target.Address = "$N$6" Then lda = "H10": col = 9
lig = Application.Match(ref, [A:A], 0)
If Not IsNumeric(lig) Then MsgBox "inexistant": Exit Sub
Application.EnableEvents = False
Range(lda) = Date: Beep
Cells(lig, 7) = lot: Cells(lig, col) = Cells(lig, col) + 1: Target = ""
Target.Select
Application.EnableEvents = True
End Sub
 

Hurricane.Tn

XLDnaute Nouveau
Merci beaucoup :)
mais est ce que c normal que je ne peu pas faire le calcul de la consommation automatiquement avec une simple formule (H14-I14)
le message code a barre incorrect s'affiche.
 

youky(BJ)

XLDnaute Barbatruc
Mille excuses, c'est une boulette de plus !
J'ai oublié de décaler une ligne.
Nouveau code . . . .
Bruno
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
If Intersect(Range(Target.Address), Range("K6,N6")) Is Nothing Then Exit Sub
If Target.Value Like "*/*" = False Then
MsgBox "Code Barre Incorrect", vbExclamation, "ANNULATION"
Application.EnableEvents = False
Target = "": Target.Select
Application.EnableEvents = True
Exit Sub
End If
ref = Split(Target, "/")(0): lot = Split(Target, "/")(1)
If Target.Address = "$K$6" Then lda = "B10": col = 8
If Target.Address = "$N$6" Then lda = "H10": col = 9
lig = Application.Match(ref, [A:A], 0)
If Not IsNumeric(lig) Then MsgBox "inexistant": Exit Sub
Application.EnableEvents = False
Range(lda) = Date: Beep
Cells(lig, 7) = lot: Cells(lig, col) = Cells(lig, col) + 1: Target = ""
Target.Select
Application.EnableEvents = True
End Sub
 

Hurricane.Tn

XLDnaute Nouveau
Bonjour Bruno j'espère que vous allez bien, est ce possible que vous m'aidiez une nouvelle fois.
notre service qualité m'a demander de mentionner le nom du préparateur, vérificateur et livreur dans le fichier en leurs attribuant des codes.
alors j'ai créer des codes barre pour eux en faisant la différence avec "@" dans le code des préparateurs et vérificateurs et "!" dans le code des livreurs.
donc avant de scanner les articles le préparateur doit scanner sont code barre et sont nom va apparaitre dans la cellule "nom du préparateur" ainsi que la date et un message "veuillez scanner le code du préparateur" apparait si la cellule est vide lors du scanne des articles.
ensuite si on scanne un autre code avec "@" la cellule nom du vérificateur se rempli seulement si le nom du préparateur est différent de celui du vérificateur, sinon le message "Le Vérificateur doit être différent du préparateur".
de même si on scanne un code avec le caractère "!" (livreur) le nom du livreur ne se rempli seulement si les cellules préparateur et vérificateur sont remplis.
enfin l'utilisateur ne peux pas faire le scanne d retour seulement si la partie préparation et livraison soit rempli.

Merci d'avance.
 

Fichiers joints

youky(BJ)

XLDnaute Barbatruc
Bonsoir,
Désolé du retard mais bien occupé et bonne crève.
Voici de retour le fichier, je ne peux pas tester mon code, pas de scanette alors . . .
si au lieu du nom est inscrit un code fait la modif
exemple bruno@12345 pour avoir bruno c'est (0) et pour avoir 12345 c'est (1)
Split(Target, "@")(0)
Split(Target, "!")(0)
si pas bon remplacer (0) par (1)
y en a 3 à remplacer
Bruno
 

Fichiers joints

Hurricane.Tn

XLDnaute Nouveau
Merci Bruno pour votre réactivité mais actuellement dés que je scanne le code du préparateur il me demande de scanner le code du vérificateur ensuite le livreur en ensuite lorsque je scanne les articles ca ne marche pas.
je vous explique mieux ce que je veux car désolé j'été pas trop claire la dernière fois, donc je veux qu'au début l'utilisateur scanne le code barre du préparateur et si ce n'est pas le cas ( il scanne un code de livreur ou un article un message "veuillez scanner le code du préparateur" apparait ) ensuite
l'utilisateur va scanner les article (Scan a l'envoi) après il scanne le code du vérificateur et celui du livreur, mais en cas d'oublie de ces champs(nom vérificateur et nom livreur) les message de notification des champs vides ne s'affichent que lorsque l'utilisateur va commencer le (scanne au retour).
dites moi si vous aurez besoin de plus d'explication.
Merci d'avance.
 

youky(BJ)

XLDnaute Barbatruc
Voici si j'ai bien pigé.
En plus je n'avais pas tout testé, c'est fait et fonctionne comme j'ai compris
Par contre à la fin en retours je ne demande pas le vérificateur ni le livreur car je sais pas quand la commande est finit
et à quel moment le demander . . .
Peut être le fais-tu sur un bouton envoyer
Bruno
 

Fichiers joints

Hurricane.Tn

XLDnaute Nouveau
Bonjour Bruno, en faite le principe c'est que lors du scanne a l'envoi il doit y avoir 2 personnes 1 préparateur et 1 vérificateur (bien sûr différent) et un livreur.
Donc le préparateur il scanne son code (code avec @) ensuite il scanne les articles, et ce stade la pour obliger l'utilisateur a scanner le code du vérificateur et celui du livreur j'ai pas trouver le moyen que lors du scanne au retour, donc avant de scanner les articles au retour les cellules nom du vérificateur et nom du livreur dans la partie préparation et livraison et la cellule nom du livreur et nom du vérificateur composition dans la partie retour et vérification doivent être remplis, après pour vérifier la présence du nom vérificateur consommation j'ai pas trouvé le moyen mais je pense comme vous avez dit un bouton validation c une bonne idée qui peut être créer pour les deux un bouton pour valider l'envoi et qui vérifiera la présence des champs obligatoires et donnera la main pour le scanne au retour et un autre bouton pour valider les autres champs et enregistrer le fichier.
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
j'ai fait comme demandé, explication en fichier.
Que fait l'onglet quand c'est finit, on imprime et hop on efface et on recommence (ou autre) c'est là que des boutons pourraient faire l'affaire.
Faire les essais sur ce fichier car si tu transfère la macro sur un fichier qui n'a pas les même données en même place ca va pas
Bruno
 

Fichiers joints

youky(BJ)

XLDnaute Barbatruc
Hello
A ceux que ca intéresse . . .
voici un énième fichier avec macro différente du précédent.
La protection de la feuille et le plus des boutons aide beaucoup.
La cellule en jaune est celle ou l'on peut scanner.
Tout est sous protection sans MP
Bruno
 

Fichiers joints

Hurricane.Tn

XLDnaute Nouveau
Bonjour Bruno, j'ai reçu 2 nouveaux produits avec 2 code barre différents et qui ne contiennent pas "/", pour les différencier seulement a travers le nombre de caractère dans le code barre donc je me suis basé sur les anciens codes que vous avez mis et j'ai essayer d'écrire ce code pour résoudre le souci, pouvez vous me dire si il est correct, merci.
j'ai essayer de changer ce code:
If Target.Value Like "*/*" = False Then
MsgBox "Code Barre Incorrect", vbExclamation, "ANNULATION"

par celui la:
If Target.Value Like "*/*" = False Then
lng = Len(Target): gtin = Mid(Target, 3, 14)
ref1 = Application.VLookup(gtin, Sheets(2).Range("'BD Articles'!A:C"), 2, False)
If lng < 29 Then lot1 = Mid(Target, 19, lng) Else lot1 = Mid(Target, 27, lng)
lig = Application.Match(ref1, [A:A], 0)
If Not IsNumeric(lig) Then MsgBox "inexistant": Exit Sub
Application.EnableEvents = False
Range(lda) = Date: Beep
Cells(lig, 7) = lot1: Cells(lig, col) = Cells(lig, col) + 1: Target = ""
Target.Select
Application.EnableEvents = True
Exit Sub
End If

en précisant que pour effectuer la recherche des référence produits j'ai créer une feuille dans le fichier (BD Articles) qui contient les Gtin produit et leurs référence.
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
C'est bien, j'ai plus de boulot . . .
Petit plus à apporter
ref1 = Application.VLookup(gtin, Sheets(2).Range("'BD Articles'!A:C"), 2, False)
Sheets(2) est à éviter d'ailleurs il fait doublon avec Range( "BD Articles'!....
(2) est un index, si on déplace l'onglet c'est tout faux . Moi je fais
Application.VLookup(gtin,Feuil1.[A:C], 2,False) 'Feuil1 est le Codename qui ne peut être changé que par VBA
C'est à gauche de BD Articles en fenêtre des projets.
<29 c'est maxi 28 souvent on se fait avoir
Sinon je pense que c'est bon.
Et bravo
Bruno
 

youky(BJ)

XLDnaute Barbatruc
Pour avancer le code de la douchette indique quoi comme chiffre pour 7543540
Dans la macro j'ai vu que tu avais mis seulement dans le code 'Retour' de toute façon le Mid est à revoir.
Donc que dit le code de la douchette pour trouver 7543540 . . . . .!
Bruno
 

Hurricane.Tn

XLDnaute Nouveau
le code de la douchette dit
010072190285799710H5266878
dont le chiffre 00721902857997 est le gtin que j'utilise dans Application.VLookup pour trouver la réf 7543540
 

Discussions similaires


Haut Bas