IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

IHM Discussion :

Appel d'une procédure après touche Entrée dans une textbox [AC-2003]


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 148
    Points : 69
    Points
    69
    Par défaut Appel d'une procédure après touche Entrée dans une textbox
    Salut à tous !

    J'ai un formulaire multicritères contenant entre autres une textbox et un bouton de commande. Le but est de saisir quelque chose dans la textbox et, si l'utilisateur appuie sur Entrée, que la procédure BtnRech_Click du bouton soit appelée (déclenchement d'une recherche par rapport à la saisie).

    D'après mes recherches, il faut utiliser l'événement Keydown de la textbox mais je ne comprends pas quels arguments je dois y mettre. J'aurais besoin d'un exemple pour comprendre (celui de l'aide m'est très obscur ...).

    Merci pour vos réponses.

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 257
    Points : 19 407
    Points
    19 407
    Billets dans le blog
    62
    Par défaut
    Salut,

    sur entrée l'argument KeyCode=13, donc le code:
    (si tu as une textbox nommée textbox1)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub textbox1_KeyDown(KeyCode As Integer, Shift As Integer)
     
       If (KeyCode = 13) Then BtnRech_Click
     
    End Sub
    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 148
    Points : 69
    Points
    69
    Par défaut
    Merci pour ta réponse User.

    J'ai essayé et mon souci est que la procédure BtnRech_Click ne se lance pas.
    J'ai mis un msgbox juste avant dans le if pour voir si je rentrais bien dedans et la msgbox fonctionne.
    Pourquoi la procédure BtnRech_Click ne fonctionne-t-elle pas?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 148
    Points : 69
    Points
    69
    Par défaut
    J'ai continué de chercher sur le site et j'ai trouvé ce post :
    http://www.developpez.net/forums/d67...outon-textbox/

    J'ai adapté cette solution à mon code mais rien ne change ...

    Quelqu'un aurait une idée svp ? Merci.

  5. #5
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Points : 8 489
    Points
    8 489
    Par défaut


    En fait je me demande s'il ne serait pas plus judicieux d'utiliser l'évènement sur sortie du contrôle. En effet le fait de valider une saisie fait sortir le focus du contrôle et pourrait alors enclencher ta procédure de recherche. (D'autant plus que cet évènement est annulable si ta recherche n'aboutit pas).
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 148
    Points : 69
    Points
    69
    Par défaut
    Merci Jeannot45 pour ta réponse.

    Si j'utilise l'événement sur sortie du contrôle, ça me pose un problème puisque c'est un formulaire multicritères et je ne veux donc pas lancer la recherche en sortant de chaque contrôle mais seulement une fois que tous les critères ont été saisis par l'utilisateur.
    Je voulais juste pouvoir éviter aux utilisateurs fainéants (dont je fais partie) d'aller forcément cliquer sur le bouton "BtnRech" et leur permettre de déclencher la recherche en appuyant sur "Entrée" comme on le voit souvent sur le net, par exemple quand on veut faire une recherche sur Google, on saisit et on appuie sur "Entrée" au lieu de cliquer sur "Recherche Google".

    En tous cas, je n'arrive pas à comprendre pourquoi la procédure ne se lance pas et j'aimerais bien le savoir ...

  7. #7
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 257
    Points : 19 407
    Points
    19 407
    Billets dans le blog
    62
    Par défaut
    Dans ce cas utilise plutôt l'évènement afterupdate de ton textbox:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Textbox1_AfterUpdate()
     
    BtnRech_Click
     
    End Sub
    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par Shankara Voir le message
    Si j'utilise l'événement sur sortie du contrôle, ça me pose un problème puisque c'est un formulaire multicritères et je ne veux donc pas lancer la recherche en sortant de chaque contrôle mais seulement une fois que tous les critères ont été saisis par l'utilisateur.
    Je voulais juste pouvoir éviter aux utilisateurs fainéants (dont je fais partie) d'aller forcément cliquer sur le bouton "BtnRech" et leur permettre de déclencher la recherche en appuyant sur "Entrée" comme on le voit souvent sur le net, par exemple quand on veut faire une recherche sur Google, on saisit et on appuie sur "Entrée" au lieu de cliquer sur "Recherche Google".
    Une petite réflexion sur ton principe de fonctionnement, toi tu te dis je remplis tous les contrôles, et j'appuis sur la touche Entrée pour lancer le traitement. Mais est-ce que les autres utilisateurs vont faire de la même manière ?
    En effet, l'appui sur la touche entrée est souvent un reflexe. De plus ton exemple sur Google n'est pas significatif, car il n'y a qu'une saisie, ici il y en a plusieurs.

    Philippe

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 148
    Points : 69
    Points
    69
    Par défaut
    Merci User et Philippe pour votre participation.

    User, l'événement Afterupdate ne va pas m'aider plus car je voudrais que le traitement ne se lance pas forcément à la sortie de chaque contrôle, mais uniquement quand l'utilisateur l'aura décidé. S"il veut saisir un seul critère, il appuiera sur Entrée ou cliquera sur le bouton après sa saisie, mais s'il veut en entrer plusieurs, je voudrais qu'il puisse par exemple saisir dans le premier champ, appuyer sur Tab 2 fois pour accéder au 3è champ, saisir, puis appuyer sur Entrée ou cliquer sur le bouton pour lancer le traitement.
    En fait, je voudrais qu'il puisse accéder à tous les champs et lancer le traitement quand il le souhaite sans forcément avoir à utiliser la souris. C'est pourquoi j'ai besoin de Keydown.
    Au niveau de mon code qui ne fonctionne pas, je ne comprends pas pourquoi car tout me paraît bon. Ca m'étonnerait que le choix de l'événement y soit pour quelque chose ...

    Philippe,
    Une petite réflexion sur ton principe de fonctionnement, toi tu te dis je remplis tous les contrôles, et j'appuis sur la touche Entrée pour lancer le traitement. Mais est-ce que les autres utilisateurs vont faire de la même manière ?
    En effet, l'appui sur la touche entrée est souvent un reflexe. De plus ton exemple sur Google n'est pas significatif, car il n'y a qu'une saisie, ici il y en a plusieurs.
    Mais alors comment dois-je aborder ce formulaire ? Pour l'instant quand j'appuie sur Tab ou Entrée, le focus se met sur le champ de saisie suivant. Tu penses que je dois laisser les choses telles quelles et obliger l'utilisateur à cliquer sur le bouton pour lancer le traitement ?
    J'ai pris l'exemple de Google car c'est le seul que tout le monde connaît qui m'est venu à l'esprit. En fait, je veux faire comme ça parce que le logiciel que j'utilise au travail me permet de faire cela (dans un formulaire de recherche multicritères justement) et c'est très pratique. Quant aux autres utilisateurs de ce logiciel, j'ai eu l'occasion d'en observer certains et beaucoup se servent uniquement de la souris, même pour passer d'un champ à un autre (quelle perte de temps !)
    De mon point de vue de concepteur, je ne comprends toujours pas pourquoi mon code ne fonctionne pas et même si je laisse tomber cette façon de faire, j'aimerais savoir pourquoi ça ne fonctionne pas ...

  10. #10
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 257
    Points : 19 407
    Points
    19 407
    Billets dans le blog
    62
    Par défaut
    Salut,

    Quand tu appuies sur la touche entrée (sur key down) le focus se déplace vers le prochain contrôle normalement, si bien que le textbox ou tu as saisie ta valeur n'a plus le focus, ce qui explique que l'évènement KeyUp ne se déclenche pas

    D'autre part si tu mets ton code sur l'évènement key down, ta textbox ne sera pas encore mis à jour quand le code s'exécutera.

    C'est pourquoi je te proposais d'agir sur afterupdate
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 148
    Points : 69
    Points
    69
    Par défaut
    Le truc c'est que je n'utilise pas l'événement Keyup ...Je devrais ?

    P.S. : J'ai effectué des changements dans mon message précédent pendant que tu me répondais dsl

  12. #12
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 257
    Points : 19 407
    Points
    19 407
    Billets dans le blog
    62
    Par défaut
    moi aussi j'ai effectué des changements dans mon dernier message...
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    en procédant ainsi ça semble fonctionner :
    Sur l'évènement keydown du textbox écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If KeyCode = 13 Then
          MonBouton_Click
    End If
    Dans l'évènement <MonBouton_Click écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Me.MonBouton.SetFocus
    ...
    En forçant le focus sur le bouton, on force l'enregistrement des changements du textbox et puis on éxécute le code du bouton.

    Philippe

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 148
    Points : 69
    Points
    69
    Par défaut
    Merci Philben !!! Ca marche enfin !!!

    Et à toi aussi User puisque tu m'as aussi dit que c'était une histoire de focus. Après ton message, j'avais pensé sans l'écrire à un code beaucoup plus long que la solution de Philben.
    En gros, dans l'événement BeforeUpdate de la textbox, récupérer dans une variable la dernière touche frappée (je ne sais même pas si c'est faisable). Puis, dans l'événement AfterUpdate, si le contenu de ma variable était la touche Entrée, déclencher le clic du bouton (reste à savoir si cela aurait été exécuté).

    Merci encore à vous tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/09/2012, 11h51
  2. Appel d'une procédure PL/SQL contenue dans une variable
    Par daniel.lemuet dans le forum PL/SQL
    Réponses: 2
    Dernier message: 21/01/2010, 17h48
  3. touche "entrée" dans une "boite de saisie"
    Par fantomas75010 dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 29/06/2008, 15h47
  4. la touche entrée dans une Jtable
    Par grabriel dans le forum Composants
    Réponses: 3
    Dernier message: 04/06/2007, 12h16
  5. [Javascript] appui sur la touche entrée dans une textbox
    Par LE NEINDRE dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/01/2006, 11h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo