[VBA] Détection des touches

Détection des touches [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 01-01-2010 à 13:41:14    

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

Reply

Marsh Posté le 01-01-2010 à 13:41:14   

Reply

Marsh Posté le 01-01-2010 à 13:51:02    

Reply

Marsh Posté le 01-01-2010 à 14:12:39    

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

Reply

Marsh Posté le 01-01-2010 à 17:17:42    

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
Reply

Marsh Posté le 01-01-2010 à 17:30:11    

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.

Reply

Marsh Posté le 02-01-2010 à 06:27:02    

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

Reply

Marsh Posté le 02-01-2010 à 16:51:01    

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed