[RESOLU]KeyDown_Event - comment retourner une combinaison de touches

KeyDown_Event - comment retourner une combinaison de touches [RESOLU] - VB/VBA/VBS - Programmation

Marsh Posté le 05-11-2010 à 15:45:06    

Bonjour,
 
Premièrement je tiens à vous faire savoir que j'ai longuement recherché une solution à mon problème avant de venir vous demander conseil.
Je travail sur MS Access 2007.
 
Voici mon problème :
 
Je travail sur l'élaboration d'un formulaire tout ce qu'il y a de plus basique.
Mon problème est vraiment d'ordre fonctionnel.
 
Sur ce formulaire j'ai placé une Texte_Box.
Celle-ci à pour source un champ "Mémo" de ma base de donnée.
 
Et ce que je souhaiterais,  
c'est que l'utilisateur puisse taper son texte en incluant des retours à la ligne sans devoir passer par un CTRL+ENTER
 
En d'autres mots, je voudrais attribuer à la touche ENTER la fonction CTRL+ENTER.
 
Je me suis donc intéressé à l'évènement KeyDown de la Texte_Box concernée.

Citation :

Private Sub Texte_Box_KeyDown(KeyCode As Integer, Shift As Integer)
      MsgBox (Shift & " " & KeyCode)
End Sub


Je n'en suis pas à ma première base de donnée sous access mais je ne suis pas non plus un crack :)
 
Voici les quelques pistes que j'ai essayé :
 
Dans un premier temps avec la MsgBox() j'ai pu m'apercevoir que  
KeyCode représente la valeur de la touche saisie  
et que Shift représente le "Modifieur" enfoncé lorsqu'on appui sur la touche
 
Quand CTRL est enfoncé, Shift = 2
J'ai donc essayé ce code :

Citation :

Private Sub Texte_Box_KeyDown(KeyCode As Integer, Shift As Integer)
      If KeyCode = 13 Then
           Shift = 2
      End If
      MsgBox (Shift & " " & KeyCode)
End Sub


Sur le principe ça avait l'air aussi simple que ça... Mais finalement non :non:  
Pourtant avec ce code la MsgBox() me renvoie les même valeurs lorsque j'appuie sur ENTRER et lorsque je fais CTRL+ENTER sans le code.
 
J'ai aussi essayer un code un peu plus... sale...

Citation :

Private Sub Texte_Box_KeyDown(KeyCode As Integer, Shift As Integer)
      Dim chaine As String
      If KeyCode = 13 Then
           chaine = Me.Texte.Value
           chaine = chaine & vbCrLf
           Me.Texte.Value = chaine
      End If
      MsgBox (Shift & " " & KeyCode)
End Sub


J'obtiens bien un retour à la ligne après mon texte... Néanmoins tout le texte est sélectionné et je ne peux donc pas continuer à écrire.  
J'ai abandonné cette mauvaise idée car cela fait un traitement très lourd pour pas grand chose et ce n'est pas vraiment esthétique comme code...
 
Sur Google, j'ai vu que beaucoup parlais d'un "fameux" SendKeys().
Fameux entre guillemets car les avis divergent énormément sur la fiabilité de cette fonction.
Quoi qu'il en soit, j'ai cru comprendre qu'elle n'était plus disponible sous Access 2007 donc pas de problème...
 
Sur les mêmes conversation j'ai entendu parler d'une fonction API SendInput().
Elle remplirait apparemment les même fonctions...
Mais je n'ai trouver aucun exemple concret de son utilisation. Et je n'ai jamais eu l'occasion d'utiliser des fonctions API Windows auparavant...
Je suis donc coincé.


Message édité par BSS_Scof le 19-11-2010 à 10:36:36
Reply

Marsh Posté le 05-11-2010 à 15:45:06   

Reply

Marsh Posté le 19-11-2010 à 09:37:46    

Dans les propriétés d'une zone de texte, t'as une propriété "Effet touche Entrée"
 
de rien :o

Reply

Marsh Posté le 19-11-2010 à 10:35:05    

Ah oui en effet... Je ne l'avais pas vu, merci à toi.
Bonne journée.

Reply

Sujets relatifs:

Leave a Replay

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