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

Access Discussion :

Fonction recherche dans formulaire avec onglets de navigation


Sujet :

Access

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut Fonction recherche dans formulaire avec onglets de navigation
    Bonjour à tous,

    Je viens d'arriver sur ce forum, je vais donc commencer par une petite présentation. Je travaille pour une association, j'aime bien l'informatique mais je suis très loin d'être une experte. Je n'ai jamais fait de formation à part des tutoriels regardés sur internet.

    Je dois élaborer une base de données pour enregistrer le profil de personnes et pouvoir l'alimenter au fil des différents rdv.
    J'ai créé une table avec l'ensemble des informations que je souhaite recueillir.
    A parti de cette table, j'ai créé plusieurs formulaires afin de réaliser mon formulaire final.
    Ce formulaire final est un formulaire de navigation par onglet réalisé grâce à la création par assistance. J'ai créé une liste déroulante dans l'en-tête de ce formulaire finale afin de pouvoir observer les informations de chaque personne individuellement. Ma liste déroulante fonctionne très bien seulement elle ne semble pas liée à mes différents onglets car ceux-ci restent figés sur les informations de la première personne de ma table.

    Existe-t-il une solution abordable pour une novice en access (je ne maitrise absolument pas les macros) ??? N'aurais-je pas du utiliser un formulaire de navigation ???

    J'ai beau chercher une solution depuis plus d'une semaine rien ne fonctionne alors je m'en remets à vous.

    Merci d'avance pour votre aide

  2. #2
    Modérateur

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

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

    Je viens de faire quelques essais et je pense qu'il va falloir revoir ton interface et ajouter un peu de code.
    On peut filtrer (ou faire une recherche) dans un formulaire de navigation mais seulement dans le formulaire actuellement visible.
    Les autres formulaires ne sont pas accessibles quand ils ne sont pas affichés.

    On peut par code accéder au formulaire courant en faisant en VBA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.SousFormulaireNavigation.Form
    Par exemple le code ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Me.SousFormulaireNavigation.Form.Filter = "[Clef]=" & Me.ListeClef
        Me.SousFormulaireNavigation.Form.FilterOn = True
    Applique un filtre au formulaire actuellement visible et n'affiche plus que les enregistrements dont la clef est égale à la valeur choisie dans ListeClef.

    D'après ce que tu as posté, j'ai compris que tu avais plusieurs formulaires affichant des informations pour une même personne et que quand tu choisis une personne, tu veux que tous les écrans affichent ses données.

    Est-ce bien cela ?

    A+

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Bonjour

    Tout d'abord merci pour la réponse.

    Je pense que tu as bien compris le fait que j'ai plusieurs formulaires mais j'ai regroupé l'ensemble de mes formulaires dans un seul formulaire de navigation par onglet. Par conséquent, j'ai plusieurs formulaires regroupé dans un seul mais je n'ai pas de "sous-formulaire" (j'ai vu que je pouvais en créer mais j'ai procédé autrement grâce au formulaire de navigation).

    Je vais essayer de voir comment je peux appliquer ce que tu me dis sachant que je ne connais rien au VBA non plus (je pense que j'ai été très optimiste en voulant créer un truc pareil)

    Une capture d'écran afin de bien se comprendre
    Doc access.pdf

  4. #4
    Modérateur

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

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

    Si tu as plusieurs formulaires regroupés dans un seul, alors tous ces formulaires sont de fait des sous-formulaires. :-).

    Poste plutôt un image de qu'un fichier. Cela facilite la vie du lecteur qui n'a pas à télécharger ton fichier pour avoir l'info.

    Sinon, je pense que tu serais mieux servie en utilisant pas les formulaires de navigation.
    Je t'invites à aller voir la discussion
    Synchronisation des données sur formulaire de navigation
    https://www.developpez.net/forums/d1...re-navigation/

    Qui est grosso-modo sur le même sujet pour l'architecture de l'interface.

    Et la rechercher serait BEAUCOUP plus facile à implanter même si elle nécessitera quand même un peu de code.

    Si cela ne te satisfait pas, dit le.

    A+

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Merci beaucoup pour le lien, je pense effectivement que cela sera plus abordable pour moi

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Attention tu n'es quand même pas sortie du bois :-).

    Il faut implanter le code pour gérer ta recherche et c'est quand même assez simple.

    Tu vas sur ta liste en mode conception de formulaire.
    Je vais supposer que ta liste que je vais appeler lstPersonne retourne ClefPersonne (Entier Long ou Autonum), NomPrenom (Texte).
    Tu demandes d'afficher les propriétés.
    Tu choisis l'onglet événement et tu vas sur "Après Mise à Jour".
    Tu choisis Procédure Événementielle et tu appuis sur le bouton [...].
    Access va t'amener automatiquement dans l'éditeur de code VBA.
    Entre le sub et le end sub tu vas taper :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if me.lstPersonne & "" = "" then
          'La liste est vide, pas de filtre
          me.filter=""
          me.filteron=false
       else
          'Cacule et applique le filtre
          dim filtre as string 'Sert à stocker le filtre calculé
          filtre="[ClefPersonne]=" & me.lstPersonne 'Récupère la clef de la personne de la liste
          me.filter=filtre 'Indique le filtre à appliquer au formulaire courant
          me.filteron=true 'Applique le filtre
    end if
    Si le nom de ta liste est différent, il suffit de remplacer lstPersonne par son nom.
    Si la structure de ta liste est différente, il faut que tu la décrives car la syntaxe pourrait changer.

    A+

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Je vais dejà me pencher sur la première partie à construire avant d'insérer une fonction recherche et si je suis à la limite de jeter l'ordi par la fenetre je reviens demander de l'aide

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    J'ai réalisé toutes mes tables tous mes formulaires pour pouvoir mettre des sous-formulaires par la suite.

    J'ai également tenté (eh oui tenté puisque cela ne fonctionne pas) de faire des relations entre mes tables. Cependant, chaque onglet ne se met pas à jour lorsque je passe à un enregistrement suivant. Je pense donc que je n'ai pas fait les bons liens entre mes tables.

    Nom : Capture.PNG
Affichages : 578
Taille : 121,4 Ko

  9. #9
    Modérateur

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

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

    Oui cela vient de tes relations qui ne sont pas définir comme tu en as besoin.

    Je pense que toutes tes tables sont des compléments d'information reliés à une présentation.
    Si c'est bien cela tu devrais avoir

    Présentation
    No
    Autres infos

    Information Generale
    No
    NoPrésentation (entier long)
    Autre infos

    • en relation avec Présentation sur [Présentation].[No] ->[Information Generale].[NoPrésentation]



    et cela pour toutes les tables qui ne sont pas [Présentation].

    De plus je te suggère la modification suivante puisque toutes tes tables [Suivi x] semblent identiques.

    Suivi
    No
    NumSuivi (entier long vaut : 1 à 5)
    Autres champs des tables suivi (date, ressenti, ..)

    Cela réduit le nombre de tables.`
    Et à part que d'économiser ton énergie, cela a les avantages suivants :
    • Permet de lister et d'imprimer tous les suivis très facilement.
    • Permet de trouver facilement les suivi qui sont incomplets par exemple.
    • mais SURTOUT permet d'ajouter et de supprimer des suivis SANS avoir (ou presque) à changer l'application.
      Tu peux même envisager que certaines présentations pourraient ne pas avoir le même nombre de suivis que d'autres en fonction des besoins.


    Si tu ne souhaites rien changer à ta conception actuelle (une table suivi <-> un formulaire), il faudra remplacer les sources des formulaires de saisie de [Suivi 1] à [Suivi 5] par des requêtes qui ne sélectionne que le numéro voulu (1 à 5).

    Sinon, tu peux utiliser l'astuce suivante :

    1. Créer un formulaire qui affiche toutes les données de [Suivi] sans distinction de numéro 1 à 5.
    2. Créer 5 champ textes nommés NumSuivi1 à NumSuivi5 à qui tu affectes la valeur correspondante à sa table (Propriété Source du Champ =IciLeNumeroDeSuivi).
      Donc tu obtiens 5 champs qui affichent les valeurs de 1 à 5.
      Une fois que cela marchera tu pourras rendre ces champs invisibles.
    3. Maintenant pour chacun des sous-formulaires Suivi, tu mets dans la propriété
      • champs Pères [No]; [NumSuivi1] (Le No est celui de Présentation, le 1 doit être remplacé par le numéro correspondant).
      • et champs Fils [NoPrésentation]; [NumSuivi]
      • Le formulaire utilisé par contre reste le formulaire qui affiche toutes les données de suivi.


    Et comme cela avec 1 seul formulaire de saisie et aucune ligne de code tu fais en sorte que Access affiche les données de Suivi1 dans une page, Suivi2 dans une autre page et ainsi de suite jusqu'à 5.

    A+

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Merci pour les solutions proposées. Je vais me pencher la dessus demain voir un peu plus tard car je suis en congé la semaine prochaine.

  11. #11
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Me revoilà de retour mais pas avec plus de connaissances concernant access ...

    J'ai réalisé l'ensemble de mon formulaire logiquement tout va bien jusque là. Seulement (oui sinon ce ne serait pas drôle), une fois le code saisie pour la fonction "rechercher" lorsque je lance mon formulaire et que j'effectue une recherche, on me demande ClefPersonne
    Alors là, je bloque à nouveau ...

    Encore merci par avance pour votre aide

  12. #12
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Bonjour

    ClefPersonne est un exemple de nom de champ, il faut l'adapter à ta réalité c-à-d le nom du champ qui identifie une personne dans ta table.


    A+

  13. #13
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    En réalité, rien ne fonctionne ...

    Je vous remets une image de mes relations car j'ai sans doute de nouveau commis une erreur

    Nom : Capture.JPG
Affichages : 556
Taille : 119,9 Ko

  14. #14
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Oui Access peut être assez frustrant au début ... et parfois même après`:-).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    En réalité, rien ne fonctionne ...
    Peux-tu décrire ce qui ne fonctionne pas ?
    Est-ce la liaison Formulaire principal, Sous-Formulaire ?
    Est-ce la recherche ? Si oui qu'as-tu ? Pas les données attendues ? Pas de données ? Une erreur ? Laquelle ?

    A+

  15. #15
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    J'ai différencié toutes mes tables, j'ai ajouter N°Présentation sur toute mes tables afin de les lier à la table Présentation. Puis, j'ai réalisé un formulaire pour chacune de mes tables.
    Nom : Tables et formulaires.JPG
Affichages : 443
Taille : 21,1 Ko

    Dans mon formulaire "support" nommé "Formulaire 1" (pour le moment mais il se nommera Service civique par la suite) :
    Je crée un formulaire dans lequel j'insère des onglets via le petit icône qui va bien. Dans chacun de mes onglets, j'insère un formulaire (correspondant à une de mes tables).
    Nom : Formulaire 1.JPG
Affichages : 566
Taille : 83,4 Ko

    Et à ce stade, il n'y a aucun lien entre mon formulaire et mes sous-formulaires, ni entre mes sous-formulaires entre eux.

    Concernant la fonction recherche, j'ai insérer le code VBA
    Nom : Propriété.JPG
Affichages : 466
Taille : 40,3 Ko
    Nom : Code VBA.JPG
Affichages : 650
Taille : 56,7 Ko

    Au final, rien ne fonctionne et pas de message d'erreur non plus.

    En gros, peu importe ce que je peux faire mes sous formulaires restent toujours sur la 1ère ligne de ma table et si je change manuellement de ligne dans mon premier sous formulaire, les autres restent sur la première ligne

  16. #16
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Le problème vient du fait que tu n'as pas défini de relation père/fils entre tes formulaires.
    Il est indispensable que le formulaire principal (celui qui contient les onglet) contienne le numéro de présentation.

    +------ F_Presentation
    |+-----
    || PagePresentation (ce n'est pas un sous-formulaire) | Tes onglets avec sous-formulaire
    |+-----
    +------

    Il faut que tu mettes pour chacun des sous-formulaires :
    Champ Père : No
    Champ Fils : NoPresentation

    Et Access va s'occuper du reste.

    Je répète, information concernant la présentation ne sont pas dans un sous-formulaire même si elles sont dans un onglet.

    Une fois cela réglé on verra pour la recherche.

    A+

  17. #17
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Merci

    Je commence à mieux comprendre même si j'ai mis le temps !!! Je n'ai pas encore pu tout faire, la suite au cours de la semaine car les rdv vont s'enchainer.

    Bonne soirée

  18. #18
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    J'ai réussi à mettre à jour l'ensemble de mes champs "père" et "fils", tout fonctionne de ce côté là.

    Il me reste la fonction recherche à résoudre mais avant cela j'ai une interrogation.
    La proposition de réaliser une seule table pour mes rdv de suivi est très intéressante mais je n'arrive pas à comprendre comment je vais pouvoir faire afin que chaque personne (1 personne = 1 ligne) puisse avoir de 3 à 5 rdv de suivi.
    Je suppose que pour chaque nouveau rdv (géré via un champs NumSuivi) une nouvelle ligne va être créée dans ma table "suivi". Par conséquent, si j'ai 3 rdv de suivi j'aurais 3 "N°" différents du coup comment est-ce possible que les bons rdv de suivi soient associés à la bonne personne ???

    J'y vais doucement et j'ai pas mal de question mais j'avance petit à petit grâce à vos conseils

  19. #19
    Modérateur

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

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

    Oui ce n'est pas intuitif au début mais tu le fais déjà avec ta présentation.
    Tu as une présentation et différentes tables qui s'y "accrochent".

    Ta table de suivi pourrait être quelque chose comme :

    [I]T_Suivi[U]
    ClefSuivi
    ClefPresentation
    NumSuivi (1 à x)
    Autres infos sur le suivi (ex : DateSuivi)

    Donc tu vas obtenir quelque chose comme :

    • 1, 1, 1, 2017-01-01 '1er suivi de la présentation 1
    • 2, 1, 2, 2017-01-02 '2ième suivi de la présentation 1
    • 3, 2, 1, 2017-01-01 '1er suivi de la présentation 2
    • 4, 2, 2, 2017-01-01 '2ième suivi de la présentation 2
    • 5, 2, 3, 2017-01-01 '3ième suivi de la présentation 2


    C'est le champ [ClefPresentation] qui va te permettre de marier la présentation et le suivi et de savoir quels sont les suivis d'une présentation.

    A+

  20. #20
    Nouveau Candidat au Club
    Femme Profil pro
    chargée de mission
    Inscrit en
    Août 2017
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : chargée de mission
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Août 2017
    Messages : 13
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Tout commence à prendre forme, j'avoue que cela fait plaisir quand on arrive enfin à voir les choses fonctionner. Merci pour l'aide

    Seulement, ce n'est pas encore terminé !!!
    Je ne trouve pas comment lier "ClefPrésentation" à mon champs "ClefPrésentation" dans ma table "suivi"

Discussions similaires

  1. [AC-2007] Fonction rechercher dans Formulaire
    Par familledacp dans le forum IHM
    Réponses: 4
    Dernier message: 28/04/2013, 15h22
  2. [AC-2007] Champ lien hypertexte inopérant dans formulaire avec onglet
    Par gerardlbc dans le forum IHM
    Réponses: 1
    Dernier message: 16/04/2011, 09h05
  3. Recherche dans formulaire à onglets
    Par Tial dans le forum IHM
    Réponses: 9
    Dernier message: 07/03/2007, 13h41
  4. Réponses: 1
    Dernier message: 26/01/2007, 09h28
  5. Aucun affichage dans formulaire avec onglet
    Par Daniel MOREAU dans le forum Access
    Réponses: 4
    Dernier message: 04/12/2006, 17h59

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