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 :

[Formulaire] Afficher plusieurs sous-formulaires dans un meme cadre via des boutons


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 13
    Points
    13
    Par défaut [Formulaire] Afficher plusieurs sous-formulaires dans un meme cadre via des boutons
    bonjours à tous

    Question fonctionnalité, je voudrais réaliser exactement la meme chose qu'un Controle Onglets, sauf que je suis déjà dans un onglet, et que meme si on pouvais inclure un controle onglet dans un controle onglet c graphiquement moche...

    Question design, je voudrais donc que dans mon onglet, il y ai une colonne de boutons de commande à gauche, qui permetraient de sélectionner un sous-formulaire qui s'afficherais dans un cadre à droite de mes boutons.

    d'apres mes recherches, il faudrai créer un sous-formulaire sans l'assistant, et définir la source de celui-ci via le bouton. chaque bouton afficheraient donc différent sous-formulaire dans la zone de sous formulaire. mais le pb c'est que j'en sais pas plus, et que je ne peut pas inventer un code que je n'ai pas apris.. je suis géologue pas informatitien lol.

    ps: je n'ai pas le mscomct2.ocx version 2.0, qui apparement serait util pour créer un controle sous-formulaire, et comme je bosse sur les ordis d'une multinatonnale il est quasiment impossible d'installer quoi que ce soit... déjà surprenant que je puisse aller sur ce forum... c'est surement que vous etes classé parmis les forum sérieux ^^

    ty d'avance

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Pour créer un contrôle sans assistant deux possibilités :
    1. Quand l'assistant se lance, cliquer sur Annuler pour le fermer.
    2. Désactiver l'assistant en s'assurant que le bouton assistant dans la barre "boîte à outils" n'est pas enfoncé.
    C'est le bouton avec une baguette et des petites étoiles à côté du bouton avec un curseur de souris.

    Ensuite ...
    Sélectionner le contrôle sous-formulaire/sous-état et le placer dans la page de l'onglet.

    Afficher les propriétés du sous-formulaire et lui donner un nom.
    Prenons sfmMonSousFormulaire par exemple.

    Mettre un bouton dans l'onglet à gauche du sous-formulaire.
    Afficher ses propritétés et lui donner un nom.
    Par exemple cmdNomSousFormulaire1 s'il doit afficher le formulaire nommé NomSousFormulaire1

    Mettre un deuxième bouton dans l'onglet.
    Afficher ses propritétés et lui donner un nom.
    Par exemple cmdNomSousFormulaire2 pour un formulaire NomSousFormulaire2

    Afficher les propriétés du bouton cmdNomSousFormulaire1
    Aller dans l'onglet "événement"
    En face de "Sur clic" sélectionner "[Procédure événementielle]"
    Cliquer sur le petit bouton à trois points [...]
    On doit arriver dans le corps du code de la procédure événementielle
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cmdNomSousFormulaire1_Click()
     
    End Sub
    On y insère le code qui suit pour obtenir :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub cmdNomSousFormulaire1_Click()
    Dim strForm As String
     
    ' Nom du formulaire à afficher dans le contrôle sous-formulaire
    strForm = "NomSousFormulaire1"
     
    ' Supprimer tout lien éventuel entre le sous-formulaire et le formulaire principal
    Me.sfmMonSousFormulaire.LinkMasterFields = ""
    Me.sfmMonSousFormulaire.LinkChildFields = ""
    ' Définir le formulaire à utiliser comme source du sous-formulaire
    Me.sfmMonSousFormulaire.SourceObject = strForm
    End Sub

    Répéter l'opération pour le deuxième bouton.
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub cmdNomSousFormulaire2_Click()
    Dim strForm As String
     
    ' Nom du formulaire à afficher dans le contrôle sous-formulaire
    strForm = "NomSousFormulaire2"
     
    ' Supprimer tout lien éventuel entre le sous-formulaire et le formulaire principal
    Me.sfmMonSousFormulaire.LinkMasterFields = ""
    Me.sfmMonSousFormulaire.LinkChildFields = ""
    ' Définir le formulaire à utiliser comme source du sous-formulaire
    Me.sfmMonSousFormulaire.SourceObject = strForm
    End Sub
    Voila. Cet exemple permet à l'aide de deux boutons, de changer le formulaire à afficher à l'intérieur d'un contrôle sous-formulaire.
    Pour simplifier je n'ai pas défini de liaison entre le sous-formulaire et le formulaire.
    Sans exemple précis avec des noms de champs ce n'est pas parlant.

    A+

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 13
    Points
    13
    Par défaut marche presque
    les lignes suivantes sont elles indispensables ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' Supprimer tout lien éventuel entre le sous-formulaire et le formulaire principal
    Me.sfmMonSousFormulaire.LinkMasterFields = ""
    Me.sfmMonSousFormulaire.LinkChildFields = ""
    car elles me font bugger mon formulaire, et si je les mets en commentaires tout marche, et ça bug pas quand je clic d'un bouton à l'autre. sinon à part ça ça marche nickel.

    il me dit "erreur d'execution 2101, le paramètre entré n'est pas valide pour cette propriété"


    donc déjà : sorry pour ma réponse tardive (c'était le WE pour moi) et merci beaucoup pour ton aide.

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Non ces deux lignes ne sont pas indispensables si les sous-formulaires n'ont pas de lien avec le formulaire principal.

    L'erreur vient du fait que je les ai mal placées.
    Si SourceObject du contrôle sous-formulaire est vide l'erreur se produit.
    Dans cet ordre ça fonctionne mieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Définir le formulaire à utiliser comme source du sous-formulaire
    Me.sfmMonSousFormulaire.SourceObject = strForm
    ' Supprimer tout lien éventuel entre le sous-formulaire et le formulaire principal
    Me.sfmMonSousFormulaire.LinkMasterFields = ""
    Me.sfmMonSousFormulaire.LinkChildFields = ""
    A+

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Points : 13
    Points
    13
    Par défaut merci super
    ok c bon tout marche ^^

    merci pour tout
    faute de ne pouvoir t'aider à mon tour, je t'envoie un peu de soleil de nouvelle calédonie

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 86
    Points : 74
    Points
    74
    Par défaut un exemple concret, c'est possible?...
    Bonjour
    Je cherche depuis hier comment lier un formulaire et un sous formulaire par VBA et je tombe sur cet échange qui répond en partie à ma recherche.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Définir le formulaire à utiliser comme source du sous-formulaire
    Me.sfmMonSousFormulaire.SourceObject = strForm
    ' Supprimer tout lien éventuel entre le sous-formulaire et le formulaire principal
    Me.sfmMonSousFormulaire.LinkMasterFields = ""
    Me.sfmMonSousFormulaire.LinkChildFields = ""
    Ce qui m'intéresse c'est comment faire pour créer ces liens par VBA.
    Exemple avec un sous formulaire appelé « sfrm_formulaire2 ».
    Ce sous formulaire est basé sur une table contenant un champ nommé [NUM2].
    Ctl_num2 est le nom d'un contrôle de sfrm_formulaire2 dont la source est [NUM2] .
    Ce sous formulaire est inclus dans un formulaire frm_formulaire1. Ce formulaire est basé sur une table contenant un cham nommé [ NUM1].
    Ctl_num1 est le nom d'un contrôle de frm_formulaire1 dont la source est [NUM1].
    [NUM1] et [NUM2] contiennent les valeurs identiques ce qui permet la liaison.
    Comment faire ? J'ai bien un début mais je cale dans l'utilisation des linkmasterfields et linkchildfields
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ' Définir le formulaire à utiliser comme source du sous-formulaire
    Me. sfrm_formulaire2 .SourceObject = frm_formulaire1
    ' Création des liens entre le sous-formulaire et le formulaire principal
    Me. sfrm_formulaire2 .LinkMasterFields = "Quoi mettre ici…"
    Me. sfrm_formulaire2 .LinkChildFields = "… et là?"
    Et ce code où faut-il le mettre exactement, dans le formulaire ou le sous formulaire?
    D'avance merci de me répondre sur un 1er janvier !!!
    Sellig60

  7. #7
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    Les propriétés VBA LinkMasterFields et LinkChildFields correspondent respectivement aux propriétés "Champs pères" et "Champs fils" d'un contrôle sous-formulaire.

    Les champs pères sont des champs de la source de données du formulaire contenant le sous-formulaire.
    Les champs fils sont des champs de la source de données du sous-formulaire.

    Si on par exemple ...
    LinkMasterFields = "ChPère1,ChPère2,ChPère3"
    LinkChildFields = "ChFils1,ChFils2,ChFils3"
    ... la liaison se fait sur ChPère1=ChFils1 ET ChPère2=ChFils2 ET ChPère3=ChFils3

    Le code est à mettre dans le formulaire qui contient le contrôle sous-formulaire (sfmMonSousFormulaire).
    Dans frm_formulaire1, donc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ' Définir le formulaire à utiliser comme source du sous-formulaire
    strForm = "sfrm_formulaire2"
    Me.sfmMonSousFormulaire.SourceObject = strForm
    ' Création des liens entre le sous-formulaire et le formulaire principal
    Me.sfmMonSousFormulaire.LinkMasterFields = "NUM1"
    Me.sfmMonSousFormulaire.LinkChildFields = "NUM2"
    sfmMonSousFormulaire est le nom du contrôle sous-formulaire se trouvant dans le formulaire frm_formulaire1.
    Le code définit l'objet source de ce contrôle comme étant "sfrm_formulaire2" (via la variable strForm).
    Puis il définit les champs Pères et Fils (LinkMasterFields et LinkChildFields).

    A+

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 86
    Points : 74
    Points
    74
    Par défaut Remerciements
    Merci, merci, merci.
    Je suis reconnaissant vis à vis de tous les contributeurs de ce site qui acceptent de partager leurs connaissance. La réponse à ma demande est parfaite.
    J'ai compris comment ça marche.
    A+
    Sellig60

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 25/07/2015, 09h21
  2. Réponses: 3
    Dernier message: 15/09/2014, 14h35
  3. Réponses: 5
    Dernier message: 21/10/2009, 15h24
  4. Réponses: 3
    Dernier message: 14/06/2006, 11h04
  5. Lien sous-formulaire à un autre sous-formulaire
    Par jehhej dans le forum Access
    Réponses: 4
    Dernier message: 25/01/2006, 08h05

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