Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
950 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Détection des touches

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VBA] Détection des touches

n°1954360
astik89
Posté le 01-01-2010 à 13:41:14  profilanswer
 

Bonjour,
 
dans un userform je cherche à détecter lorsque l'utilisateur appuie sur certaines touche pour pouvoir y lier une action (notamment Esc pour quitter et Enter pour valider).
 
J'ai trouvé qu'il fallait utiliser keypress, keydown ou keyup.
 
Seulement ça ne fonctionne pas.
J'ai mise ce code dans un userform, et il ne se passe strictement rien.

Code :
  1. Option Explicit
  2. Private Sub CommandButton1_Click()
  3.     Unload Me
  4. End Sub
  5. Private Sub UserForm_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  6.     MsgBox Chr(KeyAscii)
  7. End Sub

mood
Publicité
Posté le 01-01-2010 à 13:41:14  profilanswer
 

n°1954363
kiki29
Posté le 01-01-2010 à 13:51:02  profilanswer
 
n°1954366
astik89
Posté le 01-01-2010 à 14:12:39  profilanswer
 

Merci.
Je connais déjà ce topic très bien fait.
 
J'ai continué de chercher et j'ai trouvé qu'il fallait mettre la propriété keypreview du userform à true.
 
Mon problème, maintenant, c'est que je n'ai pas cette propriété.
 
PS: je suis sous Office 2007 avec VB6.3

n°1954383
kiki29
Posté le 01-01-2010 à 17:17:42  profilanswer
 

re, tu mélanges VB6 et VBA : KeyPreview n'est disponible que sous VB6 ( Visual Studio 6 ) et pas VBA
VBA ( VB6.3 ) étant une déclinaison parcellaire de VB6 adapté à l'environnement MS Office


Message édité par kiki29 le 01-01-2010 à 17:22:01
n°1954385
astik89
Posté le 01-01-2010 à 17:30:11  profilanswer
 

OK
Donc si j'ai compris, keyprevew n'existe pas en VBA.
Et, la détection de touches ne peut se faire que dans des contrôles, pas dans le userform directement.

n°1954412
kiki29
Posté le 02-01-2010 à 06:27:02  profilanswer
 

Re,


Option Explicit
 
Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
   Select Case KeyCode
      Case vbKeyF1: MsgBox "F1"
      Case vbKeyF2: MsgBox "F2"
   End Select
End Sub

n°1954469
astik89
Posté le 02-01-2010 à 16:51:01  profilanswer
 

Bonjour,
ton code ne fonctionne que s'il n'y a pas de controls dans le USF.
Par contre dès qu'on met un txtbox ou un commandbutton, il ne fonctionne plus.
 
Du coup, mis ce code pour chacun de mes contrôles (en remplacant UserForm par le Nom du control).
 
Merci quand même


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [VBA] Détection des touches

 

Sujets relatifs
Modifier une propriété d'un CommandButton par VBAVBA ACCESS
[VBA] Boucle sur variablescomparaison de valeur sur VBA
[VBA] Worksheet_Change[VBA]- passer la ligne en dessous
[Excel VBA] Lister les noms de plages de cellules et leurs coordonnéesBesoin d'aide en VBA
[VB/VBA/VBS] Mauvaise détection de plage. 
Plus de sujets relatifs à : [VBA] Détection des touches


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR