Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 15h00   #1
Futur Membre du Club
 
Homme Benjamin GUY
Inscription : juillet 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Benjamin GUY
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Secteur : Alimentation

Informations forums :
Inscription : juillet 2011
Messages : 32
Points : 18
Points : 18
Par défaut VERR MAJ et VERR NUM dans userform

Bonjour à tous,

Après plusieurs essais et quelques recherches sur internet, j'ai besoin de l'aide d'entre vous pour faire la chose suivante :

Dans un userform je souhaite contrôler l'appui sur les touches "VERR MAJ" et "VERR NUM" pour savoir si elles sont enfoncées ou non.

J'ai fais des essais avec des lignes de codes placées dans les procédures suivantes :
Code :
1
2
UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'et
UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
mais je n'ai pas trouvé de solution ! Toute aide et la bienvenue.

Merci à tous ceux qui ont prix le temps me lire, bon après-midi, cordialement.
modenofx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 17h28   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Bonjour
Et pourquoi faire?
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 10/12/2011, 02h42   #3
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 713
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 713
Points : 3 652
Points : 3 652
Salut, voir http://www.developpez.net/forums/d65...age-majuscule/ Post #9
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/12/2011, 10h34   #4
Futur Membre du Club
 
Homme Benjamin GUY
Inscription : juillet 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Benjamin GUY
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Secteur : Alimentation

Informations forums :
Inscription : juillet 2011
Messages : 32
Points : 18
Points : 18
Bonjour mercatog et kiki29,

Pour répondre à mercatog, le userform crée et utilisé pour demander le mot de passe à l'utilisateur du programme et les caractéres saisis sont masqués par des étoiles.

Je souhaite crée une fonction qui indique à l'utilisateur s'il est actuellement en majuscule et si le pavé numérique est allumé.

Merci pour ta réponse kiki29, le sujet que tu m'as communiqué a l'air de correspondre à mon besoin, j'essaierais ça cet après midi.

Merci pour vos réponses, bonne journée.
modenofx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 18h10   #5
Futur Membre du Club
 
Homme Benjamin GUY
Inscription : juillet 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Benjamin GUY
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Secteur : Alimentation

Informations forums :
Inscription : juillet 2011
Messages : 32
Points : 18
Points : 18
Bonsoir,

Grâce au fil que m'a transmit kiki29, j'ai reussi à afficher verr num et verr maj dans mon userform lorsque l'on fait appel à celui ci via :
Code :
Private Sub UserForm_Activate()
mais je n'arrive pas à actualiser l'affichage du userform !

L'affichage verr num et verr maj fonctionne uniquement lorsque le userform prend le focus.

Comment faire pour actualiser continuellement l'affichage du userform?

Merci à tous ceux qui ont pris le temps de me lire
modenofx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 20h29   #6
Expert Confirmé
 
Homme Philippe
ex Observeur CGG / Analyste prog.
Inscription : juin 2006
Messages : 1 713
Détails du profil
Informations personnelles :
Nom : Homme Philippe
Localisation : France, Finistère (Bretagne)

Informations professionnelles :
Activité : ex Observeur CGG / Analyste prog.

Informations forums :
Inscription : juin 2006
Messages : 1 713
Points : 3 652
Points : 3 652
Salut, via un Timer, à adapter à ton contexte

Dans un module standard baptisé mTimer
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Option Explicit
 
Private Declare Function SetTimer Lib "User32" _
                                  (ByVal hWnd As Long, ByVal nIDEvent As Long, _
                                   ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
 
Private Declare Function KillTimer Lib "User32" _
                                   (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
 
Dim TimerID As Long
 
Sub TimerOff()
    KillTimer 0, TimerID
End Sub
 
Sub TimerOn(Interval As Long)
    TimerID = SetTimer(0, 0, Interval, AddressOf Maj)
End Sub
 
Private Sub Maj()
    If NumLock = True Then UserForm1.LblNum.BackColor = vbGreen Else UserForm1.LblNum.BackColor = vbBlack
    If CapsLock = True Then UserForm1.LblCap.BackColor = vbGreen Else UserForm1.LblCap.BackColor = vbBlack
    If ScrollLock = True Then UserForm1.LblScro.BackColor = vbGreen Else UserForm1.LblScro.BackColor = vbBlack
End Sub
Pour l'UserForm 3 Labels baptisées LblNum,LblCap et LblScro

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Option Explicit
 
Private Sub UserForm_Initialize()
    If NumLock = True Then LblNum.BackColor = vbGreen Else LblNum.BackColor = vbBlack
    If CapsLock = True Then LblCap.BackColor = vbGreen Else LblCap.BackColor = vbBlack
    If ScrollLock = True Then LblScro.BackColor = vbGreen Else LblScro.BackColor = vbBlack
    TimerOn 100
End Sub
 
Private Sub UserForm_Terminate()
    TimerOff
    Unload Me
End Sub
et dans un module standard baptisé mKeyboard le code du Post #9 de http://www.developpez.net/forums/d65...age-majuscule/

Code :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Option Explicit
 
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 GetKeyState Lib "User32" (ByVal nVirtKey As Long) As _
                                     Integer
Private Declare Function MapVirtualKey Lib "User32" Alias "MapVirtualKeyA" _
                                       (ByVal wCode As Long, ByVal wMapType As Long) As Long
 
Public Const VK_NUMLOCK = &H90
Public Const VK_SCROLL = &H91
Public Const VK_CAPITAL = &H14
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
 
Public Sub SetKeyState(ByVal Key As Long, ByVal State As Boolean)
    keybd_event Key, MapVirtualKey(Key, 0), KEYEVENTF_EXTENDEDKEY Or 0, 0
    keybd_event Key, MapVirtualKey(Key, 0), KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP, 0
    If Key = 20 And State = False Then
        keybd_event 16, 0, 0, 0
        keybd_event 16, 0, 2, 0
    End If
End Sub
 
Public Property Get CapsLock() As Boolean
    CapsLock = GetKeyState(VK_CAPITAL) = 1
End Property
 
Public Property Let CapsLock(ByVal Value As Boolean)
    SetKeyState VK_CAPITAL, Value
End Property
 
Public Property Get NumLock() As Boolean
    NumLock = GetKeyState(VK_NUMLOCK) = 1
End Property
 
Public Property Let NumLock(ByVal Value As Boolean)
    SetKeyState VK_NUMLOCK, Value
End Property
 
Public Property Get ScrollLock() As Boolean
    ScrollLock = GetKeyState(VK_SCROLL) = 1
End Property
 
Public Property Let ScrollLock(ByVal Value As Boolean)
    SetKeyState VK_SCROLL, Value
End Property
Sur la feuille un bouton associé à Tst pour afficher l'UserForm
Code :
1
2
3
4
5
Option Explicit
 
Sub Tst()
    UserForm1.Show vbModal
End Sub
__________________
Pensez à Voter, d'avance merci. ( Pouces en bas à la droite de Citer )
Balisez votre code après l'avoir indenté sous Excel via Smart Indenter
Autre utilitaire : MZ Tools 3.0 VBA

Contribution : Excel / Word / PDF avec Adobe Acrobat Pro / PDFCreator 1 2
kiki29 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/12/2011, 15h17   #7
Futur Membre du Club
 
Homme Benjamin GUY
Inscription : juillet 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Benjamin GUY
Localisation : France, Seine Maritime (Haute Normandie)

Informations professionnelles :
Secteur : Alimentation

Informations forums :
Inscription : juillet 2011
Messages : 32
Points : 18
Points : 18
Bonjour kiki29,

J'ai suivi les instructions que tu m'as communiqué, ça fonctionne à merveille !

Un grand merci à toi pour ton aide et merci aussi pour tes explications aussi précises et pertinentes, je suis grand débutant en vba et j'ai juste eux quelques lignes de code à modifier pour que tout fonctionne du premier coup !

Cette fonctionnalité me tenait à coeur et grâce à toi elle est opérationnelle !

C'est super, bonne journée.
modenofx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h16.


 
 
 
 
Partenaires

Hébergement Web