Incrémenter par scannage

BENAM69

XLDnaute Occasionnel
Bonjour le Forum

J'ai pu trouver une petite partie des réponses sur ce forum et autres mais je sèche un peu pour corréler ces posts à mon problème.

Cela doit être assez complexe mais si ce n'est pas possible je vais essayer de trouver une autre solution.

1) Explication :

Sur mon fichier, à l'ouverture l'Userform1 s'ouvre. De là, je choisi sortie ou entrée.

Si je choisi sortie l'userform2 s'ouvre.
Sur cette userform2, il y a Textbox1 (zone où je scanne mon code barre pour faire apparaître la référence), Textbox2 (zone ou j'incrémente le nombre de fois que je scanne le code barre (qui se réfère à une référence)

J'aimerai qu'à chaque scannage du code barre, le texbox2 s'incrémente de 1. Si c'est le même code barre qui est scanné à la suite, il m'indique 2, si je scanne à nouveau avec le même code barre une troisième fois il me met 3 et ainsi de suite tant que ce n'est pas un autre code barre.
Si ce n'est pas le même code barre, qui est scanné, il me met 1 (car j'ai scanné un autre code barre) et si je scanne avec ce nouveau et même code barre il me met 2 etc...
En gros il incrémente de 1 à chaque fois et se réinitialise si c'est un autre code barre.

Puis à chaque scannage du code barre, il vient me soustraire le stock Actuel de 1 (Colonne G de l'onglet liste de stock) suivant la référence qui est scanné.

Est-ce que cela est possible sur VBA ?

2) Sinon, sur mon userform 3, je n'arrive pas à libérer mon textbox "Quantité_Entrée" quand mon textbox "ScanEntrée" est différent de vide. Avez-vous une idée pour le libérer quand je décide de saisir un truc dans le textbox "ScanEntrée". J'ai mis par défaut que le Textbox "Quantité_Entrée" est grisé et bloqué si rien n'est saisit sur le textbox "ScanEntrée".

Je ne sais pas si j'ai été assez clair mais je l'espère

Je vous remercie par avance de votre aide à tous.

Je vous mets en PJ mon fichier.

Benam
 

Pièces jointes

  • Consommables.xlsm
    22.2 KB · Affichages: 20

sousou

XLDnaute Barbatruc
Bonjour
Regarde ceci pour la première partie
Et ajoute ceci pour la seconde
Private Sub ScanEntrée_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Me.Quantité_Entrée.Enabled = True

Me.Quantité_Entrée.BackColor = RGB(255, 255, 255)
End Sub
 

Pièces jointes

  • Copie de Consommables.xlsm
    24.2 KB · Affichages: 15
Dernière édition:

BENAM69

XLDnaute Occasionnel
Salut sousou

J'ai testé manuellement cela fonctionne et avec une duchette cela fonctionne aussi mais pas comme je le voudrais.
Ton code marche très bien mais il risque de manquer une chose
1) remarque :
Je ne peux scanner à la suite, quand je scanne il me rajouter à suite du textbox1 la référence quand je scanne une deuxième fois. Donc si ma ref est 100-10, quand je scanne une deuxieme fois, il me met 100-10100-10
2) Remarque :
Quand je ne saisie rien et ferme juste l'userform2, il va chercher la dernière cellule vide du tableau et mettre une valeur -1 en G comme si la valeur vide du textbox1 est une valeur du tableau.
Il est possible de dire si je ne saisie rien il ne fait rien ?

J'ai ajouté ceci à ton code
Code:
ref.Offset(0, 4) = ref.Offset(0, 4) - 1
lig = .[A65000].End(3).Row + 1
Sheets("Historique de conso").Cells(lig, 1) = ref.Offset(0, -2)
Sheets("Historique de conso").Cells(lig, 2) = ref.Offset(0, -1)
Sheets("Historique de conso").Cells(lig, 3) = Me.TextBox1.Value
Sheets("Historique de conso").Cells(lig, 4) = Date
Sheets("Historique de conso").Cells(lig, 5) = 1

If ref.Offset(0, 4) < ref.Offset(0, 2) Then
MsgBox "Stock " & ref & " épuisé!"

End If

Vous savez comment faire pour qu'il me liste au fur et à mesure que je bipe une sortie ? Il me fait bien mon copié collé sur l'onglet Historique de conso, mais sur une ligne, il ne fait aucune liste et démarre pas le listing en A2, sachant que c'est vide.

Merci pour ton aide sousou

Benam
 

Pièces jointes

  • Copie de Consommables.xlsm
    31.2 KB · Affichages: 6
Dernière édition:

sousou

XLDnaute Barbatruc
Bonjour
Voici quelques modifs
A savoir, que dans ton principe, chaque scan fera l'objet d'une ligne d'histogramme (quantité 1)

il serait peut_être préférable que lorsqu'il il y a plusieurs scan de la même ref une seule ligne soit ajoutée à l'histogramme avec la bonne quantité?
A voir
 

Pièces jointes

  • Copie de Consommables.xlsm
    28.7 KB · Affichages: 5

BENAM69

XLDnaute Occasionnel
Bonjour
Voici quelques modifs
A savoir, que dans ton principe, chaque scan fera l'objet d'une ligne d'histogramme (quantité 1)

il serait peut_être préférable que lorsqu'il il y a plusieurs scan de la même ref une seule ligne soit ajoutée à l'histogramme avec la bonne quantité?
A voir

Salut Sousou,

1) Réponse
il serait peut_être préférable que lorsqu'il il y a plusieurs scan de la même ref une seule ligne soit ajoutée à l'histogramme avec la bonne quantité?
Tu as raison, ce serait beaucoup mieux, si c'est possible de le faire pourquoi pas ^^.

2) Remarque :
De mon post à ta réponse j'ai trouvé une solution avec l'ajout d'un code de saisie du texte de textbox1. Cela me permet de résoudre mes 2 problèmes cités dans mon précédent message.

Sur le code j'ai laissé comme tel ta macro et j'ai ajouté ce code
VB:
With TextBox1
    .SelStart = 0
    .SelLength = Len(.Text)
    .SetFocus
End With

1) Inconvénient sur nos 2 codes, c'est que je dois bipper 2 fois après le premier scan pour faire une sortie de stock.
Exemple expliqué :
Je scanne le code barre, la référence apparaît et le compteur me compte 1 car c'est le premier scannage.
Je scanne à nouveau le même code barre donc même référence, il ne saisit rien sur le textbox, le compteur reste à 1, puis je scanne à nouveau, le textbox me remet la référence et le compteur monte à 2. Après le 1er scan, je dois scanner 2 fois pour qu'il me prenne en compte.
Sinon, j'ai une solution c'est scanner une première fois avec ton précédent code et j'appuie sur la touche de clavier entrée. Cela fonctionne aussi bien.

2) J'ai fait un test, avec cette modification de code, le compteur ne se remet pas à 0 quand on scanne une autre référence, il continue d'incrémenter.

Si je garde ta première version (1er fichier), je scanne une fois le code barre et j'appuie entrée sur mon clavier pour incrémenter. et le compteur se remet à 0 si c'est une autre référence. Mais j'ai la prise en compte du text vide = une valeur.

Si je choisi ton nouveau code, je dois scanner 2 fois après le premier scanne et le compteur ne se remet pas à 0 si c'est une autre référence et je n'ai plus le problème du textbox vide = valeur.

Si cela devient trop complexe, tu peux refuser de le faire il n'y a aucun souci, j'essayerai de trouver. En tout cas, ton début marche ^^

Voilà Merci encore pour ton aide ^^
J'ai juste enlever les msgbox pour les alertes de stock, pour cela j'ai mis en condition rouge si stock inférieur à stock mini.

Voici mon fichier au cas ou.

Benam
 

Pièces jointes

  • Copie de Consommables.xlsm
    37.3 KB · Affichages: 5

BENAM69

XLDnaute Occasionnel
Salut Sousou

VB:
With TextBox1
    .SelStart = 0
    .SelLength = Len(.Text)
    .SetFocus
End With

If Me.TextBox2 = "" Then
code = Me.TextBox1.Value
End If

If Me.TextBox1 <> "" Then
If Me.TextBox1 <> Me.Label2.Caption Then
compte = 0
code = Me.TextBox1
End If
End If

If Me.TextBox1 <> "" Then
Me.Label2.Caption = Me.TextBox1.Text
Else
End If

compte = compte + 1
Me.TextBox2.Value = compte
With Sheets("Liste de stock")
Set ref = .Columns(3).Find(code)
If ref Is Nothing Then
MsgBox "Code Invalide"
Else


Avec ce code cela fonctionne, j'ai ajouté un label pour faire office de valeur mémoire.

Reste plus qu'à trouver comment supprimer le double scannage pour un le même code barre après le premier scannage pour incrémenter.
A+

Benam
 

Pièces jointes

  • Copie de Consommables.xlsm
    38.4 KB · Affichages: 34

Discussions similaires

  • Résolu(e)
Microsoft 365 Code 128
Réponses
2
Affichages
417
Réponses
2
Affichages
474

Statistiques des forums

Discussions
314 628
Messages
2 111 343
Membres
111 108
dernier inscrit
Elias30