XL 2016 VBA - Intercepter touches Alt+lettre de raccourcis Excel

Dudu2

XLDnaute Barbatruc
Bonjour,

Un certain nombre de touches sont disponibles en association avec Alt + touche pour être interceptées par Application.OnKeys "%<touche>", "<Fonction>".
1621669208607.png


Les autres sont des raccourcis Excel dont de nombreux affichent sur le ruban les lettres à suivre pour activer les fonctions du ruban correspondantes.
C'est quasi-jamais utilisé et je voudrais donc en récupérer certaines (ex Alt+v) pour mon propre usage.

Hélas je ne trouve pas de moyen de les désactiver car même en plaçant un Application.OnKeys "%v", "<Fonction>" le raccourci Excel prime.

Mission impossible ?
Cordialement
 

Pièces jointes

  • Classeur2.xlsm
    20 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Dudu,
Glané sur le net : https://forum.excel-pratique.com/excel/utilisation-de-sendkeys-t86954.html
Cette solution semble marcher :
VB:
Sub a()
    Dim WshShell As Object
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.SendKeys "{%}v"
    MsgBox "Définition de l'interception Alt+v"
End Sub
NB: Pour associer une procédure à l'un des caractères spéciaux (+, ^, %, etc.), mettez le caractère entre accolades. ( https://docs.microsoft.com/fr-fr/office/vba/api/excel.application.onkey )
 

Dudu2

XLDnaute Barbatruc
Bonjour @sylvanu,

Merci pour ta proposition mais le problème ne porte pas sur le SendKeys mais sur l'interception de la combinaison des touches clavier Alt+v pour lancer une macro.

Alt+v est un raccourci Excel qui prime sur toute tentative d'interception par un Application.OnKeys "%v", "<Fonction>". Et je ne sais pas comment soit désactiver le raccourci Excel soit avoir la priorité d'interception.
 

soan

XLDnaute Barbatruc
Inactif
Bonjour Dudu2, sylvanu,

d'après moi, pour lancer une macro, c'est seulement avec des raccourcis claviers du genre Ctrl e ; d'ailleurs, regarde cette image de boîte de dialogue :​

Image.jpg


pour la touche de raccourci, il y a « Ctrl+ » devant la case où on met la lettre ; y'a pas d'autre case avec devant « Alt+ » ; la touche Alt est réservée pour les combinaisons de touches du genre Alt F pour le menu Fichier, ou Alt L pour l'onglet Accueil.​

soan
 

Dudu2

XLDnaute Barbatruc
Bonjour @soan,

Tu peux légitimement intercepter des touches (ou des combinaisons de touches) pour déclencher une macro.
Dans le fichier joint j'utilise une combinaison Alt + c qui n'est pas un raccourci Excel (voir liste en Post #1) et qui donc ne pose pas le problème que j'ai décrit dans le sujet.
la touche Alt est réservée pour les combinaisons de touches du genre Alt F pour le menu Fichier, ou Alt L pour l'onglet Accueil.
Toutes les combinaisons Alt + touches ne sont pas toutes des raccourcis Excel, il existe des combinaisons utilisables (voir liste en Post #1).

Mais ce que je voudrais faire c'est soit désactiver le raccourci Excel soit avoir la priorité d'interception sur le raccourci Excel pour des raccourcis Excel dont la touche m'intéresse, par exemple Alt + v.
 

Pièces jointes

  • Classeur2.xlsm
    20.9 KB · Affichages: 3

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re Dudu, Soan,
Oups, j'avais mal lu.
Sur mon XL2007, la macro ci dessous fonctionne :
VB:
Sub a()
    Application.OnKey "%v", "b"
    MsgBox "Définition de l'interception Alt+v"
End Sub
Sub b()
    MsgBox "Alt+v intercepté, et macro lancée."
End Sub
Un appui sur le bouton détourne les touches.
Ensuite un appui sur ALT v lance bien la macro.
20210522_133111.gif
 

Pièces jointes

  • Classeur2 (1).xlsm
    16.6 KB · Affichages: 3

Dudu2

XLDnaute Barbatruc
@sylvanu,
Sur 2016 Alt+v amène toutes ces lettres qui permettent d'activer les fonctions du ruban sur lesquelles elles sont positionnées.
Perso je ne m'en sers jamais, mais pour des utilisateurs qui ont l'habitude et veulent aller vite ça peut être très utile en effet.
C'est ça que je voudrais inhiber pour 1 ou 2 raccourcis (Alt+v) mais je ne crois pas que ce soit possible simplement.
Sinon faut peut-être aller dans l'API bidouiller les évènements du clavier, mais je ne me sans pas d'y passer 3 jours.

1621686698408.png
 

soan

XLDnaute Barbatruc
Inactif
@Dudu2, sylvanu,

j'avais oublié qu'on peut intercepter une touche avec Application.OnKey ; sur le fichier de sylvanu et le tien, ça marche impec : le Alt c ou le Alt v sont bien interceptés ; mais attention : pour le Alt c, ça ne marche plus si l'onglet Développeur est affiché dans le Ruban, car alors, Alt c n'est plus intercepté et sélectionne l'onglet Développeur. (ceci est sur ma version d'Excel 2007)

« ceci n'est pas un exercice » ; je répète : « ceci n'est pas un exercice » ; euh... je veux dire : « ceci n'est pas une blague, ceci n'est pas une blague... »

(tout proche, on entend les sirènes d'alarme de Pearl Harbor ! 😜)

soan
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
@soan,
Certes ça marche chez toi, mais tu es en quelle version d'Office ?
Chez moi, panneau Développeur affiché, Alt + c sélectionne les Compléments.
Mais bon, dans le contexte d'utilisation, le panneau Développeur reste au vestiaire.
 

Statistiques des forums

Discussions
312 685
Messages
2 090 941
Membres
104 703
dernier inscrit
romla937