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 :

Recherche semi-automatique liste déroulante [AC-2019]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2020
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Recherche semi-automatique liste déroulante
    Bonjour,

    Besoin : Je cherche à faire une liste déroulante avec une saisie semi-automatique : les choix de liste se mettent à jour en fonction de la saisie de l'utilisateur.
    Exemple : Pomme de terre dans une table, l'utilisateur tape "terre" et la liste se réduit à Pomme de terre.

    C'est un sujet beaucoup traité surtout sur developpz.net, j'en suis conscient ! Je suis un vrai débutant et cela fait plus d'une semaine que j'essaye des codes trouvés par-ci par là.
    Soit je n'arrive pas à adapter la fonction, soit elle me ralentit ma BD ! J'ai essayé sur le Focus, en Après Maj, le textbox avec une liste déroulante qui s'affiche : pas vraiment de succès.

    Est-ce que quelqu'un pourrait m'aider ?

    Un débutantsuraccess

    PS : Fier de mon speudo !

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 846
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 846
    Points : 7 983
    Points
    7 983
    Par défaut
    Bonjour,

    Peux-tu poster ce que tu as fait (celui qui ralentit ton application), pour amélioration s'il te plait.

    Cordialement.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Bonjour.

    Si tu veux que ta liste se réduise à la frappe il faut utiliser l'événement "sur Change" et faire la recherche sur TonChamp.Text (et pas .Value comme habituellement). .Text contient ce qui est en cours de saisie alors que .Value ne change que quand la saisie est "terminée".

    Et c'est sur que d'aller chercher les données à chaque fois prend du temps surtout si tu as beaucoup d'entrée dans ta liste.

    A+

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2020
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Je n'ai pas gardé mon essais qui faisait ralentir ma BD mais j'ai suivi exactement ce tuto :

    J'avais fait une texte box + liste déroulante.

    Je suis désolé de vous demander ça mais est-ce que vous pouvez être plus explicite Maro svp ?

    Sur la propriété Sur chargement : Vous utilisez quoi comme syntaxe pour comparer votre liste à votre base ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With Me.RecordsetClone
    .FindFirst "MonID"=" & Str(Nz(Me.Maliste,0)"
    if .NoMatch = False Then Me.Bookmark  =.Bookmark
    C'est un peu la seule façon que je connais...

    Est-ce que vous aurez un exemple de code ?

    Un débutant sur access

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Bonjour.

    Ce que tu as posté n'est pas une liste déroulante, c'est un champ texte avec un sous-formulaire pour afficher le résultat qui en plus ne se réduit pas à une seule valeur.

    Si tu veux utiliser ma solution il te faut une liste déroulante (combox) avec une source de données du genre : select [TaTableRef].[id], [TaTableRef].[TonChampTexte] from [TaTableRef] juste pour que ta liste ai quelque chose à présenter si l'utilisateur de ne tape rien.

    Dans la procédure événementielle associée à l'événement sur changement (on change) tu mets quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dim sql as string
    sql = "select [TaTableRef].[id], [TaTableRef].[TonChampTexte] from [TaTableRef]"
    sql = sql & " where [TaTableRef].[TonChampTexte] like ""*" & me.TaComboList.Text & "*""
    me.TaComboList.RowSource=sql 'Assigne la liste réduite
    Ce code va filtrer la liste pour ne présenter que les éléments qui contiennent le texte tapé.

    Ensuite une fois que l'utilisateur a fait son choix pour trouver l'enregistrement qui t'intéresse dans ton formulaire de saisie tu mets dans la procédure événementielle associée à l'événement "après mise à jour" de ta liste un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if not isnull(me.me.TaComboList) then
        me.recordset.findfisrt("[id]=" & me.TaComboList)
    end if
    Qui va te positionner directement et généralement assez rapidement sur l'enregistrement choisi.

    A+

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2020
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Eureka ! Comment vous faites pour être aussi fort ?
    Ça marche vraiment pas mal et ça fait pas ramer.

    Le seul défaut est que lorsque l'utilisateur tape dans la listebox, la liste se ferme. C'est un peu dommage, ce serait encore mieux si elle restait ouverte et se mettait à jour petit à petit. On est obligé de recliquer pour l'ouvrir avec la liste actualisée.
    Est-ce que vous auriez une solution ?

    Je vous en demande beaucoup , Merci infiniment.

    un débutant sur access

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 366
    Points : 23 834
    Points
    23 834
    Par défaut
    Bonjour.

    Eureka ! Comment vous faites pour être aussi fort ?
    1. Je répond juste aux questions dont j'ai la réponse … donc ça aide :-).
      Tu remarqueras qu'il y a plein de post dans ce forum dont je suis complètement absent.
    2. Ça fait maintenant 20 ans que j'utilises Access presque quotidiennement … ça permet d'apprendre quelques trucs de ci de là.


    A+

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    bonsoir,
    Le seul défaut est que lorsque l'utilisateur tape dans la listebox, la liste se ferme.
    essaie en ajoutant l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.TaComboList.DropDown
    à la suite du code sur ton évènement sur changement (On Change) de ta liste déroulante

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2020
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup !

    Je suis désolé de répondre si tardivement. Je n'ai pas eu de notification par mail d'une réponse.
    Tout est fonctionnel ! Je mets en résolue et merci encore !

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

Discussions similaires

  1. [XL-365] Saisie semi-automatique - Liste déroulante
    Par Cuoreconleali dans le forum Excel
    Réponses: 5
    Dernier message: 06/05/2020, 08h00
  2. Réponses: 1
    Dernier message: 13/10/2016, 09h14
  3. [XL-2007] saisie semi automatique liste déroulante
    Par Meuse55 dans le forum Excel
    Réponses: 2
    Dernier message: 23/08/2013, 14h50
  4. [AC-2003] Saisie semi automatique Liste déroulante
    Par TEnergie dans le forum Access
    Réponses: 1
    Dernier message: 13/08/2012, 15h51
  5. Recherche formulaire avec liste déroulante
    Par kimar dans le forum Access
    Réponses: 2
    Dernier message: 28/07/2006, 12h02

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