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

Détecter si la touche MAJ est active

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

5 réponses

Avatar
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" a écrit dans le message de groupe de discussion :

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
Avatar
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" a écrit dans le message de news:
%
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" a écrit dans le message de groupe de discussion :

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



Avatar
MichDenis
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" a écrit dans le message de groupe de discussion :
#
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" a écrit dans le message de news:
%
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" a écrit dans le message de groupe de discussion :

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



Avatar
isabelle
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" a écrit dans le message de news:
%

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" a écrit dans le message de groupe de discussion :

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









Avatar
Julien
Bonsoir,

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

Bonne soirée,

Julien



"Julien" a écrit dans le message de news:
%
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" a écrit dans le message de news:
%
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" a écrit dans le message de groupe de discussion :

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