Microsoft 365 Vérifier état touche num

Electron24

XLDnaute Occasionnel
Bonsoir le Forum,

Après quelques recherches sur le site, j'ai trouvé une solution de modus57 du 12 Février 2014
Hélas, en le mettant en service, cela ne fonctionne pas.
Aussi, je fais appel à vos connaissances pour m'aider à trouver une solution.
Je souhaite mettre dans un formulaire l'état de la touche NUM et si possible celui de la touche
MAJUSCULE par un label qui serait vert si touches actives et noir si touches inactives.
Je vous remercie par avance de votre aide.

 

Electron24

XLDnaute Occasionnel
Bonjour Dudu2 , TooFastBoy

Merci pour cet essai Y a t il moyen d'ajouter dans le formulaire un bouton qui remplacerait l'appui sur la touche du clavier. En clair au lieu d'appuyer sur la touche du clavier, je cliquerai sur un bouton placé dans le formulaire.
De plus cela me bloque le focus, je ne peux plus sélectionner une cellule, je suis obligé de faire ALT+F4 pour reprendre la main sur ma feuille. J'ai mis vbModal est ce que cela change quelque chose ?
Bonne journée.
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
De plus cela me bloque le focus, je ne peux plus sélectionner une cellule, je suis obligé de faire ALT+F4 pour reprendre la main sur ma feuille. J'ai mis vbModal est ce que cela change quelque chose ?
Le mieux c'est de comprendre ce qu'on fait...
 
Dernière édition:

Electron24

XLDnaute Occasionnel
Re,
Ok je vois la différence.
J'ai donc corrigé mais il y a un petit hic. J'ai ouvert mon classeur puis ouvert mon formulaire en y intégrant ton formulaire. Cela fonctionne bien mais le hic c'est que pour une raison inconnue, le verrouillage num se déveirouille mais l'information n'est pas transmise sur le formulaire, le labelNumLoock reste vert. Pour les majuscules il n'y a pas d'erreur du moins pour maintenant.

Je prépare un classeur pour te le faire parvenir
PS Ton 2ème essai me convient mieux, je le mets en pratique dans mon classeur donc je joins un extrait..
Par contre dans le visual basic l'exécution reste activée même quand j'ai fermé le formulaire.
 

Pièces jointes

  • Classeur de Test.xlsm
    673.1 KB · Affichages: 3
Dernière édition:

Dudu2

XLDnaute Barbatruc
Par contre dans le visual basic l'exécution reste activée même quand j'ai fermé le formulaire.
Tu récupères que la moitié des trucs. Ça ne peut pas marcher.

Voilà le code du 2ème essai.
VB:
Option Explicit

Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'
Private UserFormIsActive As Boolean

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    UserFormIsActive = False
End Sub

Private Sub UserForm_Activate()
    UserFormIsActive = True
    
    Do While UserFormIsActive
        With Me.CommandButtonCapsLock
            If GetCapsState Then .BackColor = vbGreen Else .BackColor = vbRed
        End With
        
        With Me.CommandButtonNumLock
            If GetNumState Then .BackColor = vbGreen Else .BackColor = vbRed
        End With
        
        DoEvents
        Sleep 10
    Loop
End Sub

Compare avec ce que tu as implémenté.
Code:
'Option Explicit

Private Sub UserForm_Activate()
    UserFormIsActive = True
    
    If Range("Q2") = 1 Then LabelCapsLcok.BackColor = vbGreen Else LabelCapsLcok.BackColor = vbBlack
    If Range("Q3") = 1 Then LabelNumLock.BackColor = vbGreen Else LabelNumLock.BackColor = vbBlack
'
    Do While UserFormIsActive
        With Me.LabelCapsLcok
            If CapsLock Then .BackColor = vbGreen Else .BackColor = vbBlack
        End With

        With Me.LabelNumLock
            If NumLock Then .BackColor = vbGreen Else .BackColor = vbBlack
        End With

        DoEvents
        ' Sleep 10
    Loop
End Sub

1 - Pas d'Option Explicit. Pour accumuler des erreurs quand on ne maîtrise pas ce qu'on fait c'est l'idéal.
2 - Donc où est la déclaration de la variable UserFormIsActive ?
3 - Pas de Sleep - Idéal pour mouliner en CPU et ne laisser aucun espace pour le reste.
4 - Pas d'évènement UserForm_QueryClose, impossible d'arrêter la moulinette.
J'ai l'impression que t'as modifié à l'aveugle sans chercher à comprendre.
 

Statistiques des forums

Discussions
312 503
Messages
2 089 055
Membres
104 013
dernier inscrit
VELONDAHY Mickaël