Touche Verr Num s'éteind

xhudi69

XLDnaute Accro
Bonsoir le Forum,

lorsque j'utilise certain fichiers EXCEL contenant des macros, à plusieurs reprises j'ai ma touche Verr Num qui s'éteind, bien sûr je ne m'en aperçois pas de suite et cela met un bazard pas possible dans mes userform, je n'ai pas trouvé de solution sur le forum, alors si quelqu'un passe par là.....:cool:

un grand merci à vous tous.
 

MichD

XLDnaute Impliqué
Re : Touche Verr Num s'éteind

Bonjour

Sans rien voir, je ne saurais te dire le pourquoi, mais tu peux appliquer ceci :

Dans le haut d'un module standard, tu copies le code suivant.
À la fin de la procédure problématique, tu ajoutes cette ligne de code :

If IsNumLockOn = False Then ToggleNumLock
Cette ligne de code va activer la touche Verr Num au besoin.




' Déclaration Variables et API
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

Private Declare Function GetVersionEx Lib "Kernel32" _
Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long

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

Private Declare Function SetKeyboardState Lib "user32" _
(lppbKeyState As Byte) As Long

Const VK_NUMLOCK = &H90
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VER_PLATFORM_WIN32_NT = 2
Const VER_PLATFORM_WIN32_WINDOWS = 1
'----------------------------------------
Function IsNumLockOn() As Boolean
Dim o As OSVERSIONINFO
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)
IsNumLockOn = keys(VK_NUMLOCK)
End Function
'----------------------------------------
Sub ToggleNumLock()
Dim o As OSVERSIONINFO
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte
GetKeyboardState keys(0)

If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then '=====Win95
keys(VK_NUMLOCK) = Abs(Not keys(VK_NUMLOCK))
SetKeyboardState keys(0)
ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then '=====WinNT
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY _
Or KEYEVENTF_KEYUP, 0
End If
End Sub
'----------------------------------------
 

Statistiques des forums

Discussions
312 380
Messages
2 087 821
Membres
103 665
dernier inscrit
gjoanou