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

Détection de touche enfoncée

8 réponses
Avatar
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

8 réponses

Avatar
isabelle
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




Avatar
isabelle
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




Avatar
Fredo P.
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




Avatar
isabelle
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








Avatar
isabelle
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








Avatar
Fredo P.
"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.


Avatar
M41
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




Avatar
isabelle
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