Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Validation par Bouton Ok ou touche Entrée

9 réponses
Avatar
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

9 réponses

Avatar
Michel Gaboly
Bonjour Alain,

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




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


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Alain
Merci beaucoup Michel, cela fonctionne parfaitement, mais, j'ai un petit
soucis, après validation, le focus ne revient pas dans le textbox.
Même avec SetFocus.
Alain

"Michel Gaboly" a écrit dans le message de
news:
Bonjour Alain,

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




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


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Michel Gaboly
Re,

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.



Merci beaucoup Michel, cela fonctionne parfaitement, mais, j'ai un petit
soucis, après validation, le focus ne revient pas dans le textbox.
Même avec SetFocus.
Alain

"Michel Gaboly" a écrit dans le message de
news:
Bonjour Alain,

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




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


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com



Avatar
Alain
Merci beaucoup Michel pour toutes ces explications.
Très claires.
Alain

"Michel Gaboly" a écrit dans le message de
news:
Re,

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.



Merci beaucoup Michel, cela fonctionne parfaitement, mais, j'ai un petit
soucis, après validation, le focus ne revient pas dans le textbox.
Même avec SetFocus.
Alain

"Michel Gaboly" a écrit dans le message de
news:
Bonjour Alain,

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




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


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com







Avatar
Denis Michon
Bonjour Alain,

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" a écrit dans le message de news:OOj$
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
Avatar
Michel Gaboly
C'était avec plaisir ;-))


Merci beaucoup Michel pour toutes ces explications.
Très claires.
Alain

"Michel Gaboly" a écrit dans le message de
news:
Re,

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.



Merci beaucoup Michel, cela fonctionne parfaitement, mais, j'ai un petit
soucis, après validation, le focus ne revient pas dans le textbox.
Même avec SetFocus.
Alain

"Michel Gaboly" a écrit dans le message de
news:
Bonjour Alain,

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




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


--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com





--
Cordialement,

Michel Gaboly
http://www.gaboly.com





Avatar
Philippe.R
Il semblerait que ce soit communicatif et tant mieux, cela me fait plaisir !
;o))))))))))))))))))))))))
--
Amicales Salutations

"Michel Gaboly" a écrit dans le message de
news:
C'était avec plaisir ;-))


Merci beaucoup Michel pour toutes ces explications.
Très claires.
Alain





Avatar
Alain
Merci beaucoup à tous
Alain

"Denis Michon" <denis a écrit dans le message de
news:7FtRc.8059$
Bonjour Alain,

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" a écrit dans le message de
news:OOj$

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





Avatar
Michel Gaboly
;-)))


Il semblerait que ce soit communicatif et tant mieux, cela me fait plaisir !
;o))))))))))))))))))))))))
--
Amicales Salutations

"Michel Gaboly" a écrit dans le message de
news:
C'était avec plaisir ;-))


Merci beaucoup Michel pour toutes ces explications.
Très claires.
Alain





--
Cordialement,

Michel Gaboly
http://www.gaboly.com