Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Réinitialiser Application.OnKey

10 réponses
Avatar
HD
Bonjour,


A l'ouverture d'un classeur j'ai mis en Workbook_Open la ligne :
Application.OnKey "{LEFT}", "VerslaGauche"
afin de lancer la macro VerslaGauche lorsque je vais vers la gauche via
la flèche du clavier.

Mon souci est que si je ferme le classeur en question et qu'un autre
classeur était ouvert, lorsque je vais vouloir aller sur la gauche via
la flèche du clavier Excel me réouvre le classeur pour exécuter la
macro... Si je met dans le Workbook_BeforeClose la ligne :
Application.OnKey "{LEFT}", ""
lorsque je vais appuyer sur la flèche gauche du clavier... il ne va rien
se passer alors que je voudrais aller sur la gauche ce qui doit
s'effectuer normalement.

Comment donc peut on réinitialiser une touche que l'on aurait paramétrer
?

Merci d'avance pour votre aide,

@+
HD

10 réponses

Avatar
isabelle
bonjour HD,

de souvenance les guillemet comme 2èm argument servent à désactiver la fonction.
essai:

Application.OnKey "{LEFT}"

isabelle

Le 2014-04-02 10:04, HD a écrit :
Bonjour,


A l'ouverture d'un classeur j'ai mis en Workbook_Open la ligne :
Application.OnKey "{LEFT}", "VerslaGauche"
afin de lancer la macro VerslaGauche lorsque je vais vers la gauche via la
flèche du clavier.

Mon souci est que si je ferme le classeur en question et qu'un autre classeur
était ouvert, lorsque je vais vouloir aller sur la gauche via la flèche du
clavier Excel me réouvre le classeur pour exécuter la macro... Si je met dans le
Workbook_BeforeClose la ligne :
Application.OnKey "{LEFT}", ""
lorsque je vais appuyer sur la flèche gauche du clavier... il ne va rien se
passer alors que je voudrais aller sur la gauche ce qui doit s'effectuer
normalement.

Comment donc peut on réinitialiser une touche que l'on aurait paramétrer ?

Merci d'avance pour votre aide,

@+
HD
Avatar
MichD
Bonjour,

Utilise ces 2 procédures événementielles du classeur en question et
oublie Workbook_Open.

'----------------------------------------------
Private Sub Workbook_Activate()
Application.OnKey "{LEFT}", "VerslaGauche"
End Sub
'----------------------------------------------
Private Sub Workbook_Deactivate()
Application.OnKey "{LEFT}", ""
End Sub
'----------------------------------------------

Et dans un module standard, la macro "Vers la gauche".

La macro va s'exécuter seulement lorsque tu es dans ledit classeur.
Avatar
MichD
Bonjour Isabelle,

Sauf erreur, ces 2 lignes de code font la même chose!

Application.OnKey "{LEFT}"
OU
Application.OnKey "{LEFT}", ""
Avatar
isabelle
salut Denis,

extrait de l'aide "Application.OnKey, méthode"
___________________________________________________________________________
Cet exemple montre comment désactiver la combinaison de touches MAJ+CTRL+DROITE.

Visual Basic pour Applications
Application.OnKey "+^{RIGHT}", ""

Cet exemple montre comment rétablir la signification normale de la combinaison
de touches MAJ+CTRL+DROITE.

Visual Basic pour Applications
Application.OnKey "+^{RIGHT}"

___________________________________________________________________________

isabelle

Le 2014-04-02 10:26, MichD a écrit :
Bonjour Isabelle,

Sauf erreur, ces 2 lignes de code font la même chose!

Application.OnKey "{LEFT}"
OU
Application.OnKey "{LEFT}", ""
Avatar
HD
Utilise ces 2 procédures événementielles du classeur en question et
oublie Workbook_Open.
'----------------------------------------------
Private Sub Workbook_Activate()
Application.OnKey "{LEFT}", "VerslaGauche"
End Sub
'----------------------------------------------
Private Sub Workbook_Deactivate()
Application.OnKey "{LEFT}", ""
End Sub
'----------------------------------------------
Et dans un module standard, la macro "Vers la gauche".
La macro va s'exécuter seulement lorsque tu es dans ledit classeur.



Ma macro "Vers la gauche" est bien dans un module standard. Mais lorsque
je quitte le classeur, si j'appuie sur la flèche gauche {LEFT} alors le
curseur ne va plus sur la gauche...


Application.OnKey "{LEFT}", ""
ne réinitialise donc pas la touche de la flèche gauche... elle lui
enlève tout effet.

@+
HD
Avatar
HD
Ma macro "Vers la gauche" est bien dans un module standard. Mais
lorsque je quitte le classeur, si j'appuie sur la flèche gauche {LEFT}
alors le curseur ne va plus sur la gauche...

Application.OnKey "{LEFT}", ""
ne réinitialise donc pas la touche de la flèche gauche... elle lui
enlève tout effet.



Petite précision... Ce scénario posant problème se produit lorsque le
classeur avec ces macros est ouvert alors qu'un autre classeur est
également ouvert. Si l'on ferme le classeur avec les macros alors sur le
classeur qui était également ouvert la flèche gauche ne fonctionne plus.
Par contre, sur d'autres applications (word ou autres) cela fonctionne.

@+
HD
Avatar
DanielCo
Bonjour,

Application.OnKey "{LEFT}"

Daniel


Utilise ces 2 procédures événementielles du classeur en question et
oublie Workbook_Open.
'----------------------------------------------
Private Sub Workbook_Activate()
Application.OnKey "{LEFT}", "VerslaGauche"
End Sub
'----------------------------------------------
Private Sub Workbook_Deactivate()
Application.OnKey "{LEFT}", ""
End Sub
'----------------------------------------------
Et dans un module standard, la macro "Vers la gauche".
La macro va s'exécuter seulement lorsque tu es dans ledit classeur.



Ma macro "Vers la gauche" est bien dans un module standard. Mais lorsque je
quitte le classeur, si j'appuie sur la flèche gauche {LEFT} alors le curseur
ne va plus sur la gauche...


Application.OnKey "{LEFT}", ""
ne réinitialise donc pas la touche de la flèche gauche... elle lui enlève
tout effet.

@+
HD
Avatar
HD
'----------------------------------------------
Private Sub Workbook_Deactivate()
Application.OnKey "{LEFT}", ""
End Sub
'----------------------------------------------




Application.OnKey "{LEFT}"


Effectivement, cela fonctionne bien. Il y'a donc une différence entre
Application.OnKey "{LEFT}"
et
Application.OnKey "{LEFT}", ""

@+
HD
Avatar
MichD
Des coins de ma mémoire qui ont besoin d'être rafraichis!
Mes excuses Isabelle.

Salutations.
Avatar
DanielCo
'----------------------------------------------
Private Sub Workbook_Deactivate()
Application.OnKey "{LEFT}", ""
End Sub
'----------------------------------------------




Application.OnKey "{LEFT}"


Effectivement, cela fonctionne bien. Il y'a donc une différence entre
Application.OnKey "{LEFT}"
et
Application.OnKey "{LEFT}", ""

@+
HD



Application.OnKey "{LEFT}", ""
inactive la touche.
Daniel