Modifier l’état Majuscules/Minuscules (Caps Lock) du clavier en VBA
Peut-on forcer l’état du clavier en majuscules (ou minuscules), en VBA ?
Avant toute chose
Ce qui suit ne devrait pas servir souvent. Sur Access, il y a plusieurs autres techniques « natives » pour transformer une saisie en majuscules, elles sont traitées dans cet autre article du Grenier. Ce sont ces techniques qu’il faut privilégier, sauf cas particulier bien sûr.
Ici, il est question de forcer le passage du clavier en majuscules (la même chose que d’appuyer sur la touche Verr. MAJ – ou Caps Lock – du clavier).
Un exemple de cas spécifique, dont il a été question sur les forums du site : forcer le clavier automatiquement pour utiliser un modèle de scanner de code barre où les caractères doivent être inscrits en majuscules.
Le code
Recopiez tout le code VBA ci-dessous dans un module standard de votre base de données :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
' Fonctions API Private Declare Function GetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long ' Structure pour stocker les infos clavier Private Type KeyboardBytes kbByte(0 To 255) As Byte End Type ' Enumération pour les états de clavier Enum CapsLockOnOff CapsLockOff = 0 CapsLockOn = 1 End Enum Dim kbArray As KeyboardBytes ' --- ' CHANGEMENT D'ETAT DU CLAVIER ' --- ' Public Sub SetCapsLock(c As CapsLockOnOff) GetKeyboardState kbArray kbArray.kbByte(&H14) = c SetKeyboardState kbArray End Sub |
Tester
Dans l’événement Sur clic
d’un bouton (ou à tout autre endroit qui vous convient !), tapez ceci pour passer le clavier en majuscules :
1 |
SetCapsLock CapsLockOn |
Et si vous souhaitez passer le clavier en minuscules, tapez plutôt :
1 |
SetCapsLock CapsLockOff |