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 :

Ouvrir un formulaire avec un filtre automatique


Sujet :

IHM

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 99
    Points : 61
    Points
    61
    Par défaut Ouvrir un formulaire avec un filtre automatique
    Bonjour,

    Je désire créer un formulaire de mise à jour des données qui sont dans une table
    La table est du genre :
    Secteur Score
    Banques 50
    Services 40

    Je fais un formulaire sur cette table, mais selon les utilisateurs, j'aimerais que seules les données de leur secteur s'affiche.
    Je vois comment je peux faire cela si l'utilisateur utilise le clic droit pour accéder aux commandes "Filter by selection" etc
    Mais comment puis-je mettre cela automatiquement dans le code des Text Box?
    ou alors dans le code VBA à l'ouverture du formulaire?

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    je pense que tu peux t'inspirer de la

    Comment filtrer un formulaire à partir d'une valeur contenue dans une variable ?

    Dolphy

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    11 ans après, je voudrais un détail sur le sujet ^^

    Je vous mets en photo ma situation. J'ai crée un formulaire de connexion par identifiant et mot de passe et qui ouvre un menu pour administrateur ou pour utilisateur selon les droits de la personne.

    Dans ce formulaire se trouve un sous-formulaire dans lequel on trouve un résumé de tous les dossiers en cours. Pour l’administrateur, pas de souci, il a tous les droits ! Par contre, pour l'utilisateur, il ne doit voir que ses dossiers et pas ceux des autres.

    J'utilise donc le code suivant :

    Nom : forum 4-1.JPG
Affichages : 1942
Taille : 41,1 Ko

    Premier problème, je suis obligé d'ouvrir le sous-formulaire pour le filtrer.
    Second problème, j'obtiens le message suivant (j'ai volontairement caché le nom de la personne):

    Nom : forum 4-2.JPG
Affichages : 1912
Taille : 17,3 Ko

    Bref, je ne m'en sors pas.

    Pour terminer, ma première intention était un code de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "F_Utilisateur", , , "[Personnel_Liste]=" & Identifiant
    Mais je n'obtiens aucun résultat (même pas de message d'erreur, et encore moins de filtre).

    Pour que ce soit clair : le formulaire s'appelle F_Utilisateur et le sous-formulaire s'appelle F_Synthese.

    Je suis à l'écoute de tous vos conseils.

    Merci beaucoup.

  4. #4
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    Bonsoir,
    Second problème, j'obtiens le message suivant (j'ai volontairement caché le nom de la personne):
    Nom de la personne = texte, il faut mettre des guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DoCmd.OpenForm "F_Utilisateur", , , "[Personnel_Liste]='" & Identifiant & "'"
    Forms("F_Synthese").Filter =  "[Personnel_Liste]='" & Identifiant & "'"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    Pour information, on ne peut pas ouvrir un sous-formulaire comme on ouvre un formulaire, il faut donc utiliser si possible la propriété champ père / champ fils pour filtrer automatiquement.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Salut tee-grandbois

    toujours le même ^^

    bon en tout cas mon projet avance à grands pas !!

    Dis-moi, tu m'as donné deux lignes de code.
    C'est bien l'une ou l'autre ?

    Parce que vois-tu le champs "Personnel_Liste" fait partie de sous-formulaire "F_Synthese" qui lui-même est intégré au formulaire "F_Utilisateur".

    Merci

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    c'est ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "F_Utilisateur", , , "[Personnel_Liste]='" & Identifiant & "'"
    si tu ouvres F_Utilisateur en filtrant avec Personnel_Liste il y a donc bien une possibilité de créer un champ pères / champ fils entre F_Utilisateur et F_Synthese car ce contrôle est commun aux 2 objets.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    EDIT : Il me dit "Impossible de lier des formulaires indépendants"

    Je suis en train de me dire que je n'aurais même pas dû créer ce formulaire F_Synthese.

    En fait, il est crée par une requête de sélection qui vient faire la synthèse de tous les champs d'une première table et d'un champ d'une autre table puis je viens afficher les résultats comme sous-formulaire dans F_Utilisateur.

    J'aurais peut-être pu faire ça directement et j'aurais obtenu de meilleurs résultats. Mais ça avait le mérite de faire un bilan prêt pour l'exportation.

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    quelle est la requête ou la table source du formulaire F_Utilisateur ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    F_Utilisateur est un formulaire vierge que j'ai complété.


    Pour F_Synthese, c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Audit.*, Personnel.Personnel_Liste FROM Personnel INNER JOIN Audit ON Personnel.Personnel_IDpersonnel = Audit.Audit_IDAuditeur;

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    F_Utilisateur est un formulaire vierge que j'ai complété.
    complété comment ?
    si un contrôle de ce formulaire contient la valeur du contrôle Personnel_Liste, c'est le nom de ce contrôle qu'il faut mettre dans Champs pères et dans champs fils il faut mettre Personnel_Liste
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    J'ai inséré des boutons manuellement ainsi qu'une charte graphique.

    Pour terminer, j'ai inséré un sous-formulaire, "F_Synthese"

    "Personnel_Liste" est le champ d'une table contenant des noms. J'appelle ce champ dans le formulaire F_Synthese pour connaitre le nom de celui qui a réalisé l'audit. Mais je ne souhaite afficher que les audits réalisés par la personne qui s'est connectée.

    J'aimerais donc que ce sous-formulaire filtre les données.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Donc si je te suis bien, il n'y a pas de champ père champ fils dans ce formulaire.

  14. #14
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    Donc si je te suis bien, il n'y a pas de champ père champ fils dans ce formulaire.
    je cherche surtout à savoir s'il y a un contrôle qui contient l'identifiant de l'utilisateur dans le formulaire principal pour alimenter les propriétés champs pères/champs fils du sous-formulaire, car si il n'y en a pas, il faudrait en créer un.
    Pour champs fils, on sait que c'est Personnel_Liste.

    Ensuite, si le formulaire ne contient pas de données (Source contrôle vide), il n'est pas nécessaire de filtrer:
    DoCmd.OpenForm "F_Utilisateur", , ,"[Personnel_Liste]='" & Identifiant & "'"

    par contre, il faut alimenter le contrôle contenant l'identifiant utilisateur en utilisant le paramètre OpenArgs.
    L'appel du formulaire se fait ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.OpenForm "F_Utilisateur" , , , , , , Identifiant
    'ou aussi comme cela:
    DoCmd.OpenForm "F_Utilisateur" , OpenArgs:= Identifiant
    ensuite, à l'ouverture du formulaire il faut mettre ce code pour alimenter le contrôle créé pour champs pères (NomUtilisateur, par exemple)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
    Me.NomUtilisateur = Me.OpenArgs
    End Sub
    et enfin, dans champs pères du sous-formulaire, il faut mettre : NomUtilisateur
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Euh oui oui j'y pense mais il y en a un !

    Pour améliorer l'ergonomie de l'interface, l'identifiant s'inscrit en haut du formulaire "F_Utilisateur". Et ça tombe bien, c'est la même valeur que pour le champ "Personnel_Liste".

    C'est ce que fait ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'L'identifiant est enregistre
            Identifiant = DLookup("Personnel_Liste", "Personnel", "Personnel_Liste = '" & Me.TX_Identifiant.Value & "'")
    D'ailleurs si tu regardes sur l'image de mon message précédent, tu vois écrit "Prenom NOM" à droite du cartouche rouge "Gestion des audits".

    Je pourrais donc m'en servir comme un champ père, et le contrôle "Peronnel_Liste" de "F_Synthese" serait mon champ fils ?

    EDIT : Je peux taper manuellement les champs père et fils, ce que j'ai fait ! Mais le tableau obtenu est vide.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 25
    Points : 28
    Points
    28
    Par défaut
    Mais je comprends ce que tu dis :

    - F_Utilisateur comporte l'identité de la personne connectée grâce à un contrôle qui se remplit automatiquement à l'ouverture du formulaire et ça marche très bien
    - Ensuite je définis ce contrôle comme mon champs père
    - Dans F_Synthese je définis Personnel_Liste comme mon champs fils
    - Le sous-formulaire est ainsi automatiquement filtré

    Si j'ai bien compris c'est ça. Je l'ai exécuté, pas de bug signalé, mais rien ne s'affiche.

  17. #17
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    Je pourrais donc m'en servir comme un champ père, et le contrôle "Peronnel_Liste" de "F_Synthese" serait mon champ fils ?
    oui et oui (pour PerSonnel_Liste, pas pour Peronnel_Liste)
    EDIT : Je peux taper manuellement les champs père et fils, ce que j'ai fait ! Mais le tableau obtenu est vide.
    attention: ce ne sont pas des "valeurs" mais des "variables" qu'il faut taper, attention: mieux vaut éviter les espaces pour nommer les contrôles: Prenom NOM posera problème dans un champs pères/fils.
    Pour le message, "Impossible de lier des formulaires indépendants" c'est bizarre, car ce n'est pas un pré-requis d'avoir une source de données liée au formulaire. Il faudrait connaitre les propriétés du formulaire principal.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  18. #18
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    il faut être certain que les 2 contrôles sont de même type (texte ou numérique) car, à priori, cela devrait fonctionner.
    Peux-tu faire une impression d'écran du champs pères/fils ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  19. #19
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    l'impression d'écran du contrôle TX_Identifiant (propriétés Nom et Source contrôle)
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  20. #20
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 621
    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 621
    Points : 14 577
    Points
    14 577
    Par défaut
    C'est pour cela que ça ne fonctionne pas: il s'agit d'une étiquette, alors qu'il faut une zone de Texte.
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

Discussions similaires

  1. [AC-2003] Ouvrir un formulaire avec un filtre à 2 conditions.
    Par pegase23 dans le forum IHM
    Réponses: 11
    Dernier message: 11/01/2013, 23h22
  2. Ouvrir un formulaire avec 2 filtres
    Par liop49 dans le forum IHM
    Réponses: 3
    Dernier message: 19/07/2007, 15h06
  3. Ouvrir un formulaire avec onglets
    Par bozolozo dans le forum Access
    Réponses: 2
    Dernier message: 10/04/2006, 20h04
  4. ouvrir un formulaire avec le rslt d'une requête
    Par 973thom dans le forum Access
    Réponses: 4
    Dernier message: 09/09/2005, 17h51
  5. Réponses: 3
    Dernier message: 23/02/2005, 17h51

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