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 sous-formulaire différent dans un formulaire selon un champ [AC-2007]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut Ouvrir un sous-formulaire différent dans un formulaire selon un champ
    Bonjour.
    Je débute sous Access et j'essaie de mettre en place une base de données pour gérer des actes administratifs.

    J'ai créé un formulaire "frm actes" qui sert de base. A l'intérieur, il y a un champ "typeacte".
    Je voudrais, en fonction de ce champ, ouvrir un formulaire différent.
    En effet, selon le type d'acte, je n'ai pas les mêmes données à rentrer.

    J'ai créé un sous-formulaire pour chaque type d'acte.
    Je voudrais maintenant faire le lien entre le formulaire de base et ceux-ci.

    J'ai nommé chaque formulaire "frm 01", "frm 02"... ainsi de suite.
    Dans la table référençant les types d'actes, j'ai ajouté un champ "nomsfm" où j'indique pour chacun le formulaire à ouvrir.

    Je pensais définir une zone dans mon formulaire "frm actes" dont la source varierait en fonction du champ "typeacte". Est-ce possible?

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 768
    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 768
    Points : 14 809
    Points
    14 809
    Par défaut
    Bonsoir,
    oui, il est possible de définir le sous-formulaire à ouvrir en fonction d'un champ, il suffit de définir l'Objet source de ton sous-formulaire sur l'évènement adéquat avec un code de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Select Case Me.TypeActe
    Case "Acte1"
    Me.MonSFrm.SourceObject = "SForm_01"
    Case "Acte2"
    Me.MonSFrm.SourceObject = "SForm_02"
    Case ...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    çà marche nickel!!!

    Merci beaucoup.

  4. #4
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Cependant, j'ai 36 type d'actes différents... J'ai donc rajouté dans la table référençant ces actes, un champ "nomfrm", indiquant le formulaire correspondant.
    Peut-on envisager que selon le type d'actes, la sourceobject soit automatiquement renseignée à partir de cette table?
    Le but étant de réduire le code...
    En passant par une requête?

  5. #5
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 768
    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 768
    Points : 14 809
    Points
    14 809
    Par défaut
    Bonsoir,
    si tu as une table associant le type d'acte et le sous-formulaire c'est beaucoup plus facile (et d'ailleurs un bon réflexe ) : une fois l'acte choisi, il faut mettre sur l'événement qui va bien le code ci-dessous (par exemple, sur le clic d'un bouton)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.MonSFrm.SourceObject = me.nomsfrm
    Ou si c'est par liste déroulante (combo box)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.MonSFrm.SourceObject = me.TypeActe.column(1)
    la colonne 0 étant le type d'acte et la 1, le sous-formulaire.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    Cela fonctionne très bien, et c'est beaucoup plus pratique.
    Cependant, la 1° solution m'a été utile pour résoudre un autre problème!
    Merci à tous!

  7. #7
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut créer l'état correspondant
    Bonjour!
    La solution que vous m'aviez proposée fonctionne parfaitement. Mais je me trouve confronter à un problème lié: la création de l'état correspondant.

    J'ai essayé d'appliquer la même méthode pour faire varier la source de mon sous-état, mais çà ne marche pas: "Méthode ou membre de données introuvable (erreur 461)'

    J'ai ensuite essayé avec "sourceobject"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Report_Open(Cancel As Integer)
    Dim sourceMonSRpt As String
    sourceMonSRpt = Forms![frmlisteactes]![sfmlisteactes]!cmbnomfrm
    Me.MonSRpt.SourceObject = sourceMonSRpt
    End Sub
    J'obtiens le message d'erreur:
    "erreur d’exécution 2101: le paramètre entré n'est pas valable pour cette propriété".

  8. #8
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2011
    Messages : 20
    Points : 12
    Points
    12
    Par défaut
    J'ai trouvé la réponse toute seule.
    Je mets mon code si cela peut servir à quelqu'un.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Report_Open(Cancel As Integer)
    Reports![rptacte].[MonSRpt].SourceObject = Forms![frmlisteactes]![sfmlisteactes]!cmbnomrpt
    End Sub

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/10/2009, 08h52
  2. Format nombre différent dans même formulaire
    Par p935754 dans le forum IHM
    Réponses: 2
    Dernier message: 21/12/2006, 19h32
  3. Un sous formulaire continu dans un formulaire continu? :)
    Par branqueira dans le forum Access
    Réponses: 5
    Dernier message: 05/12/2006, 17h03
  4. Réponses: 3
    Dernier message: 14/06/2006, 11h04
  5. Réponses: 2
    Dernier message: 03/02/2005, 08h59

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