OVH Cloud OVH Cloud

Touche Majuscule

18 réponses
Avatar
JYZ
Bjr,

Je cherche a faire une macro qui detecte si la touche majuscule est active
Si active la mettre inactif
Si inactive rien

Est ce possible ?
Je ne vois pas comment

Merci

8 réponses

1 2
Avatar
JYZ
La version excel est 2003
les lignes sont bien entières ??

Cordialement

"papou" <cestpasbonprobin@çanonpluscg44_fr> a écrit dans le message de
news:Oxx$
Re
Quelle est ta version d'Excel ?
Sinon si les lignes sont bien entières (tel que je te les avaient
numérotées

dans mon post précédent), alors là je suis navré mais j'avoue qu'il s'agit
d'un mystère pour ce qui me concerne :-((
Si quelqu'un d'autre a eu une idée ?

Cordialement
Pascal

"JYZ" a écrit dans le message de
news:NnFRc.15114$
Bonjour
Merci pour le fichier.
Je viens d'essayer et j'ai le meme defaut
au lancement du fichier j'ai dans une boite
Erreur de compilation
Attendu : fin d'instruction

les 3 lignes Private sont en rouge et kbByte est surligné

Merci pour ton aide


"papou" <cestpasbonprobin@çanonpluscg44_fr> a écrit dans le message de
news:
Bonjour
C'est parti dans ta bal
Cordialement
Pascal

"JYZ" a écrit dans le message de
news:gDsRc.15057$
J'ai beau essayé je n'arrive pas.
Je veux bien recevoir un classeur
Mon adresse est : (enlever nospam)


merci beaucoup
Cordialement
Jacky



"Papou" a écrit dans le message de
news:
Re
Tout ce que je t'ai envoyé doit être placé tel quel dans l'ordre
dans




un
module *sans rien au-dessus*, sinon tu auras effectivement un
plantage.



Je l'ai testé personnellement au boulot et ça fonctionne bien
(Excel





2003
WinXP Pro)
Il faut également (et surtout) veiller aux sauts de lignes
intempestifs




mon avis c'est plus certainement ton problème)
Donc pour y voir plus clair :
'Ligne 1
Const VK_CAPITAL = &H14
'Ligne 2
Private Type KeyboardBytes
'Ligne 3
kbByte(0 To 255) As Byte
'Ligne 4
End Type
'Ligne 5
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long)
As




Integer
'Ligne 6
Private Declare Function GetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
'Ligne 7
Private Declare Function SetKeyboardState Lib "user32" (kbArray As
KeyboardBytes) As Long
'Ligne 8
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
'Ligne 9
Sub DesactiveMAJ()
'Ligne 10
GetKeyboardState KbOld
'Ligne 11
TurnOff VK_CAPITAL
'Ligne 12
End Sub
'Ligne 13
Sub ActiveMAJ()
'Ligne 14
GetKeyboardState KbOld
'Ligne 15
TurnOn VK_CAPITAL
'Ligne 16
End Sub
'Ligne 17
Private Sub TurnOff(vkKey As Long)
'Ligne 18
GetKeyboardState kbArray
'Ligne 19
kbArray.kbByte(vkKey) = 0
'Ligne 20
SetKeyboardState kbArray
'Ligne 21
End Sub
'Ligne 22
Private Sub TurnOn(vkKey As Long)
'Ligne 23
GetKeyboardState kbArray
'Ligne 24
kbArray.kbByte(vkKey) = 1
'Ligne 25
SetKeyboardState kbArray
'Ligne 26
End Sub

Ouf :-))

PS si ça ne marche toujours pas je t'envoie un classeur avec le
code





bien
placé si tu veux.
Cordialement
Pascal


"JYZ" a écrit dans le message de
news:73xQc.10510$
J'ai tout installé dans un module mais il aime pas et me fait
une






erreur
sur
l'instructon Private .... kbBytes (0 to 255)

Les 3 Private sont en rouge !!!

Je suis sous 2003 ??

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans le
message





de
news:
Oups là ! pas de panique > les API rendent heureux ;-)
Copier et coller dans un module et tester la macro
DesactiveMAJ







(dans
ton
cas)

Cordialement
Pascal

"JYZ" a écrit dans le message de
news:2jpQc.10421$
Ouh la !!!
J'installe cela comment
API pas connaître .....
Merci quand meme

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans le
message





de
news:
Bonjour
Avec des fonctions API c'est possible apparamment :
Const VK_CAPITAL = &H14
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey
As









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







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







As
KeyboardBytes) As Long
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
Sub DesactiveMAJ()
GetKeyboardState KbOld
TurnOff VK_CAPITAL
End Sub
Sub ActiveMAJ()
GetKeyboardState KbOld
TurnOn VK_CAPITAL
End Sub
Private Sub TurnOff(vkKey As Long)
GetKeyboardState kbArray
kbArray.kbByte(vkKey) = 0
SetKeyboardState kbArray
End Sub
Private Sub TurnOn(vkKey As Long)
GetKeyboardState kbArray
kbArray.kbByte(vkKey) = 1
SetKeyboardState kbArray
End Sub

Cordialement
Pascal

"JYZ" a écrit dans le message de
news:ItoQc.10401$
Bjr,

Je cherche a faire une macro qui detecte si la touche
majuscule







est
active
Si active la mettre inactif
Si inactive rien

Est ce possible ?
Je ne vois pas comment

Merci








































Avatar
papou
Bon ben ça confirme que je sèche totalement ! puisque je possède moi aussi
une version Excel 2003...
M'enfin ?
Cordialement
Pascal
"JYZ" a écrit dans le message de
news:kUFRc.15120$
La version excel est 2003
les lignes sont bien entières ??

Cordialement

"papou" <cestpasbonprobin@çanonpluscg44_fr> a écrit dans le message de
news:Oxx$
Re
Quelle est ta version d'Excel ?
Sinon si les lignes sont bien entières (tel que je te les avaient
numérotées

dans mon post précédent), alors là je suis navré mais j'avoue qu'il
s'agit


d'un mystère pour ce qui me concerne :-((
Si quelqu'un d'autre a eu une idée ?

Cordialement
Pascal

"JYZ" a écrit dans le message de
news:NnFRc.15114$
Bonjour
Merci pour le fichier.
Je viens d'essayer et j'ai le meme defaut
au lancement du fichier j'ai dans une boite
Erreur de compilation
Attendu : fin d'instruction

les 3 lignes Private sont en rouge et kbByte est surligné

Merci pour ton aide


"papou" <cestpasbonprobin@çanonpluscg44_fr> a écrit dans le message de
news:
Bonjour
C'est parti dans ta bal
Cordialement
Pascal

"JYZ" a écrit dans le message de
news:gDsRc.15057$
J'ai beau essayé je n'arrive pas.
Je veux bien recevoir un classeur
Mon adresse est : (enlever nospam)


merci beaucoup
Cordialement
Jacky



"Papou" a écrit dans le message de
news:
Re
Tout ce que je t'ai envoyé doit être placé tel quel dans l'ordre
dans




un
module *sans rien au-dessus*, sinon tu auras effectivement un
plantage.



Je l'ai testé personnellement au boulot et ça fonctionne bien
(Excel





2003
WinXP Pro)
Il faut également (et surtout) veiller aux sauts de lignes
intempestifs




mon avis c'est plus certainement ton problème)
Donc pour y voir plus clair :
'Ligne 1
Const VK_CAPITAL = &H14
'Ligne 2
Private Type KeyboardBytes
'Ligne 3
kbByte(0 To 255) As Byte
'Ligne 4
End Type
'Ligne 5
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As
Long)






As
Integer
'Ligne 6
Private Declare Function GetKeyboardState Lib "user32" (kbArray
As






KeyboardBytes) As Long
'Ligne 7
Private Declare Function SetKeyboardState Lib "user32" (kbArray
As






KeyboardBytes) As Long
'Ligne 8
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
'Ligne 9
Sub DesactiveMAJ()
'Ligne 10
GetKeyboardState KbOld
'Ligne 11
TurnOff VK_CAPITAL
'Ligne 12
End Sub
'Ligne 13
Sub ActiveMAJ()
'Ligne 14
GetKeyboardState KbOld
'Ligne 15
TurnOn VK_CAPITAL
'Ligne 16
End Sub
'Ligne 17
Private Sub TurnOff(vkKey As Long)
'Ligne 18
GetKeyboardState kbArray
'Ligne 19
kbArray.kbByte(vkKey) = 0
'Ligne 20
SetKeyboardState kbArray
'Ligne 21
End Sub
'Ligne 22
Private Sub TurnOn(vkKey As Long)
'Ligne 23
GetKeyboardState kbArray
'Ligne 24
kbArray.kbByte(vkKey) = 1
'Ligne 25
SetKeyboardState kbArray
'Ligne 26
End Sub

Ouf :-))

PS si ça ne marche toujours pas je t'envoie un classeur avec le
code





bien
placé si tu veux.
Cordialement
Pascal


"JYZ" a écrit dans le message de
news:73xQc.10510$
J'ai tout installé dans un module mais il aime pas et me fait
une






erreur
sur
l'instructon Private .... kbBytes (0 to 255)

Les 3 Private sont en rouge !!!

Je suis sous 2003 ??

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans le
message





de
news:
Oups là ! pas de panique > les API rendent heureux ;-)
Copier et coller dans un module et tester la macro
DesactiveMAJ







(dans
ton
cas)

Cordialement
Pascal

"JYZ" a écrit dans le message de
news:2jpQc.10421$
Ouh la !!!
J'installe cela comment
API pas connaître .....
Merci quand meme

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans
le









message
de
news:
Bonjour
Avec des fonctions API c'est possible apparamment :
Const VK_CAPITAL = &H14
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Declare Function GetKeyState Lib "user32" (ByVal
nVirtKey










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







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







As
KeyboardBytes) As Long
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
Sub DesactiveMAJ()
GetKeyboardState KbOld
TurnOff VK_CAPITAL
End Sub
Sub ActiveMAJ()
GetKeyboardState KbOld
TurnOn VK_CAPITAL
End Sub
Private Sub TurnOff(vkKey As Long)
GetKeyboardState kbArray
kbArray.kbByte(vkKey) = 0
SetKeyboardState kbArray
End Sub
Private Sub TurnOn(vkKey As Long)
GetKeyboardState kbArray
kbArray.kbByte(vkKey) = 1
SetKeyboardState kbArray
End Sub

Cordialement
Pascal

"JYZ" a écrit dans le message de
news:ItoQc.10401$
Bjr,

Je cherche a faire une macro qui detecte si la touche
majuscule







est
active
Si active la mettre inactif
Si inactive rien

Est ce possible ?
Je ne vois pas comment

Merci












































Avatar
JYZ
Re

Je viens de faire l'essai sur une autre machine (windows 2000) et avec un
excel 2000 = meme problème

J'espère que quelqu'un à la soluce !!!

En tout cas merci beaucoup Pascal

"papou" <cestpasbonprobin@çanonpluscg44_fr> a écrit dans le message de
news:%
Bon ben ça confirme que je sèche totalement ! puisque je possède moi aussi
une version Excel 2003...
M'enfin ?
Cordialement
Pascal
"JYZ" a écrit dans le message de
news:kUFRc.15120$
La version excel est 2003
les lignes sont bien entières ??

Cordialement

"papou" <cestpasbonprobin@çanonpluscg44_fr> a écrit dans le message de
news:Oxx$
Re
Quelle est ta version d'Excel ?
Sinon si les lignes sont bien entières (tel que je te les avaient
numérotées

dans mon post précédent), alors là je suis navré mais j'avoue qu'il
s'agit


d'un mystère pour ce qui me concerne :-((
Si quelqu'un d'autre a eu une idée ?

Cordialement
Pascal

"JYZ" a écrit dans le message de
news:NnFRc.15114$
Bonjour
Merci pour le fichier.
Je viens d'essayer et j'ai le meme defaut
au lancement du fichier j'ai dans une boite
Erreur de compilation
Attendu : fin d'instruction

les 3 lignes Private sont en rouge et kbByte est surligné

Merci pour ton aide


"papou" <cestpasbonprobin@çanonpluscg44_fr> a écrit dans le message
de




news:
Bonjour
C'est parti dans ta bal
Cordialement
Pascal

"JYZ" a écrit dans le message de
news:gDsRc.15057$
J'ai beau essayé je n'arrive pas.
Je veux bien recevoir un classeur
Mon adresse est : (enlever nospam)


merci beaucoup
Cordialement
Jacky



"Papou" a écrit dans le message de
news:
Re
Tout ce que je t'ai envoyé doit être placé tel quel dans
l'ordre







dans
un
module *sans rien au-dessus*, sinon tu auras effectivement un
plantage.



Je l'ai testé personnellement au boulot et ça fonctionne bien
(Excel





2003
WinXP Pro)
Il faut également (et surtout) veiller aux sauts de lignes
intempestifs




mon avis c'est plus certainement ton problème)
Donc pour y voir plus clair :
'Ligne 1
Const VK_CAPITAL = &H14
'Ligne 2
Private Type KeyboardBytes
'Ligne 3
kbByte(0 To 255) As Byte
'Ligne 4
End Type
'Ligne 5
Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As
Long)






As
Integer
'Ligne 6
Private Declare Function GetKeyboardState Lib "user32"
(kbArray







As
KeyboardBytes) As Long
'Ligne 7
Private Declare Function SetKeyboardState Lib "user32"
(kbArray







As
KeyboardBytes) As Long
'Ligne 8
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
'Ligne 9
Sub DesactiveMAJ()
'Ligne 10
GetKeyboardState KbOld
'Ligne 11
TurnOff VK_CAPITAL
'Ligne 12
End Sub
'Ligne 13
Sub ActiveMAJ()
'Ligne 14
GetKeyboardState KbOld
'Ligne 15
TurnOn VK_CAPITAL
'Ligne 16
End Sub
'Ligne 17
Private Sub TurnOff(vkKey As Long)
'Ligne 18
GetKeyboardState kbArray
'Ligne 19
kbArray.kbByte(vkKey) = 0
'Ligne 20
SetKeyboardState kbArray
'Ligne 21
End Sub
'Ligne 22
Private Sub TurnOn(vkKey As Long)
'Ligne 23
GetKeyboardState kbArray
'Ligne 24
kbArray.kbByte(vkKey) = 1
'Ligne 25
SetKeyboardState kbArray
'Ligne 26
End Sub

Ouf :-))

PS si ça ne marche toujours pas je t'envoie un classeur avec
le







code
bien
placé si tu veux.
Cordialement
Pascal


"JYZ" a écrit dans le message de
news:73xQc.10510$
J'ai tout installé dans un module mais il aime pas et me
fait








une
erreur
sur
l'instructon Private .... kbBytes (0 to 255)

Les 3 Private sont en rouge !!!

Je suis sous 2003 ??

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans le
message





de
news:
Oups là ! pas de panique > les API rendent heureux ;-)
Copier et coller dans un module et tester la macro
DesactiveMAJ







(dans
ton
cas)

Cordialement
Pascal

"JYZ" a écrit dans le message de
news:2jpQc.10421$
Ouh la !!!
J'installe cela comment
API pas connaître .....
Merci quand meme

"papou" <cestpasbonprobin@çanonpluscg44.fr> a écrit dans
le









message
de
news:
Bonjour
Avec des fonctions API c'est possible apparamment :
Const VK_CAPITAL = &H14
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Declare Function GetKeyState Lib "user32" (ByVal
nVirtKey










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







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







As
KeyboardBytes) As Long
Dim kbArray As KeyboardBytes, KbOld As KeyboardBytes
Sub DesactiveMAJ()
GetKeyboardState KbOld
TurnOff VK_CAPITAL
End Sub
Sub ActiveMAJ()
GetKeyboardState KbOld
TurnOn VK_CAPITAL
End Sub
Private Sub TurnOff(vkKey As Long)
GetKeyboardState kbArray
kbArray.kbByte(vkKey) = 0
SetKeyboardState kbArray
End Sub
Private Sub TurnOn(vkKey As Long)
GetKeyboardState kbArray
kbArray.kbByte(vkKey) = 1
SetKeyboardState kbArray
End Sub

Cordialement
Pascal

"JYZ" a écrit dans le message de
news:ItoQc.10401$
Bjr,

Je cherche a faire une macro qui detecte si la
touche












majuscule
est
active
Si active la mettre inactif
Si inactive rien

Est ce possible ?
Je ne vois pas comment

Merci
















































Avatar
JpPradier
Bonjour

La proc de Pascal ne marche pas chez moi non plus (Win XP Excel 2002). Essaye ça. Ca detecte juste
si activée ou pas.

j-p

Declare Function GetKeyState Lib "user32" _
(ByVal nVirtKey As Long) As Long

Sub Test()
Dim VerrNum As Boolean
VerrNum = GetKeyState(&H14)
MsgBox "Verrouillage Maj activé : " & VerrNum
End Sub
Avatar
JpPradier
Hopopop, je reprends : la proc de Pascal fonctionne mais n'agit pas sur le voyant du clavier.

j-p
Avatar
papou
Bonjour Jp
Oui effectivement j'aurai dû le préciser ;-)
Maintenant pour le reste ?
Cordialement
Pascal

"JpPradier" a écrit dans le message
de news:
Hopopop, je reprends : la proc de Pascal fonctionne mais n'agit pas sur le
voyant du clavier.


j-p


Avatar
Michel Pierron
Bonjour JTZ;
Le toggle des touches s'éffectue différemment selon l'OS ( win95/98 ou type NT);
essaie ceci:
Dans un module standard:
Option Explicit
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte _
, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As
Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As
Long

Sub Toggle_NC(Optional NUM% = 1, Optional CAPS% = 1)
Dim o As OSVERSIONINFO
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte: GetKeyboardState keys(0)
If keys(&H90) <> NUM Then ' Turn numlock
If o.dwPlatformId = 1 Then ' -> Win95/98
keys(&H90) = NUM: SetKeyboardState keys(0)
ElseIf o.dwPlatformId = 2 Then ' -> WinNT
keybd_event &H90, &H45, &H1 Or 0, 0 ' Simulate Key Press
keybd_event &H90, &H45, &H1 Or &H2, 0 ' Simulate Key Release
End If
End If
If keys(&H14) <> CAPS Then ' Turn capslock
If o.dwPlatformId = 1 Then ' -> Win95/98
keys(&H14) = CAPS: SetKeyboardState keys(0)
ElseIf o.dwPlatformId = 2 Then ' -> WinNT
keybd_event &H14, &H45, &H1 Or 0, 0 ' Simulate Key Press
keybd_event &H14, &H45, &H1 Or &H2, 0 ' Simulate Key Release
End If
End If
End Sub

Sub TestOnOn()
Toggle_NC 1, 1
End Sub

Sub TestOnOff()
Toggle_NC 1, 0
End Sub

Sub TestOffOn()
Toggle_NC 0, 1
End Sub

Sub TestOffOff()
Toggle_NC 0, 0
End Sub

MP

"JYZ" a écrit dans le message de
news:ItoQc.10401$
Bjr,

Je cherche a faire une macro qui detecte si la touche majuscule est active
Si active la mettre inactif
Si inactive rien

Est ce possible ?
Je ne vois pas comment

Merci




Avatar
JYZ
Bonjour Michel,

Je viens d'essayer et c'est OK cela fonctionne trés bien

Grand Merci à vous 2

"Michel Pierron" a écrit dans le message de
news:%23pU%
Bonjour JTZ;
Le toggle des touches s'éffectue différemment selon l'OS ( win95/98 ou
type NT);

essaie ceci:
Dans un module standard:
Option Explicit
Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' Maintenance string for PSS usage
End Type
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA"
_

(lpVersionInformation As OSVERSIONINFO) As Long
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte _
, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As
Byte) As

Long
Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As
Byte) As

Long

Sub Toggle_NC(Optional NUM% = 1, Optional CAPS% = 1)
Dim o As OSVERSIONINFO
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
Dim keys(0 To 255) As Byte: GetKeyboardState keys(0)
If keys(&H90) <> NUM Then ' Turn numlock
If o.dwPlatformId = 1 Then ' -> Win95/98
keys(&H90) = NUM: SetKeyboardState keys(0)
ElseIf o.dwPlatformId = 2 Then ' -> WinNT
keybd_event &H90, &H45, &H1 Or 0, 0 ' Simulate Key Press
keybd_event &H90, &H45, &H1 Or &H2, 0 ' Simulate Key Release
End If
End If
If keys(&H14) <> CAPS Then ' Turn capslock
If o.dwPlatformId = 1 Then ' -> Win95/98
keys(&H14) = CAPS: SetKeyboardState keys(0)
ElseIf o.dwPlatformId = 2 Then ' -> WinNT
keybd_event &H14, &H45, &H1 Or 0, 0 ' Simulate Key Press
keybd_event &H14, &H45, &H1 Or &H2, 0 ' Simulate Key Release
End If
End If
End Sub

Sub TestOnOn()
Toggle_NC 1, 1
End Sub

Sub TestOnOff()
Toggle_NC 1, 0
End Sub

Sub TestOffOn()
Toggle_NC 0, 1
End Sub

Sub TestOffOff()
Toggle_NC 0, 0
End Sub

MP

"JYZ" a écrit dans le message de
news:ItoQc.10401$
Bjr,

Je cherche a faire une macro qui detecte si la touche majuscule est
active


Si active la mettre inactif
Si inactive rien

Est ce possible ?
Je ne vois pas comment

Merci








1 2