GNT sans publicité, site mobile, fonctionnalitées exclusives...

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

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel Gaboly
Le #1757085
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

Alain
Le #1757084
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" 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





Michel Gaboly
Le #1757079
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" 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



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

"Michel Gaboly" 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" 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







Denis Michon
Le #1757077
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" 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
Publicité
Suivre les réponses
Poster une réponse
Anonyme