Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

setfocus sur textbox et douchette

rom1z

XLDnaute Nouveau
Bonjour je butte sur le focus qui n'est pas conservé sur ma textbox après scan douchette (et retour chariot).
j'ai un bouton Scan qui fonctionne bien avec Me.TextBoxsaisie.Text = "" et Me.TextBoxsaisie.SetFocus mais qui impose de cliquer à chaque saisie dessus.
j'aimerai me passer de ce bouton mais quand je mets les deux mêmes commandes dans le "textbox change" ça ne fonctionne plus (plus d'ajout dans listbox) et le focus reviens sur mon boutton.
merci de m'éclairer de vos lumières...


VB:
Private Sub TextBoxsaisie_Change()
Worksheets("INVENTAIRE").Activate
      
      If TextBoxsaisie <> "" Then
        For ligne = 4 To 500
            If Cells(ligne, 10) Like TextBoxsaisie Then
                
                ListBox2.AddItem Cells(ligne, 1)
                Me.TextBoxsaisie.Text = ""
                Me.TextBoxsaisie.SetFocus
            End If
        Next
    End If
    
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Rom, bonjour le forum,

L'événement Change ne déclenche pas la sortie de la textBox. Donc ta ligne SetFocus ne sert pas.
Peut-être devrais-tu sortir et là, re rentrer avec le
SetFocus.
 

rom1z

XLDnaute Nouveau
Bonjour Robert, suis-je alors dans le bon sub ou faut-il que je code dans AfterUpdate pour utiliser mon retour chariot de la douchette, j'ai testé mais sans resultat
le listbox.additem ne me fait pas sortir de la textbox ?
je suis un peu perdu
j'ai vu également qu'on pouvait utiliser le cancel dans un sub exit, je continue à creuser en attendant...
 

dysorthographie

XLDnaute Accro
bonjour,
je ne comprend rien au code initial!

le scanner simule les entrées au clavier et envoie un retour chariot en fin de reception!

donc nous devons gérer l'événement KeyPress

VB:
Dim Scan As Boolean
Private Sub TextBoxsaisie_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = Scan
Scan = False
End Sub
Private Sub TextBoxsaisie_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If KeyAscii = 13 Then
        Scan = True
        With Worksheets("INVENTAIRE")
            If TextBoxsaisie <> "" Then 'si tu veux
                For ligne = 4 To 500
                    If .Cells(ligne, 10) Like TextBoxsaisie Then
                        ListBox2.AddItem .Cells(ligne, 1)
                        Me.TextBoxsaisie.Text = ""
                    End If
                Next
            End If
        End With
End If
End Sub
 

rom1z

XLDnaute Nouveau
Bonjour, dysor, ce code me générai d'autres erreurs, j'ai trouvé plus simple finalement en affichant un userform dédié à la saisie qui après avoir écrit dans la listbox se ferme et se rouvre à nouveau avec le champ de saisie en première position dans l'ordre de tabulation.
merci.
 

Discussions similaires

Réponses
2
Affichages
329
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…