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 :

Comment insérer sous formulaire double affichage dans une page (ou onglet) [AC-2007]


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2009
    Messages : 81
    Points : 72
    Points
    72
    Par défaut Comment insérer sous formulaire double affichage dans une page (ou onglet)
    Bonjour à tous,
    probleme de conception IHM: j'arrive pas à faire marcher un sous-formulaire en mode double affichage dans une page (ou onglet)
    l'idée étant de mettre un formulaire principal, avec des pages, et sur chaque page, on met un sous-formulaire en mode double affichage.

    ça ne marche pas,
    pourtant j'ai bien les sous-formulaires en question qui sont en double affichage

    Cela est-il possible? Merci de me conseiller
    "Car enfin, qu’est-ce que l’homme dans la nature ? Un néant à l’égard de l’infini, un tout à l’égard du néant, un milieu entre rien et tout."
    Blaise PASCAL

  2. #2
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Cela est-il possible? Merci de me conseiller
    Je ne pense pas

    Il va te falloir deux sous formulaire à chaque fois : un en affichage normal et un en feuille de données en les plaçant l'un en dessous de l'autre et en les synchronisant. Comment les sychroniser ? Peut etre avec les bookmark de leur recordset sur l'évènement Current, mais pas sûr que ça ne génère pas une boucle sans fin

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2009
    Messages : 81
    Points : 72
    Points
    72
    Par défaut
    Astuce adoptée, mais avec quelques procédures VBA, qui me posent soucis justement:
    je n'arrive pas à appeler une procédure (Public ou Private d'ailleurs) contenue dans le formulaire principal depuis un sous-formulaire1 pour agir sur un sous-formulaire2.
    Mon idée étant de mettre dans cette procédure du formulaire principal une manipulation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ' Procédure dans le formulaire principal
    Public Function maFoncDuFormPrincipal()
        Dim strSQL As String
        strSLQ = "SELECT T_TABLE.* FROM T_TABLE WHERE T_TABLE.ID=" & MaValeur & ";"
        Forms![mon-sous-formulaire1].Form.RecordSource = strSQL
        Forms![mon-sous-formulaire1].Form.Refresh
    End Function
     
    '============================================
    ' Procédure événementielle dans le sous-formulaire 2
    Private Sub monChamp_Click()
        ' Appel depuis le sous-formulaire2    
         maFoncDuFormPrincipal
    End Sub
    est ce que je peux passer par un autre chemin
    "Car enfin, qu’est-ce que l’homme dans la nature ? Un néant à l’égard de l’infini, un tout à l’égard du néant, un milieu entre rien et tout."
    Blaise PASCAL

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonjoir,

    c'est quoi "MaValeur" ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2009
    Messages : 81
    Points : 72
    Points
    72
    Par défaut LA solution !?
    Je ne pense pas que ça soit LA solution, notamment lorsque j'ai découvert que l'on peut passer par les modules de classe pour un travail plus "propre", mais voici mon alternative:
    1. Rappel des faits
      Il s'est avéré qu'il est impossible d'insérer un sous-formulaire en mode double affichage dans un formulaire "père"
    2. L'astuce
      Elle consiste alors à insérer ce sous-formulaire (après l'avoir dupliqué) en deux exemplaires, l'un en mode affichage "Affichage unique" , l'autre en "Feuille de données"
    3. Interaction entre les deux sous-formulaires:
      Le comportement souhaité est d'actualiser l'affichage du 1 en cliquant sur un enrg. dans le 2
      Pour cela, y a VBA

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    ' Sub de l'événement click d'un contrôle, dans le sous-form 2 (feuille de données
    Private Sub monControle_Click()
        Dim strID As String
        strID = Me.ID.Value
        Call Interaction(strID)
    End Sub
     
    ' Sub ou fonction publique dans le formulaire Père
    Public Function Interaction(ID As String)
        Dim strSQL As String
        strSQL = "SELECT T_TABLE.* FROM T_TABLE WHERE T_TABLE.ID=" & ID & ";"
        Forms![FormPere]![sous-formulaire1].Form.RecordSource = strSQL
        Forms![FormPere]![sous-formulaire1].Form.Requery
    End Function
    Voilà, en espérant que cela pourra servir à quelqu'un d'autre

    EDIT 30/04/10
    Je souhaite apporter deux précisions:
    1- Il est possible (voir souhaitable) de mettre l'événement qui déclenche la synchronisation dans l'activation de l'enregistrement (Private Sub Form_Current()) au lieu d'un clic sur un contrôle
    2- La procédure, nommée ici "Interaction", est placée dans un module indépendant et non pas dans le module du formPère
    "Car enfin, qu’est-ce que l’homme dans la nature ? Un néant à l’égard de l’infini, un tout à l’égard du néant, un milieu entre rien et tout."
    Blaise PASCAL

  6. #6
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2010
    Messages : 252
    Points : 145
    Points
    145
    Par défaut Peut-être plus simple...
    Bonjour,
    Je reprends cette discussion car je vérifiais si l'on pouvait utiliser un formulaire double affichage en tant que sous-formulaire et visiblement NON.

    Toutefois, bien que cette conversation soit assez ancienne, je voudrais indiquer que pour contourner cette difficulté j'affecte la même source de données aux deux formulaires et ainsi ils se synchronisent automatiquement.

    Procédé:
    1. Je crée deux formulaires distincts, 1 pour la saisie ou la consultation détaillée (formulaire unique) nommons-le Sf1, 1 pour l'affichage en mode feuille de données - ou en mode continu...que je nommerai Sf2
    2. J'insère et positionne ces 2 formulaires dans le formulaire principal
    3. A l'ouverture et à tout changement de critère de filtrage j'affecte à Sf2 la même source que Sf1
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Sf2.form.recordset = Sf1.Form.recordset
    Et ça marche.
    Je rencontre toutefois quelques anomalies que pour l'instant je considère comme aléatoires lorsqu'on applique des (mauvais) traitements en cours d'utilisation - modification du filtre en cours de saisie ou autre, et c'est pour cette raison que j'aurais préféré utiliser un formulaire double affichage.

    En espérant avoir aidé, bon code à tous.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Recherche Clinique
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Recherche Clinique

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par Depite Voir le message
    Bonjour,
    Procédé:
    1. Je crée deux formulaires distincts, 1 pour la saisie ou la consultation détaillée (formulaire unique) nommons-le Sf1, 1 pour l'affichage en mode feuille de données - ou en mode continu...que je nommerai Sf2
    2. J'insère et positionne ces 2 formulaires dans le formulaire principal
    3. A l'ouverture et à tout changement de critère de filtrage j'affecte à Sf2 la même source que Sf1
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Sf2.form.recordset = Sf1.Form.recordset
    Bonjour à tous,

    Je reprend ce vieux topic mais qui m'a bien aidé !
    J'ai essayé cette méthode et elle marche. Cependant dès que j'applique un filtre ou un tri sur ma feuille de données (Sf2), Alors mon formulaire unique Sf1 ne se met plus à jour.
    J'ai essayé de reproduire la formule "set Sf2.form.recordset = Sf1.Form.recordset" pour pleins d'évènements différents... mais rien y fait !

    Quelqu'un a-t-il une idée ?

    Bonne journée

  8. #8
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    A vérifier
    dès que j'applique un filtre ou un tri sur ma feuille de données (Sf2), Alors mon formulaire unique Sf1 ne se met plus à jour.
    Si tu filtres SF2 alors il faut appliquer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set Sf1.form.recordset = Sf2.Form.recordset
    es-tu ok sur ce point

    CDLT
    "Always look at the bright side of life." Monty Python.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Recherche Clinique
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Recherche Clinique

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    Effectivement, la formule était erronée... Mais étonnement ca marchait.

    Malheureusement le problème n'est pas résolu.

    • Lorsque j'ouvre mon formulaire et que je sélectionne une nouvelle ligne sur SF2, SF1 se met à jour
    • Lorsque j'applique une filtre sur SF2, puis sélectionne une ligne, SF1 ne se met pas à jour.

  10. #10
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Jajaloic,
    Lorsque j'applique une filtre sur SF2, puis sélectionne une ligne, SF1 ne se met pas à jour.
    Quel type de filtre appliques-tu sur F2 ?
    Seulement si tu changeais la requete source de SF2 et que tu l'appliquais à SF1, alors SF1 se mettrait à jour.

    Cdlt
    "Always look at the bright side of life." Monty Python.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Recherche Clinique
    Inscrit en
    Août 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Recherche Clinique

    Informations forums :
    Inscription : Août 2018
    Messages : 24
    Points : 20
    Points
    20
    Par défaut
    J'applique le filtre d'une feuillle de données ACCESS

    Nom : Image1.png
Affichages : 1202
Taille : 180,0 Ko

    Seulement si tu changeais la requete source de SF2 et que tu l'appliquais à SF1, alors SF1 se mettrait à jour.
    C'est déjà le cas, ils sont tous liés à la même requête

    J'utilise 3 formulaires :
    • SF1 : Formulaire unique
    • SF2 : Feuille de données
    • SF3 : Formulaire contenant SF1 et SF2


    SF3 est lié à la même requête que SF1 et SF2

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/03/2013, 14h39
  2. [AC-2007] Formulaire double affichage dans un sous formulaire
    Par rogerfon dans le forum IHM
    Réponses: 10
    Dernier message: 15/08/2012, 23h52
  3. [AC-2007] Sous formulaire double affichage
    Par Sofiann dans le forum IHM
    Réponses: 1
    Dernier message: 25/06/2012, 19h36
  4. Validation de formulaire et affichage dans une DIV
    Par zeplubo dans le forum Langage
    Réponses: 3
    Dernier message: 27/08/2010, 17h02
  5. Réponses: 2
    Dernier message: 06/05/2008, 10h52

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