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

Le
Steph
Bonjour,

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

Je souhaiterais détecter que l'on garde le bouton appuyer pour boucler la=
macro et donc continuer à effectuer des déplacements jusqu'à ce que =
je relâche le bouton de la souris.

Y a t'il une solution ?

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

Sub Image2_Cliquer()
MA MACRO
end sub

D'avance merci pour vos idées,

Stéphane
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #25783892
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
---------------------------------------------------------------
Steph
Le #25784062
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
MichD
Le #25784432
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
---------------------------------------------------------------
LSteph
Le #25785622
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" 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
Publicité
Poster une réponse
Anonyme