activer touche verr Majusc+voyant à l'ouverture du fichier
Le
Thierry K
Bonjour à toutes et à tous
je souhaite que la touche verr maj. soit activée lors de l'ouverture du
fichier.
j'ai trouvé une macro qui marche mais le voyant n'est pas en cohérence avec
la touche
voir ci dessous
auriez vous une solution pour que le voyant soit allumé lorsque le verr
majuscule est activé
et eteind le voyant lorsque la saisie est en minuscule.
merci d'avance pour votre aide
excel 2003 win XP Pro
Thierry K
code trouvé avec google donné par Papou
'Fonction état d'une touche
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As
Integer
'Fonction lire état des touches clavier
Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As
Long
'Fonction définir état des toucvhes clavier
Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As
Long
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
'*** Debut *************
'constante touche majuscules
Const VK_CAPITAL = &H14
'verr num
Const VK_NUMLOCK = &H90
'arrêt défil
Const VK_SCROLL = &H91
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
'Macro de désactivation touje MAJ
Public Sub DesactiveMAJ()
'si la touche MAJ est active
If GetKeyState(VK_CAPITAL) = 1 Then
'récupérer l'état actuel des touches clavier (pour utilisation éventuelle)
GetKeyboardState KbOld
'appel de turnooff pour la touche MAJ
TurnOff VK_CAPITAL
'si la touche MAJ n'est pas active on affiche un message d'info
Else: MsgBox "La touche MAJ n'est pas active", vbInformation, "MAJ non
activée """
End If
End Sub
'Macro d'acitvation de MAJ
Public Sub ActiveMAJ()
'si la touche MAJ n'est pas active
If GetKeyState(VK_CAPITAL) = 0 Then
'récupérer l'état actuel des touches clavier (pour utilisation éventuelle)
GetKeyboardState KbOld
'appel de turnon pour la touche MAJ
TurnOn VK_CAPITAL
'sinon on affiche un message d'info
Else: MsgBox "La touche MAJ est déjà active", vbInformation, "MAJ activée"
End If
End Sub
'routine de désactivation de touche (prend en paramètre l'id de la touche)
Public Sub TurnOff(vkKey As Long)
'appel de la fonction pour lire l'état actuel des touches
GetKeyboardState kbArray
'définition de la valeur 0 (zéro) pour la désactivation
kbArray.kbByte(vkKey) = 0
'définition de l'état du clavier
SetKeyboardState kbArray
End Sub
'routin d'activation de touche (prend en paramètre l'id de la touche)
Public Sub TurnOn(vkKey As Long)
'appel de la fonction pour lire l'état actuel des touches
GetKeyboardState kbArray
'définition de la valeur 1 (un) pour l'activation
kbArray.kbByte(vkKey) = 1
'définition de l'état du clavier
SetKeyboardState kbArray
End Sub
'*** Fin code ***
je souhaite que la touche verr maj. soit activée lors de l'ouverture du
fichier.
j'ai trouvé une macro qui marche mais le voyant n'est pas en cohérence avec
la touche
voir ci dessous
auriez vous une solution pour que le voyant soit allumé lorsque le verr
majuscule est activé
et eteind le voyant lorsque la saisie est en minuscule.
merci d'avance pour votre aide
excel 2003 win XP Pro
Thierry K
code trouvé avec google donné par Papou
'Fonction état d'une touche
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As
Integer
'Fonction lire état des touches clavier
Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As
Long
'Fonction définir état des toucvhes clavier
Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As
Long
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
'*** Debut *************
'constante touche majuscules
Const VK_CAPITAL = &H14
'verr num
Const VK_NUMLOCK = &H90
'arrêt défil
Const VK_SCROLL = &H91
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
'Macro de désactivation touje MAJ
Public Sub DesactiveMAJ()
'si la touche MAJ est active
If GetKeyState(VK_CAPITAL) = 1 Then
'récupérer l'état actuel des touches clavier (pour utilisation éventuelle)
GetKeyboardState KbOld
'appel de turnooff pour la touche MAJ
TurnOff VK_CAPITAL
'si la touche MAJ n'est pas active on affiche un message d'info
Else: MsgBox "La touche MAJ n'est pas active", vbInformation, "MAJ non
activée """
End If
End Sub
'Macro d'acitvation de MAJ
Public Sub ActiveMAJ()
'si la touche MAJ n'est pas active
If GetKeyState(VK_CAPITAL) = 0 Then
'récupérer l'état actuel des touches clavier (pour utilisation éventuelle)
GetKeyboardState KbOld
'appel de turnon pour la touche MAJ
TurnOn VK_CAPITAL
'sinon on affiche un message d'info
Else: MsgBox "La touche MAJ est déjà active", vbInformation, "MAJ activée"
End If
End Sub
'routine de désactivation de touche (prend en paramètre l'id de la touche)
Public Sub TurnOff(vkKey As Long)
'appel de la fonction pour lire l'état actuel des touches
GetKeyboardState kbArray
'définition de la valeur 0 (zéro) pour la désactivation
kbArray.kbByte(vkKey) = 0
'définition de l'état du clavier
SetKeyboardState kbArray
End Sub
'routin d'activation de touche (prend en paramètre l'id de la touche)
Public Sub TurnOn(vkKey As Long)
'appel de la fonction pour lire l'état actuel des touches
GetKeyboardState kbArray
'définition de la valeur 1 (un) pour l'activation
kbArray.kbByte(vkKey) = 1
'définition de l'état du clavier
SetKeyboardState kbArray
End Sub
'*** Fin code ***

Poser une question


Dans la feuille de code de ThisWokbook
Private Sub Workbook_Open()
TestOnOn
End Sub
Dans un module
Option Explicit
'Michel Pierron
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
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
Sub Toggle_NC(Optional NUM% = 1, Optional CAPS% = 1)
Dim o As OSVERSIONINFO
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte: GetKeyboardState keys(0)
If keys(&H90) <> NUM Then ' Turn numlock
If o.dwPlatformId = 1 Then ' -> Win95/98
keys(&H90) = NUM: SetKeyboardState keys(0)
ElseIf o.dwPlatformId = 2 Then ' -> WinNT
keybd_event &H90, &H45, &H1 Or 0, 0 ' Simulate Key Press
keybd_event &H90, &H45, &H1 Or &H2, 0 ' Simulate Key Release
End If
End If
If keys(&H14) <> CAPS Then ' Turn capslock
If o.dwPlatformId = 1 Then ' -> Win95/98
keys(&H14) = CAPS: SetKeyboardState keys(0)
ElseIf o.dwPlatformId = 2 Then ' -> WinNT
keybd_event &H14, &H45, &H1 Or 0, 0 ' Simulate Key Press
keybd_event &H14, &H45, &H1 Or &H2, 0 ' Simulate Key Release
End If
End If
End Sub
Sub TestOnOn()
Toggle_NC 1, 1
End Sub
Sub TestOnOff()
Toggle_NC 1, 0
End Sub
Sub TestOffOn()
Toggle_NC 0, 1
End Sub
Sub TestOffOff()
Toggle_NC 0, 0
End Sub
ChrisV
"Thierry K" 425c1da5$0$834$