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

activer touche verr Majusc+voyant à l'ouverture du fichier

1 réponse
Avatar
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 ***

1 réponse

Avatar
ChrisV
Bonjour Thierry K,

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" a écrit dans le message de news:
425c1da5$0$834$
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 ***