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 :

Mise à jour zone de liste en fonction d'un champ texte


Sujet :

IHM

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 103
    Points : 60
    Points
    60
    Par défaut Mise à jour zone de liste en fonction d'un champ texte
    Bonjour,

    j'espère que mon titre est assez explicite

    je vous expose ma question:
    j'ai créé un formulaire de recherche. Dans ce formulaire de recherche j'ai une liste de déroulante qui m'affiche le nom des clients dans la base (en supprimant les doublons). L'utilisateur sélectionne le client et clique sur un bouton rechercher qui affiche toutes les offres correspondantes au client sélectionné. Aucun problème jusque là!

    je souhaite avoir une zone de texte dans laquelle les utilisateurs saisissent les 1ères lettres d'un client qu'ils recherchent et qu'une liste de mes clients dans ma base se filtre en fonction des lettres saisies.

    Je pense faire ça en vba dans la procédure After_Update mais je ne sais pas du tout comment procéder.

    Merci de votre aide.
    Maxime

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Il faut recomposer la source de la zone liste.

    Donc techniquement il te faut :

    Créer une chaine SQL du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql="Select Nom From Client Where Nom Like """ & Me.ZoneTexte & "*""";"
    Puis affecter cette nouvelle chaine à la source.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.zoneliste.rowsource = sql
    Pour que cela fonctionne à chaque appuie sur une touche utilise l'événement Sur Touche Enfoncée ou un événement de ce type.

    CONSEIL : Sur une petite application avec peu de données c'est sympatique, sur des bases avec de gros volumes ça va sentir la chevrotine (surtout si tu as un utilisateur-chasseur ou un chasseur-utilisateur).

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Bonjour loufab,

    j'essaye d'adapter ton code à mon formulaire.
    Malheureusement je n'ai pas réussi à faire fonctionner tout cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub resultat_KeyDown(KeyCode As Integer, Shift As Integer)
    sql = "SELECT nclient FROM [Modèle V13 Requête] Where nclient Like """ & Me.recherche & "*"";"
    Me.resultat.RowSource = sql
    End Sub
    voila le code qui s'exécute à chaque appuie sur une touche.
    Ma zone de liste resultat à pour source la requête sql qui affiche le nom du client (nclient) en fonction de ce qui ai tapé dans la zone de texte recherche.

    Je ne comprends pas pourquoi cela ne fonctionne pas.

    Merci de ton aide,
    Maxime

  4. #4
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    Bonsoir,

    essaies cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT nclient FROM [Modèle V13 Requête] Where nclient Like """ & Me.recherche & "*""";"

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par Frank Voir le message
    Bonsoir,

    essaies cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT nclient FROM [Modèle V13 Requête] Where nclient Like """ & Me.recherche & "*""";"
    Bonjour,
    merci de ta réponse Frank.

    la syntaxe de ton code correspond à cela proposée par loufab.
    je ne l'ai pas recopiée car j'ai une erreur:

    Erreur de compilation: Attendu: fin d'instruction.

    par contre en l'écrivant comme je l'ai mis au dessus aucune erreur.

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Normal quand tu as repris le code tu as omis une double-cote avant le ;.

    Le nombre de " n'est pas choisi au hasard !
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Bonsoir,

    donc logiquement, si je comprends bien, en notant ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT nclient FROM [Modèle V13 Requête] Where nclient Like """ & Me.recherche & " * """;"
    cela devrait fonctionner, j'ai rajouté la double-cote.
    pourtant toujours la même erreur de compilation...

    je bloque :/, merci de votre aide

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    La règle est de doubler le caractère pour l'insérer, dans notre cas il s'agit d'une double-cote.

    1. On ouvre la chaine par une double-cote : "
    2. On place le contenu : Select.... Like
    3. On double la double-cote pour l'insérer : ""
    4. On ferme la chaine par une double-cote : "
    5. On place l'operateur de concaténation : &
    6. puis la variable : me.recherche
    7. l'opérateur de concaténation : &
    8. On réouvre une chaine : "
    9. le joker : *
    10. On double la double-cote pour l'insérer : ""
    11. le caractère de fin de chaine SQL : ;
    12. et enfin on ferme cette chaine de caractères : "

    Ce qui donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT .... Like "" " & Me.recherche & "*"";"
    En exécution on aura cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT .... Like "ma variable*";
    Je te conseille d'utiliser la fenetre d'exécution pour controler le résultat.
    ? "SELECT .... Like "" " & Me.recherche & "*"";"

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Mars 2008
    Messages : 103
    Points : 60
    Points
    60
    Par défaut
    Après de nombreuses recherches et lectures sur Internet, notamment ce post sur le forum j'ai enfin trouvé une solution au problème.

    Merci loufab de ton explication sur les double-cote, ca m'exclaircie un peu plus.
    Merci Frank également de ta réponse.

    Le problème venait de l'oubli de .Text sur la variable de recherche.
    Une image vaut mieux qu'un long discours:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub recherche_Change()
    SQL = "Select Nom From Client Where Nom Like """ & Me.recherche.Text & "*"";"
    Me.Liste2.RowSource = SQL
    Me.Liste2.Requery
    End Sub
    Cordialement,
    Maxime

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

Discussions similaires

  1. [AC-2010] Mise à jour Zone de liste en fonction d'un champ de formulaire
    Par Tchebichef dans le forum IHM
    Réponses: 7
    Dernier message: 20/03/2013, 10h14
  2. Mise à jour zone de liste déroulante grace à un code
    Par chibredor dans le forum VBA Access
    Réponses: 10
    Dernier message: 14/08/2008, 15h43
  3. [Formulaire][00]Mise à jour zone de liste
    Par ThieBEN dans le forum IHM
    Réponses: 4
    Dernier message: 07/05/2007, 16h04
  4. [VBA]Mise à jour zone de liste
    Par zebi42 dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/03/2007, 14h34
  5. Réponses: 2
    Dernier message: 26/01/2007, 15h56

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