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 :

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

SetCapsLock CapsLockOn

Et si vous souhaitez passer le clavier en minuscules, tapez plutôt :

SetCapsLock CapsLockOff
Note
Le code VB ci-dessus n'a pas d'effet sur la lumière "Caps Lock" du clavier.