Sortir d'une textbox malgré un exit cancel = true

rom1z

XLDnaute Nouveau
Hello, j'ai une textbox qui me sert de saisie de code barre via une douchette.
afin de faire une saisie de plusieurs codes à la suite j'ai utilisé le sub exit avec un cancel = true
tout fonctionne sauf que je ne peux plus sortir ni cliquer ailleurs sur mon userform après avoir fait mes saisies de codes barres !
avez-vous une idée ?
merci d'avance !

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

code du sub exit:
Code:
Private Sub TextBoxsaisie_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = True
End Sub
 

job75

XLDnaute Barbatruc
Bonsoir rom1z, dysor,

Utiliser la variable mémorisée (en haut du code) flag :
VB:
Dim flag As Boolean 'mémorise la variable

Private Sub TextBoxsaisie_AfterUpdate()
flag = True 'bloque
Worksheets("INVENTAIRE").Activate
     
         If TextBoxsaisie <> "" Then
        For ligne = 4 To 500
            If Cells(ligne, 10) Like TextBoxsaisie Then
             
                ListBox2.AddItem Cells(ligne, 1)
             
            End If
        Next
    End If

    Me.TextBoxsaisie.Text = ""
flag = False 'débloque
End Sub

Private Sub TextBoxsaisie_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Cancel = flag
End Sub
A+
 

rom1z

XLDnaute Nouveau
job75, en fait le flag ne change rien, c'est le retour chariot du scan qui clique sur le boutton selectionné automatiquement et qui a pour commande de setfocus sur la textbox.
j'ai testé de mettre un setfocus dans le sub exit mais le comportement est le même.
 

job75

XLDnaute Barbatruc
Sans fichier je n'ai pas vraiment cherché à comprendre votre code.

A la réflexion la macro TextBoxsaisie_AfterUpdate() semble inutile.

Autant mettre tout le code dans la TextBoxsaisie_Exit.

On conservera Cancel = flag

Mais flag sera déclarée Public dans un Module standard.

Et définie True/False par une macro Worksheet_BeforeDoubleClick dans la feuille de calcul.

Ou par un bouton bascule.
 
Haut Bas