Lancement d'une macro VBA dans excel par une combinaison de touche

dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009 - 4 août 2008 à 12:35
 SeniorVb - 26 janv. 2013 à 21:19
Bonjour,
Je voudrais lancer une macro (inputbox avec mot de passe ; la macro est OK) à partir de n'importe quel endroit d'un classeur excel protégé en grace à la combinaison ctrl+alt+A. faut-il utiliser un keydown, ou autre chose...?

Merci d'avance

20 réponses

champiprod Messages postés 3 Date d'inscription lundi 1 septembre 2003 Statut Membre Dernière intervention 6 août 2008
4 août 2008 à 14:23
Salut Dimud,

Cette fonctionnalité existe dans Excel mais tes raccourcis seront du type "Ctrl + touche".

Pour le paramétrer, tu ouvres le classeur qui contient ta macro, tu vas dans le menu "Outils/Macro/Macros...". Dans la boîte de dialogue tu sélectionnes ta macro, tu cliques sur "Options" et tu peux créer ton raccourci.

@+, Champi
0
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
4 août 2008 à 22:20
Merci

Je connais cette procédure et je cherche quelquechose de plus difficile à percer. Ma macro permet d'acceder à des fonctions de type "administrateur" et je voudrais en sécuriser au maximum l'accès en plus d'un mot de passe. J'ai peur qu'avec ctrl+? on tombe dessus trop facilement. Est-ce possible?

A bientôt
Dimud
0
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
5 août 2008 à 09:31
Up !!!
0
champiprod Messages postés 3 Date d'inscription lundi 1 septembre 2003 Statut Membre Dernière intervention 6 août 2008
5 août 2008 à 15:21
Dimud,

Dans l'aide de VBA Excel, tapes "OnKey", qui est la méthode à utiliser pour paramétrer les raccourcis clavier un peu tordus comme ceux que tu recherches.

Attention, c'est le genre de procédure à double tranchant. En créant ton raccourci, tu risques de désactiver un raccourci natif d'Excel.

Pour l'implém, tu met une instruction définissant ton raccourci dans la proc événementielle "Workbook_Open" de l'objet ThisWorkbook de ton classeur, et l'instruction supprimant ton raccourci dans "Workbook_BeforeClose".

@+, Champiprod
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
5 août 2008 à 21:41
J'essaie dès demain !!!
 je te tiens au courant...

 A suivre

Dimud
0
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
6 août 2008 à 10:36
De tatonnements en incompétences, j'en suis arrivé à ce qui suit mais il ne trouve pas la procédure "administration" qui se trouve dans le même module.Doit-je lui indiquer un chemin de fichier ?

Private Sub workbook_open()
    Application.OnKey "^k", "Administration"
End Sub

Public Sub Administration()
If Sheets("Administration").Range("B22") = "OK" Then MsgBox ("Le module administration de Madévha est déja actif."): Sheets("administration").Select: Range("A1").Select
If Sheets("Administration").Range("B22") = "" Then UserForm4.Show
   
End Sub

Qu'est ce qui coince ?
0
champiprod Messages postés 3 Date d'inscription lundi 1 septembre 2003 Statut Membre Dernière intervention 6 août 2008
6 août 2008 à 13:18
Salut Dimud,

Tu dois mettre ta procédure "Administration" dans un module standard et non dans un module de classe.

C'est juste ça...

@+
0
dimud Messages postés 19 Date d'inscription mardi 29 juillet 2008 Statut Membre Dernière intervention 3 juillet 2009
6 août 2008 à 14:25
Après vérification, c'est déjà le cas, je n'ai rien dans les modules de classe...

J'ai trouvé le pourquoi du comment : le nom de la procédure correspondait aussi à un nom de module et de feuille. En changent le nom de la procédure ça marche!!!

Merci et à une autre fois peut-être
Dimud
0
SeniorVb
0
en Excel 2003, je voudrais déclencher une macro par la touche de fonction F9. cette macro se contente d'afficher dans ma feuille 'Feuil1' le CodeKey.

J'ai écrit dans l'espace code de Feuil1 (ou ThisWorkbook c'est pareil) :

Private Sub Feuil1_KeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer)
MsgBox "code " & KeyCode
End Sub

Quand j'appuie sur F9 l'événement n'est pas activé, ne se passe.
J'ai l'intuition (ne connaissant pas grand chose à VBA) que je devrais mettre autre chose à la place de Feuil1 dans la ligne :
Private Sub Feuil1_KeyDown(ByVal KeyCode As . . .integer)
Private Sub xxxxxx_KeyDown(ByVal KeyCode As . . .integer) ? ? ?

J'attends avec reconnaissance une aide de votre part, et je vous en remercie.


SeniorVb
0
Utilisateur anonyme
25 janv. 2013 à 18:22
Sans Bonjour

Je ne sais pas, si c'est un problème de confusion, mais depuis une éternité F9 est utilisé dans VB - VBA - VB.net pour mettre/retirer un point d'arrêt.

Regarde dans ton aide d'Excel si F9 ne sert pas déjà à autre chose.

Microsoft recommande d'utiliser des raccourcis-claviers Ctrl + autre chose pour lancer les macros.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 janv. 2013 à 18:57
Bonjour,
J'ai écrit dans l'espace code de Feuil1 (ou ThisWorkbook c'est pareil) :

Private Sub Feuil1_KeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer)

Cet évènement n'existe pas
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
"REPONSE ACCEPTEE"

Merci pour les deux réponses.

Je pensais qu'on pouvait "détourner" une touche de fonction pour son usage
privé, et la restaurer en fin de macro pour Excel.

J'utiliserai donc une combinaison de touches.

Encore merci.
SeniorVb
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
25 janv. 2013 à 19:20
Je pensais qu'on pouvait "détourner" une touche de fonction pour son usage
privé, et la restaurer en fin de macro pour Excel.

Bien évidemment, qu'on le peut ! Mais pas en inventant de toutes pièces un évènement !
Regarde (ton aide VBA) ce qu'est Application.Onkey et reviens


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
"REPONSE ACCEPTEE"

Merci ucfoutu, en effet, avec Application.Onkey je fait tout ce que je veux,
et avec n'importe quelle touche. Car en fait, mon applic ne se borne pas à la touche de fonction F9.

SeniorVb
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 janv. 2013 à 16:42
Clique donc sur le tag "réponse acceptée" pour libérer ce sujet (le texte "REPONSE ACCEPTEE" ne permet pas de voir du premier coup d'oeil que le sujet est libéré. C'est l'utilisation du tag, au niveau de la réponse/solution qui, seule, le permet).
PS : As-tu également vu que, pour annuler et revenir à la situation normale, il suffisait de ne pas utiliser le second paramètre de OnKey ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Bonjour ucfoutou,
De nouveau merci. J'ai encore scruté l'aide sur OnKey, et en effet, le rétablissement du fonctionnement normal de la touche "déroutée" m'avait échappé. Je te présente donc (et à l'honorable société de CodeS-SourceS)
la maquette de la solution que j'adopte dans une séquence sécurité d'une application comptable pour une assoc sportive où j'agis en bénévole.

Module 1
Sub Test_des_touches()
Application.OnKey "²", "Exec_touche" ' Affectation à ma procédure
End Sub

Module 2
Sub Exec_touche()
MsgBox "Touche ² enfoncée" ' Procédure (réduite à sa + simple expression)
Application.OnKey "²" ' Rétablissement touche ² (nom proc omise)
End Sub

Évidemment mon code réel est un peu plus fourni !

J'ai vu que tu étais entré dans ce forum en 2009 à l'âge, je suppose, qui est accolé à ton pseudo. Cet âge est-il mis à jour automatiquement. Si non, c'est l'éternelle jeunesse (relative).

J'ai mis un texte également sous mon pseudo, mais il n'est plus à jour (âge en particulier qui justifie le choix de mon pseudo). A ta connaissance, peut-on le modifier ?


SeniorVb
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 janv. 2013 à 20:03
L'âge est mis à jour, oui, à partir de la date de naissance.
- celui qui accompagne mon pseudo est mon âge réel
- je suis donc un "vieux", mais ai conservé mes réactions de lorsque j'avais 17 ans (seul le corps vieillit, jamais l'esprit).
Amitiés


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 janv. 2013 à 20:32
J'ajouterais bien volontiers, SeniorVb, juste pour te rassurer :
- qu'à son "départ" (à un âge plus bien plus avancé que celui que j'ai aujourd'hui), mon père avait encore l'esprit qu'il avait lorsqu'il était un tout jeune homme. C'était on ne peut plus visible...
- que le développement informatique n'est qu'un élément parmi d'autre et qu'il est très loin d'être aussi complexe que de nombreux autres domaines. Il demande peu d'efforts (sauf pour un nombre restreint de développeurs) et je constate qu'il est souvent réduit à de la "récitation" (pas ma tasse de thé)
Alors, tu vois ? Tu as encore un grand nombre de jours heureux devant toi. Dors bien.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
Oui, ucfoutu, du haut de mes 77 ans, je partage entièrement ton opinion sur la subsistance d'une "jeunesse" intellectuelle chez les personnes qui
ont coopéré avec la nature pour qu'il en soit ainsi.

Je vais (bien) dormir,

Merci pour ton aide, Cordialement, SeniorVb
-1
Rejoignez-nous