IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Agrandir userform grâce à un raccourci clavier [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut Agrandir userform grâce à un raccourci clavier
    Bonjour,

    j'ai regardé beaucoup d'articles concernant la fonction OnKey, mais je n'arrive toujours pas à l'appliquer à mon utilisation et ça m'énerve !!!

    J'ai une userform et lorsque j'effectue un raccourci clavier (Ctrl + S) la propriété Width du userform doit être modifié pour l'agrandir.

    Problème : Lorsque le userform s'affiche, rien ne se passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub userform_activate()
        Application.OnKey "^s", "Agrandir"
    End Sub
     
    Sub Agrandir()
        userform1.Width = 540.5
    End sub
    Et si je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnKey "^s", MsgBox ("Texte")
    à la place de la ligne 2; la msgbox va s'afficher sans que j'effectue le raccourci clavier ...
    Et ce n'est non plus pas cette ligne qui bug
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    userform1.Width = 540.5


    Je comprends pas
    Merci pour votre aide !!

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 162
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne crois pas que tu puisses utiliser le raccourci clavier au départ d'un Userform avec Application.OnKey
    Si tu utilises ce code et que tu as une Procédure appelée Test, c'est au départ d'Excel que tu peux enclencher cette procédure en utilisant le raccourci clavier Alt+z
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnKey "%z", "Test"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    Merci pour cette réponse.
    Effectivement OnKey ne fonctionne pas pour les userforms.

    J'ai cependant trouvé une autre "solution" que j'arrive à faire fonctionner à moitié

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
       If KeyCode = vbKeyF1 Then
          UserForm1.Width = 300
       End If
    End Sub
    Ce code fonctionne très bien avec un userform vierge. Mais avec mon userform sur laquelle je travaille rien ne se passe...

    Puis j'ai ajouté un bouton sur le userform vierge et là ça ne fonctionnait plus.

    Donc pouvons nous contourner ce problème et faire un keyDown sur un userform avec des boutons ??
    Je cherche et je vous tiendrai au courant si il y a du nouveau...

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Puis j'ai ajouté un bouton sur le userform vierge et là ça ne fonctionnait plus.
    Parce que c'est ce bouton qui a le focus, et l'évènement KeyDown est associé désormais au bouton et non à l'userform
    Dès lors, tu dois avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
       If KeyCode = vbKeyF1 Then Me.Width = 500
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Février 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 17
    Par défaut
    Âlors j'ai fait ça, suite à la réponse de mercatog. C'est pas la meilleure solution mais ça me va déja bien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Frame1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 'Ne pas oublier de cliquer sur le frame1 pour qu'il prenne le focus !!
       If KeyCode = vbKeyF2 Then Me.Width = 440    'Agrandi le userform si F1 appuyé
       If KeyCode = vbKeyF1 Then Me.Width = 340.5 'Remet à la taille initiale si F2 appuyé
    End Sub
    Le pied serai de pouvoir faire la même chose lors d'un raccourci (ex: ALT+ z) à la place d'une touche. Mais pour ça il faut combiner des KeyDown et c'est se compliquer pour pas grand chose...
    Merci

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    utilise les combinaison de KeyCode et Shift (Regarde l'aide sur le mot KeyDown)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Frame1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) 'Ne pas oublier de cliquer sur le frame1 pour qu'il prenne le focus !!
     
    If KeyCode = 90 And Shift = 4 Then Me.Width = 440 '90:z     4:Tab
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Utiliser raccourci clavier dans userform
    Par Alasgard dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/06/2014, 07h56
  2. [XL-2007] Raccourci clavier pour UserForm
    Par franc83 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 29/09/2011, 22h04
  3. appeler une userform par un raccourci clavier
    Par 20100. dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/02/2008, 09h49
  4. [VBA EXCEL] Réduire/Agrandir UserForms
    Par Fench dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2003, 16h02
  5. [] Raccourci clavier pour bouton d'une barre d'outil
    Par Sébastien dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 24/03/2003, 17h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo