OVH Cloud OVH Cloud

Provoquer VerrNum

3 réponses
Avatar
EliotNaiss
Bonjour,
j'utilise XL2000 sur un portable.
ds un userform j'ai un textbox dans lequel je voudrais que qd je clique ds
celui-ci pour saisir
(et aussi qd l'utilisateur sort du combobox précédent avec tabulation),
que le verrouillage numérique soit activé et qu'il soit désactivé en
sortant.
J'ai essayé (MouseDown et MouseUp) comme ceci mais je n'y arrive pas !!

Private Sub txtNbCartTir_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
SendKeys "{CAPSLOCK}"
End Sub
Il faut peut-être utiliser les éléments de syntaxe Button Shift X Y , mais
comment ?
Merci de votre aide
Cordialement
Eliot

3 réponses

Avatar
michdenis
Bonjour EliotNaiss,

essaie ceci ... dans un module standard :

Et dans ton formulaire, tu appelles la macro lorsque l'événement désiré est déclenché

N.B. Je n'ai plus le nom de l'auteur original !
'--------------------------------------------------------
Option Explicit
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
'--------------------------------------------------------


Salutations!




"EliotNaiss" a écrit dans le message de news: %
Bonjour,
j'utilise XL2000 sur un portable.
ds un userform j'ai un textbox dans lequel je voudrais que qd je clique ds
celui-ci pour saisir
(et aussi qd l'utilisateur sort du combobox précédent avec tabulation),
que le verrouillage numérique soit activé et qu'il soit désactivé en
sortant.
J'ai essayé (MouseDown et MouseUp) comme ceci mais je n'y arrive pas !!

Private Sub txtNbCartTir_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
SendKeys "{CAPSLOCK}"
End Sub
Il faut peut-être utiliser les éléments de syntaxe Button Shift X Y , mais
comment ?
Merci de votre aide
Cordialement
Eliot
Avatar
EliotNaiss
Merci, pour l'instant je gère avec l'envoie de backspace si ce n'est pas
numérique, c'est mieux que rien !
je vais tester ta soluce !...

"michdenis" a écrit dans le message de news:

Bonjour EliotNaiss,

essaie ceci ... dans un module standard :

Et dans ton formulaire, tu appelles la macro lorsque l'événement désiré
est déclenché

N.B. Je n'ai plus le nom de l'auteur original !
'--------------------------------------------------------
Option Explicit
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
'--------------------------------------------------------


Salutations!




"EliotNaiss" a écrit dans le message de news:
%
Bonjour,
j'utilise XL2000 sur un portable.
ds un userform j'ai un textbox dans lequel je voudrais que qd je clique ds
celui-ci pour saisir
(et aussi qd l'utilisateur sort du combobox précédent avec tabulation),
que le verrouillage numérique soit activé et qu'il soit désactivé en
sortant.
J'ai essayé (MouseDown et MouseUp) comme ceci mais je n'y arrive pas !!

Private Sub txtNbCartTir_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
SendKeys "{CAPSLOCK}"
End Sub
Il faut peut-être utiliser les éléments de syntaxe Button Shift X Y , mais
comment ?
Merci de votre aide
Cordialement
Eliot





Avatar
michdenis
Et si c'est seulement pour mettre en majuscule le texte que l'usager saisi dans un textbox, j'avoue qu'il y a un peu plus simple !

Tu connais la fonction Ucase() et l'événement Textbox_Change
Voici un petit exemple :
'---------------------
Private Sub TextBox1_Change()

Dim Temp As String
Temp = UCase(Me.TextBox1)
Me.TextBox1 = Temp

End Sub
'---------------------


Salutations!



"EliotNaiss" a écrit dans le message de news: et$
Merci, pour l'instant je gère avec l'envoie de backspace si ce n'est pas
numérique, c'est mieux que rien !
je vais tester ta soluce !...

"michdenis" a écrit dans le message de news:

Bonjour EliotNaiss,

essaie ceci ... dans un module standard :

Et dans ton formulaire, tu appelles la macro lorsque l'événement désiré
est déclenché

N.B. Je n'ai plus le nom de l'auteur original !
'--------------------------------------------------------
Option Explicit
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
'--------------------------------------------------------


Salutations!




"EliotNaiss" a écrit dans le message de news:
%
Bonjour,
j'utilise XL2000 sur un portable.
ds un userform j'ai un textbox dans lequel je voudrais que qd je clique ds
celui-ci pour saisir
(et aussi qd l'utilisateur sort du combobox précédent avec tabulation),
que le verrouillage numérique soit activé et qu'il soit désactivé en
sortant.
J'ai essayé (MouseDown et MouseUp) comme ceci mais je n'y arrive pas !!

Private Sub txtNbCartTir_MouseUp(ByVal Button As Integer, ByVal Shift As
Integer, ByVal X As Single, ByVal Y As Single)
SendKeys "{CAPSLOCK}"
End Sub
Il faut peut-être utiliser les éléments de syntaxe Button Shift X Y , mais
comment ?
Merci de votre aide
Cordialement
Eliot