Assigner un bouton de commande a une des fleches du clavier

glasgow1705 Messages postés 12 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 18 décembre 2009 - 18 déc. 2009 à 12:06
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 18 déc. 2009 à 15:15
Bonjour,

J'ai une feuille avec 4 boutons de commande. (up, left, Down, Right)
au lieu de cliquer sur ces boutons avec la souris, j'aimerais pouvoir lancer les maccros correpondantes en appuyant sur les fleches du clavier.

je sais que plusieurs articles ont deja été écrits la dessus, mais je n'y arrive pas...

Merci de votre aide!!

7 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 déc. 2009 à 12:20
Salut
Ca manque de précision.

"Feuille" : Donc on suppose que tu es sous Excel ?

Tes boutons sur réellement SUR ta feuille ou bien sur une UserForm ?

Sur une feuille, l'action des flèches fait changer la cellule courante.
Comment veux-tu faire la part des choses entre un déplacement parmi les cellules et un déplacement pour tes macros ?

"mais je n'y arrive pas" : Qu'as-tu essayé ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
glasgow1705 Messages postés 12 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 18 décembre 2009
18 déc. 2009 à 12:30
salut,

ouais je suis sur excel.

oui me boutons sont relleement sur ma feuille, donc vu ta reponse, je me doute qu'il faut que je les mette dans une userform...

j'ai essayé bcp de codes differents qui avaient ete publiés dans des articles qui correpondaient a mon probleme...

mais de toute facon, etant donné que les boutons n'etaient pas ds une userform, ca risquait pas de marcher je pense...
0
glasgow1705 Messages postés 12 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 18 décembre 2009
18 déc. 2009 à 12:58
je suis en train d'essayer mais je me rends compte d'un probleme tout autre.

En fait le principe de mon fichier est que les cellules sont en couleur et sont en pertetuel mouvement , et le fait d'appuyer sur mes boutons de commande dirige les changements de couleur et les directions des mouvements.
(un peu a l'image de tetris)

la macro principal consiste a maintenir le tout en mouvement, et en parallele j'ai les macros de mes 4 boutons.

si je mets mes boutons dans une userform (qui doit tjs etre presente a l'ecran), est-ce qu'il est possible que la macro principale continue de tourner alors que l'usserform est a l'ecran?

concretement lorsque je fait userform.show, la macro principale s'arrete.

j'espere que j'arrive a me faire comprendre....
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
18 déc. 2009 à 13:22
Il est probable que tu as ton userform en "Modal" (propriété Showmodal) mets-la à false.

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0

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

Posez votre question
glasgow1705 Messages postés 12 Date d'inscription lundi 14 septembre 2009 Statut Membre Dernière intervention 18 décembre 2009
18 déc. 2009 à 13:39
ouais c'est ca, merci!!

maintenant je vais essayer de lier les boutons de commande de l'userform avec les fleches du clavier...
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 déc. 2009 à 15:13
Oui et non : le placement de bouton dans une UserForm sera (peut-être) plus pratique pour cette détection de touche, mais il faudra qu'elle ait en permanence le focus, et ça, vu ton projet, ça risque de poser plus de problème encore.

Si tu dois surveiller des actions clavier, il suffit d'intérroger cycliquement le clavier, sans le demander à l'interface, Excel, qui ne fournira pas facilement cette info.
-1- Cherche (et tu trouveras) des questions forums ou des sources qui parlent des Timers dans VBA
Ces Timers te permettront d'exécuter des tests du clavier cycliquement, entre 150mSec et 1 Sec.
-2- Pour connaitre l'état des touches "flèches", il faut utiliser l'API nommée GetAsyncKeyState avec les touches vbKeyUp, vbKeyDown, vbKeyLeft, vbKeyRight
Là aussi, tu trouveras des exemples en cherchant "vba GetAsyncKeyState" parmi les codes sauf .Net comme celui-là, extrait des exemples de :
Option Explicit
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Sub MaFonctionCyclique()
    Dim Cnt As Long
    For Cnt = 32 To 128
        'Get the keystate of a specified key
        If GetAsyncKeyState(Cnt) <> 0 Then
            Debug.Print Time, Cnt
            Exit For
        End If
    Next Cnt
End Sub


Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 déc. 2009 à 15:15
0
Rejoignez-nous