Traitée Utiliser "Onkey"

  • lundi 19 mars 2012 10:21
     
      A du code

    Bonjour

    je ne parviens pas faire fonctionner "onkey"; j'ai mis ce qui suit dans un formulaire (initial) et il ne se passe rien lorsque j'appuie sur echap!?

    Application.OnKey "{ESCAPE}", "sortie_Click"

    Mon intention est de sortir du formulaire avec la touche echap.


    Alain D

Toutes les réponses

  • lundi 19 mars 2012 12:23
     
     
    Le 19/03/2012 11:21, papyx a écrit :
    > Bonjour
    >
    > je ne parviens pas faire fonctionner "onkey"; j'ai mis ce qui suit dans
    > un formulaire (initial) et il ne se passe rien lorsque j'appuie sur echap!?
    >
    > Application.OnKey"{ESCAPE}","sortie_Click"
    >
    >
    > Mon intention est de sortir du formulaire avec la touche echap.
    >
     
    Bonjour papyx,
     
    Application.OnKey est lié à VBA, pas à VB6.
     
    Comme tu poses la question dans le forum VB6, je répondrai en VB6,
    cette méthode fonctionnant aussi en VBA :
       Tu ajoutes sur ton formulaire un 'CommandButton' dont tu
    renseignes les propriétés :
       - 'Caption' = "Annuler"
      - 'Cancel' = True
     
    et dans l' événement 'Click' de ce CommandButton tu mets:
     
    Private Sub CommandButton1_Click()
      Unload Me
    End Sub
     
    NB : La propriété 'Cancel' à son pendant pour valider un formulaire:
               - 'Caption' = "OK"
              - 'Default' = True
     
    --
     
    Cordialement,
     
    Jacques.
     

    Cordialement, Jacques
  • lundi 19 mars 2012 12:47
     
     

    salue Jacques

    En réalité je suis en VBA sous Exel (2003).


    Alain D

  • lundi 19 mars 2012 13:41
     
     
    Le 19/03/2012 13:47, papyx a écrit :
    > salue Jacques
    >
    > En réalité je suis en VBA sous Exel (2003).
    >
     
    Le forum approprié pour VBA est ici :
     
    Ceci dit, je pense que l'utilisation de OnKey n'est pas judicieuse
    pour ce que tu veux faire. Comme l'indique la syntaxe :
       Application.Onkey ...
     
    La touche sera opérationnelle pour tout le classeur, que le formulaire
    soit actif ou pas. Autant utiliser ce est qui spécifique au formulaire ...
     

    Cordialement, Jacques
  • lundi 19 mars 2012 14:06
     
      A du code

    Je ne trouve pas la réponse sur le forum VBA.

    J'ai essayé ce qui suit, mais c'est pareil : pas d'effet

    Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    j'ai mis un point d'arrêt dans cette procédure. Mais je n'y vais jamais 


    Alain D

  • lundi 19 mars 2012 14:33
     
     Traitée
    Le 19/03/2012 15:06, papyx a écrit :
    > Je ne trouve pas la réponse sur le forum VBA.
    >
    > J'ai essayé ce qui suit, mais c'est pareil : pas d'effet
    >
    > Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    >
    >
    > j'ai mis un point d'arrêt dans cette procédure. Mais je n'y vais jamais
    >
     
    Les formulaires sous VBA/Excel n'ayant pas de propriété 'KeyPreview',
    c'est le contrôle actif au moment de la frappe qui intercepte celle-ci,
    via KeyPress ou KeyDown. Essaie avec un formulaire vide, tu verras que
    ça fonctionne. Ajoutes y un TextBox, un CommandButton, ou autres : ça ne
    marche plus,  à moins de gérer les événements KeyPress de tous les
    les contrôles de ton formulaire ...
     
    As tu essayé la solution proposée dans ma première réponse ?
    (Un CommandButton avec la propriété 'Cancel' = True)
     
    Et si tu n'as pas trouvé de réponse sur le forum VBA, tu peux tout de
    même y poser ta question.
     --
     
    Cordialement,
     
    Jacques.
     

    Cordialement, Jacques
    • Marqué comme réponse papyx lundi 19 mars 2012 15:46
    •  
  • lundi 19 mars 2012 15:46
     
     

    Merci Jacques

    ca fonctionne comme je voulais avec 'Cancel=True'


    Alain D