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

  1. #1
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2019
    Messages : 3
    Points : 2
    Points
    2

    Par défaut Convertir un filtre utilisateur en requête

    Bonjour,

    Je cherche un moyen de récupérer automatiquement (via VBA) le filtre appliqué par l’utilisateur d’un formulaire, sous forme d'une requête qui me permette ensuite de générer des états, formulaires, graphiques ou d’effectuer des actions d’ajout/suppression conformément à ce filtre.

    À défaut, je me contenterais de pouvoir copier (dans une table ?) les enregistrements filtrés par l'utilisateur dans le formulaire, en vue du même usage.

    Merci par avance,
    Cordialement

  2. #2
    Expert éminent

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

    Informations forums :
    Inscription : mai 2012
    Messages : 3 580
    Points : 7 244
    Points
    7 244

    Par défaut

    Bonsoir,

    Le filtre d'un formulaire peut être récupéré avec la propriété :
    Et la source avec Cordialement.
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2019
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    Bonjour.
    Merci pour votre réponse, madefemere.

    Je vais devoir être plus explicite en ce qui concerne ce qui bloque.

    En fait, j'ai réussi manuellement l'opération voulue de la façon suivante :

    1. J’ouvre le formulaire basé sur une requête A, affiché en mode feuille de données
    2. J’utilise les outils du formulaire (en en-tête des colonnes) qui me permettent d’obtenir le filtre voulu sur mes données. Appelons-le : filtre F
    3. Je transfère la chaîne de caractère du filtre F (propriété « Filter » du formulaire) à une requête B basée sur la requête A
    4. J’ouvre la requête B qui est, à ce stade, « filtrée » à l’identique du formulaire (mais que je ne peux pas utiliser comme source tel quel car alors le filtre n'est pas appliqué) et j’utilise la fonction « Filtre/Tri avancé… » pour faire apparaître le filtre F sous forme de requête.
    5. J’enregistre la requête-filtre sous le nom de requête C
    6. J’utilise la requête C comme source de divers outil (états, formulaires, requêtes actions), conformément au filtre F.

    Mon problème est maintenant d’automatiser tout cela pour que ce soit transparent pour l’utilisateur qui filtre ce qu’il veut de la requête A, puis utilise les différents outils disponibles sur la base de ce même filtre.

    Je bloque actuellement sur l’étape 5 : j'ai essayé en utilisant la commande VBA « DoCmd.RunCommand acCmdAdvancedFilterSort », mais on passe par une boîte de dialogue pour donner le nom sous lequel enregistrer la requête/filtre, ce que l'utilisateur n'est pas sensé savoir.

    En espérant que ce sera plus clair...
    Cordialement.

  4. #4
    Membre chevronné Avatar de hyperion13
    Homme Profil pro
    Calot120 - Enseignant Post Bac
    Inscrit en
    octobre 2007
    Messages
    1 363
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Calot120 - Enseignant Post Bac
    Secteur : Enseignement

    Informations forums :
    Inscription : octobre 2007
    Messages : 1 363
    Points : 2 090
    Points
    2 090

    Par défaut

    Salut
    Il serait peut être préférable de créer un form ayant pour source votre requête A, d'insérer dans le form des objets indépendants textbox, combobox pour filtrer vos données (il y a des tutos à propos des filtres sur DEV) et d'utiliser en VBA cette méthode pour capter le jeu d'enregistrements final dans votre form et de parcourir votre jeu d'enregistrement pour l'ajouter à votre table cible
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    GMT+4 - 21°19'18" S - 055°25'32" E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse est pertinente. N'oubliez pas svp de clôturer le sujet en cliquant sur

  5. #5
    Candidat au Club
    Homme Profil pro
    Enseignant
    Inscrit en
    avril 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2019
    Messages : 3
    Points : 2
    Points
    2

    Par défaut

    Bonjour.

    Votre suggestion, hyperion13, m'a fait prendre conscience de l'importance de la notion de Recordset et la lecture du très pédagogique article de Christophe Warin (https://warin.developpez.com/access/dao/?page=partie_5) m'a permis de combler quelques lacunes sur la question.

    Du coup, j'ai résolu mon problème de la façon suivante : on ajoute à la table source un champ Vrai/Faux nommé "Sélection", que l'on affiche dans le formulaire basé sur la requête A (voir ci-dessus). Après que l'on a filtré les données - et l'on peut utiliser pour cela les filtres mis à disposition pour l'utilisateur, ce qui ne gâche rien ! - on utilise le recordset du formulaire, donc la feuille de données affichées, pour cocher automatiquement le champ "Sélection" de tous les enregistrements filtrés. Ainsi, les enregistrements choisis sont automatiquement cochés dans la table source et je peux les utiliser à loisir comme nouvelle source.
    Cerise sur le gâteau, l'utilisateur peut lui-même cocher/décocher n'importe quel enregistrement affiché, ce qui l'affranchit des possibilités de filtrage pré-programmées.

    Merci de votre aide,
    Cordialement.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/04/2007, 00h41
  2. Filtre dans une requête LDAP
    Par czezko dans le forum Windows Forms
    Réponses: 3
    Dernier message: 20/04/2007, 14h37
  3. Fonction utilisateur et requête
    Par ced dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/04/2007, 10h48
  4. Filtre dans une requête
    Par pat04 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 16/02/2007, 15h28
  5. filtre dans une requête sql ?
    Par jessy212 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/09/2006, 16h29

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