Détection de touche enfoncée

Le
M41
Bonjour

Comment, lors du déroulement d'un programme, VBA
peut détecter que la touche Ctrl a été enfoncée ?

Il ne s'agit pas d'enclancher une procédure lors de
l'enfoncement de cette touche.

Cordialement

M41
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
isabelle
Le #5237911
bonjour M,

à copier dans un module standard:

Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Integer) As Integer

Sub TestCTRL()
If (GetAsyncKeyState(17) = -32768) Then
MsgBox "La touche CTRL est enfoncée."
End If
End Sub


isabelle

Bonjour

Comment, lors du déroulement d'un programme, VBA
peut détecter que la touche Ctrl a été enfoncée ?

Il ne s'agit pas d'enclancher une procédure lors de
l'enfoncement de cette touche.

Cordialement

M41




isabelle
Le #5237901
correction:

Sub TestCTRL()
If (GetAsyncKeyState(17) = -32767) Then
MsgBox "La touche CTRL est enfoncée."
End If
End Sub

isabelle

Bonjour

Comment, lors du déroulement d'un programme, VBA
peut détecter que la touche Ctrl a été enfoncée ?

Il ne s'agit pas d'enclancher une procédure lors de
l'enfoncement de cette touche.

Cordialement

M41




Fredo P.
Le #5237881
Bonsoir Isabelle
Sur xl97 (Xp sp2 il n'y a peut être aucune relation) la valeur est -32767
Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Integer) As Integer

Sub TestCTRL()
If (GetAsyncKeyState(17) = -32768) Then
MsgBox "La touche CTRL est enfoncée."
End If
End Sub


isabelle

Bonjour

Comment, lors du déroulement d'un programme, VBA
peut détecter que la touche Ctrl a été enfoncée ?

Il ne s'agit pas d'enclancher une procédure lors de
l'enfoncement de cette touche.

Cordialement

M41




isabelle
Le #5237871
salut fredo,

oui tu as raison, j'ai les mains plein de pouces ;-)

isabelle

Bonsoir Isabelle
Sur xl97 (Xp sp2 il n'y a peut être aucune relation) la valeur est -32767
Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Integer) As Integer

Sub TestCTRL()
If (GetAsyncKeyState(17) = -32768) Then
MsgBox "La touche CTRL est enfoncée."
End If
End Sub


isabelle

Bonjour

Comment, lors du déroulement d'un programme, VBA
peut détecter que la touche Ctrl a été enfoncée ?

Il ne s'agit pas d'enclancher une procédure lors de
l'enfoncement de cette touche.

Cordialement

M41








isabelle
Le #5237861
salut fredo,

plus simple et moin de danger de faire l'erreur avec <> 0 <:-)

Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Integer) As Integer


Sub TestCTRL()
If (GetAsyncKeyState(17) <> 0) Then
MsgBox "La touche CTRL est enfoncée."
End If
End Sub


isabelle

Bonsoir Isabelle
Sur xl97 (Xp sp2 il n'y a peut être aucune relation) la valeur est -32767
Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Integer) As Integer

Sub TestCTRL()
If (GetAsyncKeyState(17) = -32768) Then
MsgBox "La touche CTRL est enfoncée."
End If
End Sub


isabelle

Bonjour

Comment, lors du déroulement d'un programme, VBA
peut détecter que la touche Ctrl a été enfoncée ?

Il ne s'agit pas d'enclancher une procédure lors de
l'enfoncement de cette touche.

Cordialement

M41








Fredo P.
Le #5237741
"isabelle" a écrit dans le message de news:
%
salut fredo,

oui tu as raison, j'ai les mains plein de pouces ;-)

Ho! ça doit être rigolo.


M41
Le #5237211
Bonsoir et merci

La forme finale intégrée dans le programme d'une feuille
est :

'
Private Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Integer) As Integer
'sans Private j'ai un message d'erreur
Private Function TestCTRL() As Boolean
TestCTRL = GetAsyncKeyState(17) <> 0
End Function
Private Sub TestTestCTRL()
Debug.Print "Etat touche CTRL : "; TestCTRL
End Sub
'
En fait cette question est la suite de celle du 16/2/2008 dont
ma solution ne répondait qu'à une situation particulière d'utilisation
de la présentation des pages. Je gère maintenant par une autre
méthode le cas général en émulant les insertions / destructions
sur une feuille où ces options sont totalement verrouillées.

Le test sur la fonction Ctrl étendra ces fonctions sur des multi-
sélections distinctes : d'autres fonctions seraient même possibles
comme la copie généralisée, la permutation, l'effacement... des
zones distinctes sélectionnées.

Cordialement

M41

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

correction:

Sub TestCTRL()
If (GetAsyncKeyState(17) = -32767) Then
MsgBox "La touche CTRL est enfoncée."
End If
End Sub

isabelle

Bonjour

Comment, lors du déroulement d'un programme, VBA
peut détecter que la touche Ctrl a été enfoncée ?

Il ne s'agit pas d'enclancher une procédure lors de
l'enfoncement de cette touche.

Cordialement

M41




isabelle
Le #5237141
bonjour M,

sur le fichier ci-joint, tu trouvera la liste de tout les Virtual-Key Codes,

http://cjoint.com/?cCwh67uSKg

isabelle


Bonsoir et merci

La forme finale intégrée dans le programme d'une feuille
est :

'
Private Declare Function GetAsyncKeyState Lib "user32" _
(ByVal vKey As Integer) As Integer
'sans Private j'ai un message d'erreur
Private Function TestCTRL() As Boolean
TestCTRL = GetAsyncKeyState(17) <> 0
End Function
Private Sub TestTestCTRL()
Debug.Print "Etat touche CTRL : "; TestCTRL
End Sub
'
En fait cette question est la suite de celle du 16/2/2008 dont
ma solution ne répondait qu'à une situation particulière d'utilisation
de la présentation des pages. Je gère maintenant par une autre
méthode le cas général en émulant les insertions / destructions
sur une feuille où ces options sont totalement verrouillées.

Le test sur la fonction Ctrl étendra ces fonctions sur des multi-
sélections distinctes : d'autres fonctions seraient même possibles
comme la copie généralisée, la permutation, l'effacement... des
zones distinctes sélectionnées.

Cordialement

M41

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

correction:

Sub TestCTRL()
If (GetAsyncKeyState(17) = -32767) Then
MsgBox "La touche CTRL est enfoncée."
End If
End Sub

isabelle

Bonjour

Comment, lors du déroulement d'un programme, VBA
peut détecter que la touche Ctrl a été enfoncée ?

Il ne s'agit pas d'enclancher une procédure lors de
l'enfoncement de cette touche.

Cordialement

M41








Publicité
Poster une réponse
Anonyme