Détecter si la touche MAJ est active

Le
Julien
Bonjour,

Dans une macro VB, sous Excel 2003, je souhaiterai savoir si une des
touches MAJUSCULE (SHIFT) est enfoncé ou non.
Est-ce que quelqu'un sait faire cela ?

Merci de votre aide,

Julien
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
MichDenis
Le #19891551
Bonjour Julien,

Dans le haut d'un module standard :
et tu exécutes la macro "Test"

'Déclaration des API
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Const VK_CAPITAL = &H14
'-----------------------------------------
Function Verrouille_CapsLock()
Dim CapsLockState As Boolean
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
CapsLockState = keys(VK_CAPITAL)
Verrouille_CapsLock = CapsLockState
End Function
'------------------------------------
Sub TEST()
If Verrouille_CapsLock Then
MsgBox "Ok,majuscule activée"
Else
MsgBox "Ok,minuscule activée"
End If
End Sub
'------------------------------------

"Julien"
Bonjour,

Dans une macro VB, sous Excel 2003, je souhaiterai savoir si une des
touches MAJUSCULE (SHIFT) est enfoncé ou non.
Est-ce que quelqu'un sait faire cela ?

Merci de votre aide,

Julien
Julien
Le #19891661
Merci MichDenis.

Ton code fonctionne bien, mais il surveille l'état de la touche "CAPS LOCK"
et je souhaiterais surveiller celui des touches MAJ (SHIFT).

Le même code peut fonctionner avec une "Const VK" différente correspondant à
SHIFT, non ?
Qui connait ce code ? :)

Merci,

Julien


"MichDenis" %
Bonjour Julien,

Dans le haut d'un module standard :
et tu exécutes la macro "Test"

'Déclaration des API
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Const VK_CAPITAL = &H14
'-----------------------------------------
Function Verrouille_CapsLock()
Dim CapsLockState As Boolean
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
CapsLockState = keys(VK_CAPITAL)
Verrouille_CapsLock = CapsLockState
End Function
'------------------------------------
Sub TEST()
If Verrouille_CapsLock Then
MsgBox "Ok,majuscule activée"
Else
MsgBox "Ok,minuscule activée"
End If
End Sub
'------------------------------------

"Julien"
Bonjour,

Dans une macro VB, sous Excel 2003, je souhaiterai savoir si une des
touches MAJUSCULE (SHIFT) est enfoncé ou non.
Est-ce que quelqu'un sait faire cela ?

Merci de votre aide,

Julien



MichDenis
Le #19892221
Essaie ceci :

Dans un module standard,

Déclaration des API dans le haut module
Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer
Const VK_SHIFT = 16
'----------------------------------------
Function Shift_Enfoncé() As Boolean
If GetKeyState(VK_SHIFT) = 1 Then
Shift_Enfoncé = False
Else
Shift_Enfoncé = True
End If
End Function
'---------------------------------------
Sub test()
If Shift_Enfoncé Then
MsgBox "touche ""Shift enfoncé""."
Else
MsgBox "touche ""Shift non enfoncé""."
End If
End Sub
'----------------------------------------


"Julien" #
Merci MichDenis.

Ton code fonctionne bien, mais il surveille l'état de la touche "CAPS LOCK"
et je souhaiterais surveiller celui des touches MAJ (SHIFT).

Le même code peut fonctionner avec une "Const VK" différente correspondant à
SHIFT, non ?
Qui connait ce code ? :)

Merci,

Julien


"MichDenis" %
Bonjour Julien,

Dans le haut d'un module standard :
et tu exécutes la macro "Test"

'Déclaration des API
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Const VK_CAPITAL = &H14
'-----------------------------------------
Function Verrouille_CapsLock()
Dim CapsLockState As Boolean
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
CapsLockState = keys(VK_CAPITAL)
Verrouille_CapsLock = CapsLockState
End Function
'------------------------------------
Sub TEST()
If Verrouille_CapsLock Then
MsgBox "Ok,majuscule activée"
Else
MsgBox "Ok,minuscule activée"
End If
End Sub
'------------------------------------

"Julien"
Bonjour,

Dans une macro VB, sous Excel 2003, je souhaiterai savoir si une des
touches MAJUSCULE (SHIFT) est enfoncé ou non.
Est-ce que quelqu'un sait faire cela ?

Merci de votre aide,

Julien



isabelle
Le #19892571
bonjour Julien

Private Declare Function GetKeyState Lib "user32" _
(ByVal vKey As Long) As Integer

Private Const VK_SHIFT As Long = &H10
Private Const VK_CONTROL As Long = &H11
Private Const VK_MENU As Long = &H12
Private Const VK_CAPITAL = &H14
Private Const VK_NUMLOCK = &H90
Private Const VK_SCROLL = &H91
Public Enum GetKeyStateKeyboardCodes
gksKeyboardShift = VK_SHIFT
gksKeyboardCtrl = VK_CONTROL
gksKeyboardAlt = VK_MENU

isabelle

Julien a écrit :
Merci MichDenis.

Ton code fonctionne bien, mais il surveille l'état de la touche "CAPS LOCK"
et je souhaiterais surveiller celui des touches MAJ (SHIFT).

Le même code peut fonctionner avec une "Const VK" différente correspondant à
SHIFT, non ?
Qui connait ce code ? :)

Merci,

Julien


"MichDenis" %

Bonjour Julien,

Dans le haut d'un module standard :
et tu exécutes la macro "Test"

'Déclaration des API
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Const VK_CAPITAL = &H14
'-----------------------------------------
Function Verrouille_CapsLock()
Dim CapsLockState As Boolean
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
CapsLockState = keys(VK_CAPITAL)
Verrouille_CapsLock = CapsLockState
End Function
'------------------------------------
Sub TEST()
If Verrouille_CapsLock Then
MsgBox "Ok,majuscule activée"
Else
MsgBox "Ok,minuscule activée"
End If
End Sub
'------------------------------------

"Julien"
Bonjour,

Dans une macro VB, sous Excel 2003, je souhaiterai savoir si une des
touches MAJUSCULE (SHIFT) est enfoncé ou non.
Est-ce que quelqu'un sait faire cela ?

Merci de votre aide,

Julien









Julien
Le #19894101
Bonsoir,

Merci pour vos réponse. Je parviens à tester l'état de shift ou de control
:)

Bonne soirée,

Julien



"Julien" %
Merci MichDenis.

Ton code fonctionne bien, mais il surveille l'état de la touche "CAPS
LOCK" et je souhaiterais surveiller celui des touches MAJ (SHIFT).

Le même code peut fonctionner avec une "Const VK" différente correspondant
à SHIFT, non ?
Qui connait ce code ? :)

Merci,

Julien


"MichDenis" %
Bonjour Julien,

Dans le haut d'un module standard :
et tu exécutes la macro "Test"

'Déclaration des API
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, _
ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Declare Function GetKeyboardState Lib "user32" _
(pbKeyState As Byte) As Long
Const VK_CAPITAL = &H14
'-----------------------------------------
Function Verrouille_CapsLock()
Dim CapsLockState As Boolean
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
CapsLockState = keys(VK_CAPITAL)
Verrouille_CapsLock = CapsLockState
End Function
'------------------------------------
Sub TEST()
If Verrouille_CapsLock Then
MsgBox "Ok,majuscule activée"
Else
MsgBox "Ok,minuscule activée"
End If
End Sub
'------------------------------------

"Julien"
Bonjour,

Dans une macro VB, sous Excel 2003, je souhaiterai savoir si une des
touches MAJUSCULE (SHIFT) est enfoncé ou non.
Est-ce que quelqu'un sait faire cela ?

Merci de votre aide,

Julien







Publicité
Poster une réponse
Anonyme