Validation par Bouton Ok ou touche Entrée
Le
Alain
Bonjour
Dans mon userform, j'ai un textbox qui me donne un résultat.
Je valide ce résultat par une touche OK.
Je souhaite pouvoir valider ce résultat par la touche entrée.
Mais lorsque je veux valider par la touche Entrée, je suis obligé de taper 2
fois sur la touche Entrée, alors qu'avec mon bouton OK, je n'ai besoin de
taper qu'une fois.
Comment faire afin de taper une seul fois sur la touche Entrée.
Merci beaucoup.
Alain
Dans mon userform, j'ai un textbox qui me donne un résultat.
Je valide ce résultat par une touche OK.
Je souhaite pouvoir valider ce résultat par la touche entrée.
Mais lorsque je veux valider par la touche Entrée, je suis obligé de taper 2
fois sur la touche Entrée, alors qu'avec mon bouton OK, je n'ai besoin de
taper qu'une fois.
Comment faire afin de taper une seul fois sur la touche Entrée.
Merci beaucoup.
Alain

Poser une question


Si ton UserForm ne comporte que le TextBox et un bouton OK, le premier
clic sur la touche entrée après avoir renseigné le TextBox donne le focus
au bouton OK, et un second clic sur la touche Entrée est alors nécessaire.
Une procédure utilisant OnKey pourrait résoudre le problème, mais il
faut gérer le fait que la touche Retour, la Touche entrée et la touche
Entrée du pavé numérique sont 3 touches différentes.
Je te propose une variante simple qui permet de valider en appuyant
une seule fois sur la touche Entrée, ou sur la touche Tabulation :
Par hypothèse, le TextBox s'appelle "TextBox1", et le bouton OK, "BOK".
Private Sub BOK_Enter()
If TextBox1 <> "" Then
BOK_Click
End If
End Sub
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
soucis, après validation, le focus ne revient pas dans le textbox.
Même avec SetFocus.
Alain
"Michel Gaboly" news:
De rien ;-))
Mais pourquoi le focus devrai-il revenir sur le TextBox ? Je pensais que
le bouton OK après un traitement quelconque se terminait par un Unload du
UserForm.
S'il s'agit de renseigner plusieurs infos de même nature à la suite, je sup-
pose qu'il faut également effacer le contenu du TextBox pour saisir l'info
suivante.
Voici une variante (DSaisie est le nom du UserForm) :
Dans un module standard :
Option Explicit
Public Suite As Boolean
Sub Saisie()
Suite = True
Do While Suite
DSaisie.Show
Loop
End Sub
Dans le module de DSaisie (BAnnuler est le nom du bouton Annuler)
Option Explicit
Private Sub BAnnuler_Click()
Suite = False
Unload Me
End Sub
Private Sub BOK_Click()
ReportDonnees
Unload Me
End Sub
Private Sub BOK_Enter()
If TextBox1 <> "" Then
BOK_Click
End If
End Sub
Private Sub ReportDonnees()
' Ici, ton traitement.
End Sub
Bien évuidemment, l'ensemble suppose que TextBox1 a pour Valeur
une chaine vide ("") lorsque DSaisie s'affiche.
--
Cordialement,
Michel Gaboly
http://www.gaboly.com
Très claires.
Alain
"Michel Gaboly" news:
Si tu veux utiliser un textbox à répétition pour saisir dans un tableau d'une feuille excel, des données... suite à l'appui
de la touche "Enter", Tout en conservant le focus sur le même textbox ... voici un exemple de code :
'---------------------------
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Static R As Long
If KeyCode = 13 Then
R = R + 1
Range("A" & R) = Replace(Me.TextBox1, vbCrLf, "")
Me.TextBox1 = ""
End If
End Sub
'---------------------------
Private Sub UserForm_Initialize()
'Ces propriétés peuvent être défini en mode création
'si c'est ce que tu préfères
Me.TextBox1.EnterKeyBehavior = True
Me.TextBox1.MultiLine = True
End Sub
'---------------------------
Salutations!
"Alain" Bonjour
Dans mon userform, j'ai un textbox qui me donne un résultat.
Je valide ce résultat par une touche OK.
Je souhaite pouvoir valider ce résultat par la touche entrée.
Mais lorsque je veux valider par la touche Entrée, je suis obligé de taper 2
fois sur la touche Entrée, alors qu'avec mon bouton OK, je n'ai besoin de
taper qu'une fois.
Comment faire afin de taper une seul fois sur la touche Entrée.
Merci beaucoup.
Alain