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

Détecter pression continue sur le bouton gauche de la souris

4 réponses
Avatar
Steph
Bonjour,

J'ai une macro qui me d=E9place les donn=E9es d'un tableau lorsque je press=
e un bouton avec le bouton gauche de ma souris.
Lors d'une pression, je d=E9place d'une case vers la gauche.

Je souhaiterais d=E9tecter que l'on garde le bouton appuyer pour boucler la=
macro et donc continuer =E0 effectuer des d=E9placements jusqu'=E0 ce que =
je rel=E2che le bouton de la souris.

Y a t'il une solution ?

J'utilise actuellement la fonction "Cliquer" sur un bouton flech=E9 qui est=
en fait une image.

Sub Image2_Cliquer()
MA MACRO
end sub

D'avance merci pour vos id=E9es,

St=E9phane

4 réponses

Avatar
MichD
Bonjour,

Tu devrais tenter de garder tes procédures les plus simples possible!
Je ne connais pas l'utilité de ce que tu demandes... es-tu certain
que tu ne peux pas faire plus simple?

Un petit exemple simple :

Dans un module standard : Déclaration de l'API et des constantes

Public Declare Function GetKeyState _
Lib "user32" (ByVal nVirtKey As Long) As Integer

Public Const VK_RETURN = &HD
Public Const VK_DOWN = &H28
Public Const VK_UP = &H26
Public Const VK_LEFT = &H25
Public Const VK_RIGHT = &H27
Public Const VK_TAB = &H9
Public Const VK_LBUTTON = &H1
Public Const VK_RBUTTON = &H2
Public Const VK_SHIFT = &H10
Public Const VK_Alt = &H12

Dans le module de la feuille où l'action se déroule, insère ceci :
'-----------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If GetKeyState(VK_RETURN) < 0 Then
MsgBox "Touche Entrée"
ElseIf GetKeyState(VK_DOWN) < 0 Then
MsgBox "Flèche vers le bas"
ElseIf GetKeyState(VK_UP) < 0 Then
MsgBox "Flèche vers le haut"
ElseIf GetKeyState(VK_LEFT) < 0 Then
MsgBox "Flèche vers la gauche"
ElseIf GetKeyState(VK_RIGHT) < 0 Then
MsgBox "Flèche vers la droite"
ElseIf GetKeyState(VK_TAB) < 0 Then
MsgBox "Touche tabulation"
ElseIf GetKeyState(VK_LBUTTON) = 1 Then
MsgBox "bouton gauche souris"
ElseIf GetKeyState(VK_RBUTTON) < 0 Then
MsgBox "bouton droit souris"
End If
End Sub
'-----------------------------

À chaque fois que tu vas utiliser la souris ou une touche
de direction (les flèches) , Tab... un message va apparaître
pour te dire la touche ou le bouton de la souris que tu
as utilisé dès que tu vas relâcher le bouton de la souris ou
une des touches mentionnées.

Chaque objet créé dans Excel n'a pas nécessairement des procédures
événementielles pour détecter ce que l'usager fait à l'écran...

Je te le dis tout de suite, il faut mieux trouver une autre avenue!

MichD
---------------------------------------------------------------
Avatar
Steph
Ce n'est pas vraiment ce que je souhaite.

Je souhaiterais pouvoir exécuter une macro en boucle tout le temps de la pression sur un bouton.

Y a t'il moyen de détecter le relachement d'un bouton placer sur une feui lle excel ?

Stéphane
Avatar
MichD
Un petit fichier exemple :

http://cjoint.com/?CKntbJh2dgA

Aussi longtemps que tu maintiens "enfoncer" une des touches utilisées,
dans la procédure, le compteur en A1 s'exécute... pour ce faire cependant,
tu dois annuler les "msgbox" de la procédure. L'exemple est simplement
pour démontrer selon le temps que tu choisis selon la touche, le compteur
s'exécute...

MichD
---------------------------------------------------------------
Avatar
LSteph
Bonjour,

A part la curosité intellectuelle de rechercher comment détecter le
relachement de ce bouton...

Ne serait-il pas bien plus simple de lancer en boucle ta macro avec ou sans
le clik gauche de souris, puis en laissant un DoEvents par exemple
utiliser un autre évennement ou une autre macro par exemple le clik droit de
la souris pour l'interrompre?

Cordialement.

--
LSteph

"Steph" a écrit dans le message de
news:

Ce n'est pas vraiment ce que je souhaite.

Je souhaiterais pouvoir exécuter une macro en boucle tout le temps de la
pression sur un bouton.

Y a t'il moyen de détecter le relachement d'un bouton placer sur une feuille
excel ?

Stéphane


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com