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

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

  • testscan.xls
    55 KB · Affichages: 36

Paf

XLDnaute Barbatruc
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+
 

Dranreb

XLDnaute Barbatruc
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
 

Paf

XLDnaute Barbatruc
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:

Discussions similaires

Réponses
4
Affichages
165