Problème événement change textbox et scan usb

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zephir94

XLDnaute Impliqué
Bonjour à toutes et à tous,

Je voudrais créer dans un userform la possibilité de scanner des code barres les uns après les autres sans devoir les valider les uns après les autres.
Pour cela je rentre le code scanné en flashant avec la scanette dans une textbox et je copie au fur et à mesure dans une listebox en redonnant le focus à la textbox.
Voici mon code :
VB:
Private Sub TextBox1_Change()
Dim iPos As Integer
If TextBox1.Value = "" Then
TextBox1.SetFocus
    Else
    i = Format(i, "#############")
    i = TextBox1.Value
    Call Beep(1000, 100)
    ListBox1.AddItem i
  ' verif
     iPos = 0
     If ListBox1.ListCount < 1 Then Exit Sub
     Do While iPos < ListBox1.ListCount
     ListBox1.Text = ListBox1.List(iPos)
     If ListBox1.ListIndex <> iPos Then
     ListBox1.RemoveItem iPos
     Call Beep(500, 800)
     MsgBox "Vous avez déjà scanner le code" & " " & i & " " & "!", vbCritical, "Message du système"
     Else
     iPos = iPos + 1
     End If
     Loop
    End If
End Sub

Mon soucis est que l’événement change de la textbox ne prend pas le code en entier mais se comporte comme une boucle et j’obtiens ceci !
tab.jpg

Voici un fichier test, je pense que le problème doit venir peut-être du traitement de la chaîne de caractères au moment de la saisie dans la textbox, sachant qu'il peut y avoir que 13 chiffres maximum.
je vous remercie par avance pour vos aides
Bonne journée à tous

Zephir
 

Pièces jointes

Bonjour zephir94

peut-être en vérifiant dans Private Sub TextBox1_Change() que le texte saisi fait 13 caractères:

VB:
If TextBox1.Value = "" Then
   TextBox1.SetFocus
Else
   If Len(TextBox1) = 13 Then
        .....
        .......
   End If
End If

A+
 
Bonjour.
Si le texte peut être plus court, qu'est ce qui, en provenance du scanner, pourrait indiquer que la saisie est terminée ?
Envoie-t-elle des codes de contrôle ?
Testez les possibilités des autres évènements de l'objet TextBox, KeyPress, et KeyDown, ainsi qu'un bouton avec propriété Default à True au cas où elle aurait la bonne idée de renvoyer un vbCr
 
re et bonjour Dranreb

Il y a quelques temps, je suis intervenu, dans une discussion sur un scan dans une feuille, et il me semble que le scan déclenchait l'évènement Worksheet_Change.

On devrait donc pouvoir utiliser l'évènement TextBox1_AfterUpdate

Pour tester, supprimer le code de Private Sub TextBox1_Change() et dans Private Sub TextBox1_AfterUpdate() mettre ce code:
msgbox TextBox1


Si au scan la msgbox affiche le code barre entier , c'est cet évènement qu'il faudra utiliser.

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
281
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
163
Réponses
10
Affichages
799
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
481
Réponses
4
Affichages
505
Réponses
3
Affichages
665
Retour