1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 34
    Points : 19
    Points
    19

    Par défaut Appliquer un filtre automatiquement depuis une liste déroulante de choix

    Bonjour,

    Je dispose d'une base de donnée comprenant différentes adresses, dont certaines correspondent à des projets particuliers : lotissements, programmes d'ensemble....

    La base comprend un champ "programme" qui comprend une liste déroulante dans laquelle les utilisateurs indiquent le programme en question. La liste déroulante fait référence à une autre table, via une relation.

    Lorsque les utilisateurs souhaitent afficher toutes les adresses d'un programme, ils font une recherche dans le champ programme, puis appliquent un filtre. Par exemple, ils recherchent "Tartempion", ils trouvent "lotissement Tartempion" puis appliquent un filtre sur cette expression.

    J'ai également créé des requêtes pour des programmes importants. Mais il y a 200 programmes, je ne vais pas faire 200 requêtes !

    Je souhaiterai donc disposer via une requête (ou une boite modale ?) de la possibilité de choisir le programme de mon choix. Par exemple, l'utilisateur choisit dans une liste Lotissement tartemption et toutes les adresses correspondent s'affichent automatiquement.

    Par où commencer, quels conseils pouvez-vous me donner ? (je ne veux pas un état, les utilisateurs doivent pouvoir modifier le résultat)

    Je commence à maîtriser les bases d'access (relations, formulaires...) mais pas encore les macros ou le VBA.

    Merci

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 347
    Points : 15 440
    Points
    15 440

    Par défaut

    Bonjour.

    Je pense que si tu fais une liste déroulante qui présente la liste de tes programmes (basé sur la table des programmes j'imagine) et que tu fais un formulaire basé sur une requête du type :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select [TaTable].* from [TaTable]
    where [TaTable].[Programme] like "*" & [Forms]![TonForm]![TaListe] & "*"

    cela devrait répondre à ton besoin.

    La requête va afficher toutes les données de TaTable qui ont un programme dont le nom est semblable à celui choisi (opérateur Like).
    Si tu ne mets rien, toutes les données sont affichées.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 34
    Points : 19
    Points
    19

    Par défaut

    Bonjour,

    Merci pour ta réponse.

    Malheureusement, je suis encore trop débutant pour tout comprendre.

    J'ai créé un formulaire avec ma liste déroulante, puis dans la feuille de propriété de la liste du formulaire (appelé "recherche") j'ai ajouté le code suivant dans l'onglet "événement" -> après MAJ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    = select [Habitants].* from [Habitants]
    where [Habitants].[Programme] like "*" & [Forms]![recherche]![Programme] & "*"
    Bien sûr, ça ne marche pas (requête erronée) il manque une parenthèse... J'ai du me planter quelque part.. Désolé de te déranger encore, j'ai cherché sur internet mais ça ne m'a pas aidé....

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 347
    Points : 15 440
    Points
    15 440

    Par défaut

    Bonjour.

    Il faut que la source de données du formulaire utiliser pour afficher le résultat de la recherche soit la requête.

    Par contre j'ai oublié qu'il faut mettre le code suivant dans l'événement après mise à jour de ta liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.requery 'Force le formulaire courant (me.) à rafraichir son affichage.
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 34
    Points : 19
    Points
    19

    Par défaut

    Bonjour,

    Je suis désolé, ça avance mais ça ne marche pas encore bien.

    J'ai créé :
    - une requête selon le code que tu m'as indiqué
    - un formulaire (via l'assistant) avec ma liste déroulante. Dans la source du formulaire, j'ai bien mis ma requête. Et en procédure événementielle de la liste déroulante, j'ai bien mis le code me.requery

    Ce qui se passe : si je choisis le programme qui m’intéresse dans mon formulaire "liste de programme" puis que je clique sur la requête, j'ai bien un filtre qui se mets en place automatiquement - comme je veux. Par contre, je souhaiterai que je n'ai pas à cliquer sur la requête, qu'elle s'exécute toute seule.
    Si je réitère l'opération une seconde fois, cela ne marche plus. Le filtre précédent n'est pas supprimé. Il faut peut être ajouter une instruction dans la requête pour supprimer tous les filtres ?

    Merci

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 347
    Points : 15 440
    Points
    15 440

    Par défaut

    Bonjour.

    Ce n'est pas dans le champ mais dans le code associer à l'événement Après MAJ.

    Tu vas sur l'événement après MAJ de ta liste déroulante.
    Tu choisi le type Procédure Événementielle.
    Tu cliques sur le bouton [...].
    Une fois dans l'éditeur de code tu tapes
    entre le sub et le end sub.

    Désolé de ne pas l'avoir précisé.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 34
    Points : 19
    Points
    19

    Par défaut

    Merci pour la précision.

    J'avais fini par trouver à force de chercher en fait..

    Par contre, les problèmes sont toujours là :
    - la requête ne s'exécute pas seule (il faut que je clique dessus)
    - si je réitère l'opération une seconde fois, cela ne marche plus. Le filtre précédent n'est pas supprimé...

    Nom : ScreenShot001.jpg
Affichages : 30
Taille : 210,3 Ko

    Merci

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 34
    Points : 19
    Points
    19

    Par défaut

    Merci dans tous les cas pour votre aide !

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    10 347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 10 347
    Points : 15 440
    Points
    15 440

    Par défaut

    Bonjour.

    Qu'est-ce qu'il y a dans la propriété source de données de ton formulaire ?

    Si c'est le nom d'une requête, poste le SQL de la requête,

    Les listes déroulantes affichent automatiquement leur contenu (table ou requête donc je ne vois pas pourquoi tu devrais avoir à exécuter la requête à l'extérieur.
    As-tu utiliser l'assistant de création de liste déroulante ? Quand on commence, avec lui tout va généralement très bien.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Changer de page depuis une liste déroulante
    Par okoweb dans le forum jQuery
    Réponses: 9
    Dernier message: 21/08/2009, 10h58
  2. Supprimer des fichiers depuis une liste déroulante
    Par Flo88 dans le forum VBA Access
    Réponses: 7
    Dernier message: 28/03/2008, 09h14
  3. [filtre][formulaire] filter une liste déroulante
    Par efk pharos dans le forum IHM
    Réponses: 0
    Dernier message: 10/12/2007, 05h37
  4. Réponses: 12
    Dernier message: 18/10/2007, 10h34
  5. Réponses: 1
    Dernier message: 26/04/2007, 16h09

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