Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

VBA et touche verrouillage majuscule

13 réponses
Avatar
Proust Michel
bonjour à tous
dans une macro VBA, je voudrais lancer :
traitement A si clic bouton B
traitement Z si clic bouton B avec verrouillage majuscule activé (la touche
avec un petit cadenas fermé)
aussi je voudrais savoir comment déterminer que la touche verrouillage
majuscule est activée
merci d'avance pour les infos et bonne journée

10 réponses

1 2
Avatar
isabelle
bonjour Michel,

pour verifier si la touche VerrMajuscule est acivé :

Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type

Private Declare Function GetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long

Dim tKB As KeyboardBytes

Public Function KeyMaj_IsON() As Boolean
If GetKeyboardState(tKB) Then KeyMaj_IsON = tKB.kbByte(VK_CAPITAL)
End Function

Sub test()
If KeyMaj_IsON Then macroA Else: macroB: End If
End Sub

isabelle

Proust Michel a écrit :
bonjour à tous
dans une macro VBA, je voudrais lancer :
traitement A si clic bouton B
traitement Z si clic bouton B avec verrouillage majuscule activé (la touche
avec un petit cadenas fermé)
aussi je voudrais savoir comment déterminer que la touche verrouillage
majuscule est activée
merci d'avance pour les infos et bonne journée





Avatar
isabelle
correction :

Sub test()
If KeyMaj_IsON Then macroA Else: macroB
End Sub

isabelle

isabelle a écrit :
bonjour Michel,

pour verifier si la touche VerrMajuscule est acivé :

Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type

Private Declare Function GetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long

Dim tKB As KeyboardBytes

Public Function KeyMaj_IsON() As Boolean
If GetKeyboardState(tKB) Then KeyMaj_IsON = tKB.kbByte(VK_CAPITAL)
End Function

Sub test()
If KeyMaj_IsON Then macroA Else: macroB: End If
End Sub

isabelle

Proust Michel a écrit :
bonjour à tous
dans une macro VBA, je voudrais lancer :
traitement A si clic bouton B
traitement Z si clic bouton B avec verrouillage majuscule activé (la
touche avec un petit cadenas fermé)
aussi je voudrais savoir comment déterminer que la touche
verrouillage majuscule est activée
merci d'avance pour les infos et bonne journée






Avatar
FFO
Salut à toi

Tu peux utiliser une cellule (A1 dans ma proposition) dans laquelle au grés
de l'activation de la touche de verrouillage la lettre "M" ou "m" sera
intégrée avec ces 2 codes :

Sub TestLock()

Application.OnKey "{CAPSLOCK}", "Verrouillage"

End Sub

Sub Verrouillage()
If Workbooks("Document.xls").Sheets("Feuil1").Range("A1") = "m" Then
Workbooks("Document").Sheets("Feuil1").Range("A1") = "M"
Else
Workbooks("Document.xls").Sheets("Feuil1").Range("A1") = "m"
End If
End Sub

avec dans le ThisWorkbook ces lignes :

Private Sub Workbook_Open()
Run ("TestLock")
End Sub

Il faut juste actualiser la cellule du "M" ou "m" en fonction de l'état
verrouilage Majuscule ou minuscule actif à l'ouverture du document

La manipulation ensuite de la touche verrouillage actualisera
automatiquement cette cellule

Reste à mettre pour tes boutons ceci :

If Workbooks("Document.xls").Sheets("Feuil1").Range("A1") = "m" Then
Run("traitement A")
Else
Run("traitement Z")
End If

Ce n'est pas trés élégant mais fonctionnel à défaut d'une autre solution

Actualises cette partie :

Workbooks("Document.xls").Sheets("Feuil1").Range("A1")

Du nom de ton document de ton onglet et cellule qui auront ce paramètre

Fais des essais et dis moi !!!!
Avatar
FFO
Salut isabelle

Trés impressionné par ta proposition je me suis empressé de l'essayer
toujour désireux d'apprendre
Mais hélas minuscule ou Majuscule j'obtiens toujours le même résultat
Je n'ai fais pourtant qu'un stricte copier/coller de tes lignes
Peux tu m'en dire plus !!!!!

Merci à toi
Avatar
Proust Michel
merci pour les infos je vais essayer de mettre ça en pratique !?!?
bonne journée

"isabelle" a écrit dans le message de news:

bonjour Michel,

pour verifier si la touche VerrMajuscule est acivé :

Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type

Private Declare Function GetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long

Dim tKB As KeyboardBytes

Public Function KeyMaj_IsON() As Boolean
If GetKeyboardState(tKB) Then KeyMaj_IsON = tKB.kbByte(VK_CAPITAL)
End Function

Sub test()
If KeyMaj_IsON Then macroA Else: macroB: End If
End Sub

isabelle

Proust Michel a écrit :
bonjour à tous
dans une macro VBA, je voudrais lancer :
traitement A si clic bouton B
traitement Z si clic bouton B avec verrouillage majuscule activé (la
touche avec un petit cadenas fermé)
aussi je voudrais savoir comment déterminer que la touche verrouillage
majuscule est activée
merci d'avance pour les infos et bonne journée






Avatar
isabelle
salut Ffo,

voici le fichier dans lequel j'ai fais le test :
http://cjoint.com/?fbfIPBKaNR

isabelle

FFO a écrit :
Salut isabelle

Trés impressionné par ta proposition je me suis empressé de l'essayer
toujour désireux d'apprendre
Mais hélas minuscule ou Majuscule j'obtiens toujours le même résultat
Je n'ai fais pourtant qu'un stricte copier/coller de tes lignes
Peux tu m'en dire plus !!!!!

Merci à toi




Avatar
FFO
Merci beaucoup isabelle

Aprés analyse ces lignes présentes dans ton fichier ne figurent pas dans ta
proposition :

Option Explicit

Private Const VK_CAPITAL As Long = &H14

D'où la difficulté que j'ai rencontré pour faire la fonctionner correctement

Je capitalise

Merci encore
Avatar
Proust Michel
ça marche bien merci pour l'aide
pour info est-il possible d'avoir accès à la barre d'état dans Excel ?
bonne journée et bon pont !
"isabelle" a écrit dans le message de news:
%
correction :

Sub test()
If KeyMaj_IsON Then macroA Else: macroB
End Sub

isabelle

isabelle a écrit :
bonjour Michel,

pour verifier si la touche VerrMajuscule est acivé :

Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type

Private Declare Function GetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
Private Declare Function SetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long

Dim tKB As KeyboardBytes

Public Function KeyMaj_IsON() As Boolean
If GetKeyboardState(tKB) Then KeyMaj_IsON = tKB.kbByte(VK_CAPITAL)
End Function

Sub test()
If KeyMaj_IsON Then macroA Else: macroB: End If
End Sub

isabelle

Proust Michel a écrit :
bonjour à tous
dans une macro VBA, je voudrais lancer :
traitement A si clic bouton B
traitement Z si clic bouton B avec verrouillage majuscule activé (la
touche avec un petit cadenas fermé)
aussi je voudrais savoir comment déterminer que la touche verrouillage
majuscule est activée
merci d'avance pour les infos et bonne journée








Avatar
isabelle
bonjour Michel,

Proust Michel a écrit :
ça marche bien merci pour l'aide
pour info est-il possible d'avoir accès à la barre d'état dans Excel ?



oui, voici un exemple d'utilisation de la propriété| |StatusBar et
|DisplayStatusBar| (extrait de l'aide) :

Cet exemple montre comment imposer le texte « Please be patient... » à
la barre d'état avant l'ouverture du classeur Large.xls, puis rétablir
le texte par défaut.

|oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.*StatusBar* = "Please be patient..."
Workbooks.Open filename:="LARGE.XLS"
Application.*StatusBar* = False
Application.DisplayStatusBar = oldStatusBar

isabelle
|
Avatar
Ael Rowen Terence
"isabelle" a écrit dans le message de groupe de discussion :

bonjour Michel,




|oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.*StatusBar* = "Please be patient..."
Workbooks.Open filename:="LARGE.XLS"
Application.*StatusBar* = False
Application.DisplayStatusBar = oldStatusBar



Bonjour, et pardon de poser une question de néophyte :
Mais que signifie les étoiles dans l'expression : "
Application.*StatusBar*" ?
1 2