OVH Cloud OVH Cloud

Pavé num sur portable

4 réponses
Avatar
EliotNaiss
bonjour à tous,
je travaille sur un portable, et pour la saisie dans un userform, je dois
activer le pavé numérique.
Est-il possible à Excel de vérifier qd le focus arrive sur un champs de
saisie qui doit etre en numérique, d'activer automatiquement ce pavé s'il ne
l'est pas ? et pour pousser plus loin qu'il le désactive qd on le quitte ??
Merci par avance.
Eliot

4 réponses

Avatar
Jacques93
Bonjour EliotNaiss,

Tu peux essayer ceci (OK sous NT/2000/XP, pas testé sur portable, ni W9x) :

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 MapVirtualKey Lib "user32" _
Alias "MapVirtualKeyA" _
(ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer

Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const VK_NUMLOCK = 144


Private Sub TextBox1_Enter()
SetNumlock True
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
SetNumlock False
End Sub

Private Sub SetNumlock(bOn As Boolean)
Dim NumState As Integer

NumState = GetKeyState(VK_NUMLOCK)
If (NumState = 0 And bOn = True) Or (NumState = 1 And bOn = False)
Then
keybd_event vbKeyNumlock, _
MapVirtualKey(vbKeyNumlock, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event vbKeyNumlock, _
MapVirtualKey(vbKeyNumlock, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End Sub


bonjour à tous,
je travaille sur un portable, et pour la saisie dans un userform, je dois
activer le pavé numérique.
Est-il possible à Excel de vérifier qd le focus arrive sur un champs de
saisie qui doit etre en numérique, d'activer automatiquement ce pavé s'il ne
l'est pas ? et pour pousser plus loin qu'il le désactive qd on le quitte ??
Merci par avance.
Eliot





--
Cordialement,

Jacques.

Avatar
EliotNaiss
Bonjour et merci Jacques.
Cela marche très bien sur mon portable, mais je suis un peu couillon, car je
me suis trompé, je voulais activer la majuscule, car si je demande à mes
collègues de saisir le numérique ailleurs que sur les chiffres en blanc (par
opposition à ceux en bleu), je vais me faire botter en touche !!...(rires).
Merci quand même de la promptitude.
A bientot ?
Cordialement
Eliot
"Jacques93" a écrit dans le message de news:
O9Sa$
Bonjour EliotNaiss,

Tu peux essayer ceci (OK sous NT/2000/XP, pas testé sur portable, ni W9x)
:

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 MapVirtualKey Lib "user32" _
Alias "MapVirtualKeyA" _
(ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer

Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const VK_NUMLOCK = 144


Private Sub TextBox1_Enter()
SetNumlock True
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
SetNumlock False
End Sub

Private Sub SetNumlock(bOn As Boolean)
Dim NumState As Integer

NumState = GetKeyState(VK_NUMLOCK)
If (NumState = 0 And bOn = True) Or (NumState = 1 And bOn = False)
Then
keybd_event vbKeyNumlock, _
MapVirtualKey(vbKeyNumlock, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event vbKeyNumlock, _
MapVirtualKey(vbKeyNumlock, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End Sub


bonjour à tous,
je travaille sur un portable, et pour la saisie dans un userform, je dois
activer le pavé numérique.
Est-il possible à Excel de vérifier qd le focus arrive sur un champs de
saisie qui doit etre en numérique, d'activer automatiquement ce pavé s'il
ne l'est pas ? et pour pousser plus loin qu'il le désactive qd on le
quitte ??
Merci par avance.
Eliot



--
Cordialement,

Jacques.



Avatar
Jacques93
Bonjour Eliot Naisse,

Alors, peut être ceci ?

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 MapVirtualKey Lib "user32" _
Alias "MapVirtualKeyA" _
(ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer

Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const VK_CAPSLOCK = 20
Private Const VK_SHIFT = 16

Private Sub TextBox1_Enter()
SetCapsLock True
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
SetCapsLock False
End Sub


Private Sub SetCapsLock(bOn As Boolean)
Dim CapsState As Integer

CapsState = GetKeyState(VK_CAPSLOCK)
' Si CapsLock fonctionne comme une bascule
If (CapsState = 0 And bOn = True) Or (CapsState = 1 And bOn = False)
Then
keybd_event vbKeyCapital, _
MapVirtualKey(vbKeyCapital, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event vbKeyCapital, MapVirtualKey(vbKeyCapital, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
' Si CapsLock est désactivé par Shift
If CapsState = 1 And bOn = False Then
keybd_event vbKeyShift, _
MapVirtualKey(vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event vbKeyShift, MapVirtualKey(vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End Sub

Bonjour et merci Jacques.
Cela marche très bien sur mon portable, mais je suis un peu couillon, car je
me suis trompé, je voulais activer la majuscule, car si je demande à mes
collègues de saisir le numérique ailleurs que sur les chiffres en blanc (par
opposition à ceux en bleu), je vais me faire botter en touche !!...(rires).
Merci quand même de la promptitude.
A bientot ?


--
Cordialement,

Jacques.

Avatar
EliotNaiss
Bonjour Jacques,
hé bien on peux dire que tu as mis le doigt dessus, c'est pile ce que je
voulais !!
Un grand merci.
Cordialement
Eliot
"Jacques93" a écrit dans le message de news:
%
Bonjour Eliot Naisse,

Alors, peut être ceci ?

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 MapVirtualKey Lib "user32" _
Alias "MapVirtualKeyA" _
(ByVal wCode As Long, ByVal wMapType As Long) As Long

Private Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Integer

Private Const KEYEVENTF_KEYUP = &H2
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const VK_CAPSLOCK = 20
Private Const VK_SHIFT = 16

Private Sub TextBox1_Enter()
SetCapsLock True
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
SetCapsLock False
End Sub


Private Sub SetCapsLock(bOn As Boolean)
Dim CapsState As Integer

CapsState = GetKeyState(VK_CAPSLOCK)
' Si CapsLock fonctionne comme une bascule
If (CapsState = 0 And bOn = True) Or (CapsState = 1 And bOn = False)
Then
keybd_event vbKeyCapital, _
MapVirtualKey(vbKeyCapital, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event vbKeyCapital, MapVirtualKey(vbKeyCapital, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
' Si CapsLock est désactivé par Shift
If CapsState = 1 And bOn = False Then
keybd_event vbKeyShift, _
MapVirtualKey(vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or 0, 0

keybd_event vbKeyShift, MapVirtualKey(vbKeyShift, 0), _
KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
End If
End Sub

Bonjour et merci Jacques.
Cela marche très bien sur mon portable, mais je suis un peu couillon, car
je me suis trompé, je voulais activer la majuscule, car si je demande à
mes collègues de saisir le numérique ailleurs que sur les chiffres en
blanc (par opposition à ceux en bleu), je vais me faire botter en touche
!!...(rires).
Merci quand même de la promptitude.
A bientot ?


--
Cordialement,

Jacques.