OVH Cloud OVH Cloud

Touche Shift

8 réponses
Avatar
David
Bonjour

Comment activer la touche Shift à l'arrivée d'un TextBox et la désactiver à
la sortie du TextBox

Merci de vos conseils

Bonne journée

David

8 réponses

Avatar
Philippe.R
Bonjour David,
Si comme je crois pouvoir le comprendre, tu souhaites obtenir une saisie exclusivement en capitales, il
sera plus simple d'utiliser quelquechose comme :

montext=ucase(textbox1.value)
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.
Préférez suivre facilement sur le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"David" <(Pas de Spam) a écrit dans le message de news:

Bonjour

Comment activer la touche Shift à l'arrivée d'un TextBox et la désactiver à
la sortie du TextBox

Merci de vos conseils

Bonne journée

David




Avatar
papou
Bonjour
Si ta problématique est de forcer la saisie en majuscules, il serait plus
simple de regarder du côté de la fonction Ucase et de l'évènement
AfetrUpdate du textbox.
Cordialement
Pascal

"David" <(Pas de Spam) a écrit dans le message
de news:
Bonjour

Comment activer la touche Shift à l'arrivée d'un TextBox et la désactiver
à
la sortie du TextBox

Merci de vos conseils

Bonne journée

David




Avatar
David
Bonjour et merci à vous deux

En fait cela n'est pas pour mettre en majuscule des lettres mais tout
simplement pour saisir (dans textBox) des chiffres sur un PC portable.

Bonne journée

David
Avatar
papou
Re
Dans ces conditions, ne s'agirait-il pas plutôt de la touche Majuscules ?
Si c'est le cas, avec une API (c/f code ci-dessous) il est possible
d'activer cette touche (ou d'autres), mais note bien que cela n'a pas
d'incidence sur l'allumage ou non du led correspondant (en tout cas pas
constaté sur un PC).
Attention aux sauts de ligne intempestifs !
La macro ActiveMaj, comme son nom l'indique, active la touche Majuscules.
Cordialement
Pascal

'****** Début du code *******
'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
'Fonction état d'une touche
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As
Integer
'Fonction lire état des touches clavier
Private Declare Function GetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
'Fonction définir état des toucvhes clavier
Private Declare Function SetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
'Macro de désactivation touje MAJ
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
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)
Private 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)
Private 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
'************************

"David" <(Pas de Spam) a écrit dans le message
de news:
Bonjour et merci à vous deux

En fait cela n'est pas pour mettre en majuscule des lettres mais tout
simplement pour saisir (dans textBox) des chiffres sur un PC portable.

Bonne journée

David






Avatar
David
En étant un peu plus clair pour un débutant !!!
Je mets ce code ou ?

J'aimerais :
A l'arrivée sur TextBox8 je veux que cela active à la sortie que cela
désactive

merci de ton aide

David
Avatar
papou
Re
Tu places le code que je t'ai fourni dans un module standard et tu utilises
les évènements Enter et Exit de ton Textbox pour appeler la procédure
d'activation ou de désactivation de la touche :
Private Sub TextBox8_Enter()
ActiveMAJ
End Sub
Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
DesactiveMAJ
End Sub.
Par contre il va falloir modifier un peu le code pour qu'il fonctionne avec
ton Textbox.
Donc tu colles plutôt ceci dans un module standard :

'*** 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
'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
'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 ***

Cordialement
Pascal


"David" <(Pas de Spam) a écrit dans le message
de news: %
En étant un peu plus clair pour un débutant !!!
Je mets ce code ou ?

J'aimerais :
A l'arrivée sur TextBox8 je veux que cela active à la sortie que cela
désactive

merci de ton aide

David




Avatar
David
super cela fonctionne

Merci papou

Bonne journée
Avatar
papou
super cela fonctionne
Tant mieux !


Bonne journée à toi aussi ;-)
Cordialement
Pascal

"David" <(Pas de Spam) a écrit dans le message
de news: %

Merci papou

Bonne journée