J'ai crée (avec l'aide du forum) une petite application qui me permet
de réaliser à peu près ce que je souhaite :
- J'ai une liste de numéros dans la colonne A.
- J'appelle un Userform avec une TextBox et deux boutons (OK et
Annuler). Le focus est sur la textbox. J'y saisis un nombre. Je clique
sur OK et je me retrouve dans la colonne B à côté du nombre saisi. Le
Userform a disparu, je saisis mes informations et je rappelle le
Userform pour saisir un nouveau nombre...
- J'ai géré la sortie par la croix ou le bouton "Annuler".
- J'ai également géré le fait que le nombre saisi ne soit pas dans la
liste.
- J'ai commencé à améliorer mon système en appelant le Userform avec
la touche F1 :
Private Sub Workbook_Activate()
Application.OnKey "{F1}", "Saisie"
End Sub
Jusque-là tout fonctionne parfaitement. Je souhaite maintenant
améliorer le système car, dans les conditions d'utilisation, il serait
préférable de ne pas avoir à utiliser la souris. J'aimerais donc
affecter une autre touche (par exemple F2 et F3)aux boutons OK et Annuler.
Cela ne me semble pas aussi simple car j'ai fait de nombreux essais
sans trouver la solution. Cela ne semble pas être un problème de
désactivation de la touche + affectation d'une macro, mais plutôt un
problème de Macro.
Faut-il "enlever le focus" de la TextBox ? Si oui, comment ?
Quelqu'un peut-il me donner une idée ou une piste ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Pierre Fauconnier
Bonjour
Deux solutions
1. Affecter les propriétés DEFAULT et CANCEL des boutons. Mettre la propriété DEFAULT de OK à TRUE et la propriété CANCEL de ANNULER à TRUE.
Ainsi, une pression sur ENTER équivaudra à OK et une pression sur CANCEL équivaudra à ANNULER (Respect de l'ergonomie Windows...).
Si tu veux absolument utiliser F2 et F3, fais-le avec le code suivant (à adapter aux noms de tes boutons)
Private Sub cmdAnnuler_Click() MsgBox "Pression du bouton ANNULER" End Sub
Private Sub cmdOk_Click() MsgBox "Pression du bouton OK" End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case vbKeyF2 cmdOk_Click Case vbKeyF3 cmdAnnuler_Click End Select End Sub
Attention à "Application.onkey "F1"... En utilisant F1 pour ouvrir ton userform, tu prives les utilisateurs de l'aide Excel...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"JacquesH" a écrit dans le message de news:
Bonjour à toutes et tous,
J'ai crée (avec l'aide du forum) une petite application qui me permet de réaliser à peu près ce que je souhaite :
- J'ai une liste de numéros dans la colonne A. - J'appelle un Userform avec une TextBox et deux boutons (OK et Annuler). Le focus est sur la textbox. J'y saisis un nombre. Je clique sur OK et je me retrouve dans la colonne B à côté du nombre saisi. Le Userform a disparu, je saisis mes informations et je rappelle le Userform pour saisir un nouveau nombre... - J'ai géré la sortie par la croix ou le bouton "Annuler". - J'ai également géré le fait que le nombre saisi ne soit pas dans la liste. - J'ai commencé à améliorer mon système en appelant le Userform avec la touche F1 :
Private Sub Workbook_Activate() Application.OnKey "{F1}", "Saisie" End Sub
Jusque-là tout fonctionne parfaitement. Je souhaite maintenant améliorer le système car, dans les conditions d'utilisation, il serait préférable de ne pas avoir à utiliser la souris. J'aimerais donc affecter une autre touche (par exemple F2 et F3)aux boutons OK et Annuler.
Cela ne me semble pas aussi simple car j'ai fait de nombreux essais sans trouver la solution. Cela ne semble pas être un problème de désactivation de la touche + affectation d'une macro, mais plutôt un problème de Macro. Faut-il "enlever le focus" de la TextBox ? Si oui, comment ?
Quelqu'un peut-il me donner une idée ou une piste ?
Cordialement
Jacques
Bonjour
Deux solutions
1. Affecter les propriétés DEFAULT et CANCEL des boutons. Mettre la
propriété DEFAULT de OK à TRUE et la propriété CANCEL de ANNULER à TRUE.
Ainsi, une pression sur ENTER équivaudra à OK et une pression sur CANCEL
équivaudra à ANNULER (Respect de l'ergonomie Windows...).
Si tu veux absolument utiliser F2 et F3, fais-le avec le code suivant (à
adapter aux noms de tes boutons)
Private Sub cmdAnnuler_Click()
MsgBox "Pression du bouton ANNULER"
End Sub
Private Sub cmdOk_Click()
MsgBox "Pression du bouton OK"
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
Select Case KeyCode
Case vbKeyF2
cmdOk_Click
Case vbKeyF3
cmdAnnuler_Click
End Select
End Sub
Attention à "Application.onkey "F1"... En utilisant F1 pour ouvrir ton
userform, tu prives les utilisateurs de l'aide Excel...
Ok?
--
Pierre Fauconnier (pierre.fauconnier@nospam.nospam)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"JacquesH" <anonymous@discussions.microsoft.com> a écrit dans le message de
news: uWnxFzPwGHA.4416@TK2MSFTNGP03.phx.gbl...
Bonjour à toutes et tous,
J'ai crée (avec l'aide du forum) une petite application qui me permet de
réaliser à peu près ce que je souhaite :
- J'ai une liste de numéros dans la colonne A.
- J'appelle un Userform avec une TextBox et deux boutons (OK et
Annuler). Le focus est sur la textbox. J'y saisis un nombre. Je clique
sur OK et je me retrouve dans la colonne B à côté du nombre saisi. Le
Userform a disparu, je saisis mes informations et je rappelle le
Userform pour saisir un nouveau nombre...
- J'ai géré la sortie par la croix ou le bouton "Annuler".
- J'ai également géré le fait que le nombre saisi ne soit pas dans la
liste.
- J'ai commencé à améliorer mon système en appelant le Userform avec
la touche F1 :
Private Sub Workbook_Activate()
Application.OnKey "{F1}", "Saisie"
End Sub
Jusque-là tout fonctionne parfaitement. Je souhaite maintenant
améliorer le système car, dans les conditions d'utilisation, il serait
préférable de ne pas avoir à utiliser la souris. J'aimerais donc affecter
une autre touche (par exemple F2 et F3)aux boutons OK et Annuler.
Cela ne me semble pas aussi simple car j'ai fait de nombreux essais sans
trouver la solution. Cela ne semble pas être un problème de désactivation
de la touche + affectation d'une macro, mais plutôt un problème de Macro.
Faut-il "enlever le focus" de la TextBox ? Si oui, comment ?
Quelqu'un peut-il me donner une idée ou une piste ?
1. Affecter les propriétés DEFAULT et CANCEL des boutons. Mettre la propriété DEFAULT de OK à TRUE et la propriété CANCEL de ANNULER à TRUE.
Ainsi, une pression sur ENTER équivaudra à OK et une pression sur CANCEL équivaudra à ANNULER (Respect de l'ergonomie Windows...).
Si tu veux absolument utiliser F2 et F3, fais-le avec le code suivant (à adapter aux noms de tes boutons)
Private Sub cmdAnnuler_Click() MsgBox "Pression du bouton ANNULER" End Sub
Private Sub cmdOk_Click() MsgBox "Pression du bouton OK" End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case vbKeyF2 cmdOk_Click Case vbKeyF3 cmdAnnuler_Click End Select End Sub
Attention à "Application.onkey "F1"... En utilisant F1 pour ouvrir ton userform, tu prives les utilisateurs de l'aide Excel...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"JacquesH" a écrit dans le message de news:
Bonjour à toutes et tous,
J'ai crée (avec l'aide du forum) une petite application qui me permet de réaliser à peu près ce que je souhaite :
- J'ai une liste de numéros dans la colonne A. - J'appelle un Userform avec une TextBox et deux boutons (OK et Annuler). Le focus est sur la textbox. J'y saisis un nombre. Je clique sur OK et je me retrouve dans la colonne B à côté du nombre saisi. Le Userform a disparu, je saisis mes informations et je rappelle le Userform pour saisir un nouveau nombre... - J'ai géré la sortie par la croix ou le bouton "Annuler". - J'ai également géré le fait que le nombre saisi ne soit pas dans la liste. - J'ai commencé à améliorer mon système en appelant le Userform avec la touche F1 :
Private Sub Workbook_Activate() Application.OnKey "{F1}", "Saisie" End Sub
Jusque-là tout fonctionne parfaitement. Je souhaite maintenant améliorer le système car, dans les conditions d'utilisation, il serait préférable de ne pas avoir à utiliser la souris. J'aimerais donc affecter une autre touche (par exemple F2 et F3)aux boutons OK et Annuler.
Cela ne me semble pas aussi simple car j'ai fait de nombreux essais sans trouver la solution. Cela ne semble pas être un problème de désactivation de la touche + affectation d'une macro, mais plutôt un problème de Macro. Faut-il "enlever le focus" de la TextBox ? Si oui, comment ?
Quelqu'un peut-il me donner une idée ou une piste ?
Cordialement
Jacques
JacquesH
Bonjour et merci pour ta réponse,
Je me suis intéressé à ta première solution qui me paraît effectivement plus conforme à la logique.
En mettant la propriété DEFAULT de OK à True, tout va bien.
En revanche, je n'ai pas réussi avec la propriété CANCEL de ANNULER à TRUE. Il ne se passe rien avec la touche "CANCEL".
Jacques
Bonjour
Deux solutions
1. Affecter les propriétés DEFAULT et CANCEL des boutons. Mettre la propriété DEFAULT de OK à TRUE et la propriété CANCEL de ANNULER à TRUE.
Ainsi, une pression sur ENTER équivaudra à OK et une pression sur CANCEL équivaudra à ANNULER (Respect de l'ergonomie Windows...).
Si tu veux absolument utiliser F2 et F3, fais-le avec le code suivant (à adapter aux noms de tes boutons)
Private Sub cmdAnnuler_Click() MsgBox "Pression du bouton ANNULER" End Sub
Private Sub cmdOk_Click() MsgBox "Pression du bouton OK" End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case vbKeyF2 cmdOk_Click Case vbKeyF3 cmdAnnuler_Click End Select End Sub
Attention à "Application.onkey "F1"... En utilisant F1 pour ouvrir ton userform, tu prives les utilisateurs de l'aide Excel...
Ok?
Bonjour et merci pour ta réponse,
Je me suis intéressé à ta première solution qui me paraît effectivement
plus conforme à la logique.
En mettant la propriété DEFAULT de OK à True, tout va bien.
En revanche, je n'ai pas réussi avec la propriété CANCEL de ANNULER à
TRUE. Il ne se passe rien avec la touche "CANCEL".
Jacques
Bonjour
Deux solutions
1. Affecter les propriétés DEFAULT et CANCEL des boutons. Mettre la
propriété DEFAULT de OK à TRUE et la propriété CANCEL de ANNULER à TRUE.
Ainsi, une pression sur ENTER équivaudra à OK et une pression sur CANCEL
équivaudra à ANNULER (Respect de l'ergonomie Windows...).
Si tu veux absolument utiliser F2 et F3, fais-le avec le code suivant (à
adapter aux noms de tes boutons)
Private Sub cmdAnnuler_Click()
MsgBox "Pression du bouton ANNULER"
End Sub
Private Sub cmdOk_Click()
MsgBox "Pression du bouton OK"
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
Select Case KeyCode
Case vbKeyF2
cmdOk_Click
Case vbKeyF3
cmdAnnuler_Click
End Select
End Sub
Attention à "Application.onkey "F1"... En utilisant F1 pour ouvrir ton
userform, tu prives les utilisateurs de l'aide Excel...
Je me suis intéressé à ta première solution qui me paraît effectivement plus conforme à la logique.
En mettant la propriété DEFAULT de OK à True, tout va bien.
En revanche, je n'ai pas réussi avec la propriété CANCEL de ANNULER à TRUE. Il ne se passe rien avec la touche "CANCEL".
Jacques
Bonjour
Deux solutions
1. Affecter les propriétés DEFAULT et CANCEL des boutons. Mettre la propriété DEFAULT de OK à TRUE et la propriété CANCEL de ANNULER à TRUE.
Ainsi, une pression sur ENTER équivaudra à OK et une pression sur CANCEL équivaudra à ANNULER (Respect de l'ergonomie Windows...).
Si tu veux absolument utiliser F2 et F3, fais-le avec le code suivant (à adapter aux noms de tes boutons)
Private Sub cmdAnnuler_Click() MsgBox "Pression du bouton ANNULER" End Sub
Private Sub cmdOk_Click() MsgBox "Pression du bouton OK" End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case vbKeyF2 cmdOk_Click Case vbKeyF3 cmdAnnuler_Click End Select End Sub
Attention à "Application.onkey "F1"... En utilisant F1 pour ouvrir ton userform, tu prives les utilisateurs de l'aide Excel...
Ok?
Pierre Fauconnier
Il faut noter que la propriété CANCEL à TRUE correspond à l'évènement CLICK du bouton auquel tu affectes cette propriété. Il faut donc qu'il y ait un code associé à l'évènement CLICK du bouton concerné. En clair, cela veut dire que CANCEL = TRUE ne correspond pas au clic sur la croix de fermeture, mais à l'évènement CLICK du bouton. En pressant ESC ou ECHAP, on déclenche l'évènement CLICK du bouton qui a la propriété CANCEL = TRUE...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"JacquesH" a écrit dans le message de news:
Bonjour et merci pour ta réponse,
Je me suis intéressé à ta première solution qui me paraît effectivement plus conforme à la logique.
En mettant la propriété DEFAULT de OK à True, tout va bien.
En revanche, je n'ai pas réussi avec la propriété CANCEL de ANNULER à TRUE. Il ne se passe rien avec la touche "CANCEL".
Jacques
Bonjour
Deux solutions
1. Affecter les propriétés DEFAULT et CANCEL des boutons. Mettre la propriété DEFAULT de OK à TRUE et la propriété CANCEL de ANNULER à TRUE.
Ainsi, une pression sur ENTER équivaudra à OK et une pression sur CANCEL équivaudra à ANNULER (Respect de l'ergonomie Windows...).
Si tu veux absolument utiliser F2 et F3, fais-le avec le code suivant (à adapter aux noms de tes boutons)
Private Sub cmdAnnuler_Click() MsgBox "Pression du bouton ANNULER" End Sub
Private Sub cmdOk_Click() MsgBox "Pression du bouton OK" End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case vbKeyF2 cmdOk_Click Case vbKeyF3 cmdAnnuler_Click End Select End Sub
Attention à "Application.onkey "F1"... En utilisant F1 pour ouvrir ton userform, tu prives les utilisateurs de l'aide Excel...
Ok?
Il faut noter que la propriété CANCEL à TRUE correspond à l'évènement CLICK
du bouton auquel tu affectes cette propriété. Il faut donc qu'il y ait un
code associé à l'évènement CLICK du bouton concerné. En clair, cela veut
dire que CANCEL = TRUE ne correspond pas au clic sur la croix de fermeture,
mais à l'évènement CLICK du bouton. En pressant ESC ou ECHAP, on déclenche
l'évènement CLICK du bouton qui a la propriété CANCEL = TRUE...
Ok?
--
Pierre Fauconnier (pierre.fauconnier@nospam.nospam)
"Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe
zen )
Remplacez nospam.nospam par pfi.be pour répondre. Merci
"JacquesH" <anonymous@discussions.microsoft.com> a écrit dans le message de
news: O42RgUQwGHA.4872@TK2MSFTNGP02.phx.gbl...
Bonjour et merci pour ta réponse,
Je me suis intéressé à ta première solution qui me paraît effectivement
plus conforme à la logique.
En mettant la propriété DEFAULT de OK à True, tout va bien.
En revanche, je n'ai pas réussi avec la propriété CANCEL de ANNULER à
TRUE. Il ne se passe rien avec la touche "CANCEL".
Jacques
Bonjour
Deux solutions
1. Affecter les propriétés DEFAULT et CANCEL des boutons. Mettre la
propriété DEFAULT de OK à TRUE et la propriété CANCEL de ANNULER à TRUE.
Ainsi, une pression sur ENTER équivaudra à OK et une pression sur CANCEL
équivaudra à ANNULER (Respect de l'ergonomie Windows...).
Si tu veux absolument utiliser F2 et F3, fais-le avec le code suivant (à
adapter aux noms de tes boutons)
Private Sub cmdAnnuler_Click()
MsgBox "Pression du bouton ANNULER"
End Sub
Private Sub cmdOk_Click()
MsgBox "Pression du bouton OK"
End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
Select Case KeyCode
Case vbKeyF2
cmdOk_Click
Case vbKeyF3
cmdAnnuler_Click
End Select
End Sub
Attention à "Application.onkey "F1"... En utilisant F1 pour ouvrir ton
userform, tu prives les utilisateurs de l'aide Excel...
Il faut noter que la propriété CANCEL à TRUE correspond à l'évènement CLICK du bouton auquel tu affectes cette propriété. Il faut donc qu'il y ait un code associé à l'évènement CLICK du bouton concerné. En clair, cela veut dire que CANCEL = TRUE ne correspond pas au clic sur la croix de fermeture, mais à l'évènement CLICK du bouton. En pressant ESC ou ECHAP, on déclenche l'évènement CLICK du bouton qui a la propriété CANCEL = TRUE...
Ok?
-- Pierre Fauconnier () "Le bonheur n'est pas au bout du chemin. Le bonheur EST le chemin ( proverbe zen ) Remplacez nospam.nospam par pfi.be pour répondre. Merci
"JacquesH" a écrit dans le message de news:
Bonjour et merci pour ta réponse,
Je me suis intéressé à ta première solution qui me paraît effectivement plus conforme à la logique.
En mettant la propriété DEFAULT de OK à True, tout va bien.
En revanche, je n'ai pas réussi avec la propriété CANCEL de ANNULER à TRUE. Il ne se passe rien avec la touche "CANCEL".
Jacques
Bonjour
Deux solutions
1. Affecter les propriétés DEFAULT et CANCEL des boutons. Mettre la propriété DEFAULT de OK à TRUE et la propriété CANCEL de ANNULER à TRUE.
Ainsi, une pression sur ENTER équivaudra à OK et une pression sur CANCEL équivaudra à ANNULER (Respect de l'ergonomie Windows...).
Si tu veux absolument utiliser F2 et F3, fais-le avec le code suivant (à adapter aux noms de tes boutons)
Private Sub cmdAnnuler_Click() MsgBox "Pression du bouton ANNULER" End Sub
Private Sub cmdOk_Click() MsgBox "Pression du bouton OK" End Sub
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) Select Case KeyCode Case vbKeyF2 cmdOk_Click Case vbKeyF3 cmdAnnuler_Click End Select End Sub
Attention à "Application.onkey "F1"... En utilisant F1 pour ouvrir ton userform, tu prives les utilisateurs de l'aide Excel...
Ok?
JacquesH
OK, je n'avais pas testé "ECHAP".
Merci pour ton aide.
Jacques
Il faut noter que la propriété CANCEL à TRUE correspond à l'évènement CLICK du bouton auquel tu affectes cette propriété. Il faut donc qu'il y ait un code associé à l'évènement CLICK du bouton concerné. En clair, cela veut dire que CANCEL = TRUE ne correspond pas au clic sur la croix de fermeture, mais à l'évènement CLICK du bouton. En pressant ESC ou ECHAP, on déclenche l'évènement CLICK du bouton qui a la propriété CANCEL = TRUE...
Ok?
OK, je n'avais pas testé "ECHAP".
Merci pour ton aide.
Jacques
Il faut noter que la propriété CANCEL à TRUE correspond à l'évènement CLICK
du bouton auquel tu affectes cette propriété. Il faut donc qu'il y ait un
code associé à l'évènement CLICK du bouton concerné. En clair, cela veut
dire que CANCEL = TRUE ne correspond pas au clic sur la croix de fermeture,
mais à l'évènement CLICK du bouton. En pressant ESC ou ECHAP, on déclenche
l'évènement CLICK du bouton qui a la propriété CANCEL = TRUE...
Il faut noter que la propriété CANCEL à TRUE correspond à l'évènement CLICK du bouton auquel tu affectes cette propriété. Il faut donc qu'il y ait un code associé à l'évènement CLICK du bouton concerné. En clair, cela veut dire que CANCEL = TRUE ne correspond pas au clic sur la croix de fermeture, mais à l'évènement CLICK du bouton. En pressant ESC ou ECHAP, on déclenche l'évènement CLICK du bouton qui a la propriété CANCEL = TRUE...