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 :

Piloter l'affichage de sous-formulaire depuis une liste déroulante dans le formulaire principale


Sujet :

IHM

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 2
    Points
    2
    Par défaut Piloter l'affichage de sous-formulaire depuis une liste déroulante dans le formulaire principale
    Bonjour à tous,

    Je viens vers vous car je rencontre des problèmes quant à l'élaboration d'une base de données access.

    Je dois réaliser une base de donnée qui répertorie les résultats de différentes expériences faites sur des éprouvettes.

    Tables :
    -ESSAI
    -EPROUVETTE_traction
    -EPROUVETTE_Flexion
    -EPROUVETTE_Compression

    Formulaires:
    -F_ESSAI
    -F_EPROUVETTE_traction
    -F_EPROUVETTE_Flexion
    -F_EPROUVETTE_Compression

    La Table ESSAI est reliée par une table intermédiaire au différentes tables éprouvette à cause de la liaison plusieurs à plusieurs.

    Chaque table éprouvette possède des caractéristiques différentes en fonction du type d'essai réalisé.

    Dans le formulaire ESSAI (F_essai) , je souhaiterai, via un menu déroulant qui regroupe les différents type d'essai, afficher le sous formulaire eprouvette correspondant.

    Un exemple plus parlant, dans le formulaire ESSAI si je sélectionne dans le menu déroulant le type d'essai "COMPRESSION", le sous formulaire EPROUVETTE_compression s'affiche, et si juste après je sélectionne le type d'essai "TRACTION", le sous formulaire "EPROUVETTE_traction" s'affiche.


    Merci d'avance pour votre aide !

  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 017
    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 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Bonjour,

    Il faut jouer avec la propriété SourceObject du sous-formulaire.

    Crée un évènement sur Après MAJ de la liste pour y affecter le nom du formulaire à afficher.

    N'oublie pas de paramétrer Champs père et Champ fils du container. Sinon les enregistrements affichés ne seront pas les bons.

    Cordialement,

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par loufab Voir le message
    Bonjour,

    Il faut jouer avec la propriété SourceObject du sous-formulaire.

    Crée un évènement sur Après MAJ de la liste pour y affecter le nom du formulaire à afficher.

    N'oublie pas de paramétrer Champs père et Champ fils du container. Sinon les enregistrements affichés ne seront pas les bons.

    Cordialement,
    Tout d'abord merci pour une réponse aussi rapide !

    Cependant je ne maîtrise pas très bien le VBA.

    Donc je sélectionne la liste déroulante, je vais dans propriétés/ évènement/ après MAJ,[procédure évènementiel].
    Mais je sais pas quoi écrire comme code, j'ai trouvé différentes chose sur des forum mais jusque là rien n'a fonctionné ...

    Merci encore

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Bonjour,

    En effet VBA est une science exacte.

    Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.sfObjet.SourceObject  = "NomDeMonSousFormulaire"
    où sfObjet est le nom de l'objet sous-formulaire qui va contenir le formulaire.

    Ou encore via une liste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.sfObjet.SourceObject  = me.lstMaListe.column(x)
    où lstMaliste est le nom de la liste et x représente la position de la colonne qui contient le nom du formulaire à afficher. Attention x démarre à 0 et non à 1, comme la majorité de compteur d'objet en VBA.

    Je te propose quelques lectures pour dégrossir le sujet :
    http://loufab.developpez.com/tutorie...pelformulaire/
    http://loufab.developpez.com/tutorie...ss/evenements/

    Une fois ceci assimilé tu devrais être autonome sur la plupart des problèmes d'IHM.


    Cordialement,

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Merci pour les liens,

    J'ai donc rentré :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub TYPE_ESSAI_AfterUpdate()
     
    Me.EPROUVETTE.SourceObject = Me.TYPE_ESSAI.Column(0) = "Flexion"
     
    End Sub
    et il me dit "erreur d'éxécution '2101' le paramètre entré n'est pas valide pour cette propriété"

    je bloque ...

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Points : 26
    Points
    26
    Par défaut
    pourquoi tu mets 2 = sur la meme ligne ?

    ca ne sera jamais dynamique si tu ajoutes une constante comme source control (valable pour tout le reste..bref)..
    le dernier egale dois ajouter "flexion" comme source controle ..ce qui ne represente rien..ni une table ni une requete..nada


    essaie avec ce que t as dit loufab
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    me.sfObjet.SourceObject  = me.lstMaListe.column(x)
     
    Me.EPROUVETTE.SourceObject = Me.TYPE_ESSAI.Column(0) = "Flexion"
    EPROUVETTE n'est pas le nom d'un formulaire selon ton thread !!!
    TYPE_ESSAI devrait etre le nom de la combo.

    est ce le cas ?

    enleve le "= flexion"
    et lie le champ pere champ fils dans le forms pere et le fils..en esperant qu'ils portent le meme nom dans les autres tables...

  7. #7
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 554
    Points
    24 554
    Par défaut
    En effet, à moins que Me.TYPE_ESSAI.Column(0) ne renvoie une partie du nom que tu es obligé de compléter avec une valeur. Mais dans ce cas il ne faut pas l'écrire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.EPROUVETTE.SourceObject = Me.TYPE_ESSAI.Column(0) = "Flexion"
    Mais comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.EPROUVETTE.SourceObject = Me.TYPE_ESSAI.Column(0) & "Flexion"
    Car là le code est interprété comme ceci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.EPROUVETTE.SourceObject = true
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.EPROUVETTE.SourceObject = false
    Commence par stocker le nom du formulaire dans une des colonnes de ta liste.

    Par contre vu la formation des noms de table et de formulaire tu faire ceci avec l'opérateur de concaténation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.EPROUVETTE.SourceObject = "F_" & Me.TYPE_ESSAI.Column(0)
    A la condition que Me.TYPE_ESSAI.Column(0) renvoi le nom de la table et que tu respectes toujours la manière de nommer tes formulaires :

    F_nom_de_la_table sans espaces.

  8. #8
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    Merci pour vos conseils mais j'arrive toujours à la même erreur "2101" ...

    Je pense que mon erreur viens du faite que j'ai créée une table "Type d'essai", je m'explique:

    Tables :
    -ESSAI
    -EPROUVETTE_traction
    -EPROUVETTE_Flexion
    -EPROUVETTE_Compression
    -Type essai ( table dans laquelle je stock mes différent type d'essai, traction, compression)
    Ainsi dans la table "ESSAI", le champs type d'essai est renseigné par la table "type essai".

    Formulaires:
    -F_ESSAI
    -F_EPROUVETTE_traction
    -F_EPROUVETTE_Flexion
    -F_EPROUVETTE_Compression

    Donc pour répondre à t8024328,

    "EPROUVETTE n'est pas le nom d'un formulaire selon ton thread !!!
    TYPE_ESSAI devrait etre le nom de la combo."

    TYPE_ESSAI est le nom de ma liste déroulante dans le formulaire principal.
    EPROUVETTE est le nom du sous formulaire à afficher.

    cependant, la liste déroulante TYPE_ESSAI, va chercher les données dans la table "type essai" où dans la colonne (0) j'ai un numéro auto et dans la colonne (1) j'ai les différents type d'essai.

    J'ai donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub TYPE_ESSAI_AfterUpdate()
     
    Me.EPROUVETTE.SourceObject =  Me.TYPE_ESSAI.Column(1)
     
    End Sub
    avec ce code selon ce que je sélectionne dans ma liste, il lit bien flexion, compression où les autres, mais il ne m'affiche pas le sous formulaire.
    ne devrais-je pas ecrire,
    SI Me.TYPE_ESSAI.column (1) = "Flexion" afficher sous formulaire "EPROUVETTE"
    SI Me.TYPE_ESSAI.column (1) = "Compression" afficher sous formulaire "EPROUVETTE_compression"
    SI Me.TYPE_ESSAI.column (1) = "traction" afficher sous formulaire "EPROUVETTE_traction"

    J'espère être assez claire,

    Merci de votre aide !

  9. #9
    Nouveau membre du Club
    Inscrit en
    Juillet 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 28
    Points : 26
    Points
    26
    Par défaut
    .regarde la réponse de loufag

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    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 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Je t'ai donné la syntaxe exacte. Il faut simplement la recopier (ctrl+c et ctrl+v)

Discussions similaires

  1. Requête paramétrée depuis une liste déroulante dans un formulaire
    Par coyote06 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 14/01/2010, 12h29
  2. Réponses: 6
    Dernier message: 23/09/2008, 15h57
  3. trier dans un formulaire avec une liste déroulante
    Par FENUA CLIM dans le forum IHM
    Réponses: 2
    Dernier message: 04/08/2008, 08h45
  4. [MySQL] Renseigner une liste déroulante dans un formulaire en faisant une jointure.
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 16/10/2006, 10h12
  5. Réponses: 5
    Dernier message: 27/08/2006, 14h18

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