Impossible d'obtenir un sous formulaire à double affichage !!!

Bonjour,
Dans Access, j'ai créé un formulaire à double affichage adossé à une requête
Lorsque j'ouvre ce formulaire individuellement, il s'affiche bien en double affichage.
Mais si je l'incorpore en sous formulaire dans un formulaire parent, le double affichage disparait au profit d'un formulaire unique.
En conséquence, j'ai dupliqué mon SF "sous formulaire'
1/ Le SF 1 paramétré en feuille e données
2/ La SF 2 Paramétré en formulaire unique
et incorporé les 2SF dans le Formulaire parent.
Mais je n'ai plus la fonction qui, quand je sélectionne une ligne ou un champs du SF1
ça me filtre automatiquement le SF2 adossé à la ligne ou champs ayant le focus du SF1

Pouvez-vous m'aider pour créer cette fonction filtrant mon SF2 en fonction de la ligne ou du champ sélectionné dans le SF1.

Par avance merci pour votre aide

17 réponses

  1. Bon,

    j'ai réfléchis (oui ça peut m'arriver), et j'ai trouvé d'où vient le souci, du moins comment le contourner : on cherchait comme des c... dans le vba, mais en fait, il suffit de baser le sf2 sur la requête sans les filtres, et le faire afficher le contenu de l'enregistrement de sf1.
    Au load des 2 sf, on se met sur un nouvel enregistrement.
    Sur current du sf1, on affiche alors l'enregistrement correspondant dans sf2.

    Je ne sais pas si je suis clair, mais voici la BdD modifiée (il doit il y avoir des morceaux de code en trop, mais pas le courage de tout vérifier).

    https://www.cjoint.com/c/JDyo7ZN42IU

    A+
    1
    1. Merci, tu es un génie !!!
      0
  2. Bonjour,

    je crois que c 'est le fonctionnement normal.

    Il faut tester avec ce code que tu mettras sur les événements susceptibles de faire actualiser ton SF2.
    Pour faire la mise à jour à chaque fois que tu sélectionnes un enregistrement dans le SF1, mets le code sur l'évènement current().

    set Sf2.form.recordset = Sf1.Form.recordset


    a+
    0
    1. J'ai testé, ça ne fonctionne pas à première vue.
      Je continue de chercher.
      0
  3. bonjours
    dans ce lien un exemple
    https://www.cjoint.com/c/JDtqG5DHh3S
    0
    1. ??
      0
  4. Bon,

    je viens de faire un test et cela fonctionne.

    Sur l'évènement current() du sf1, j'ai mis ce code :

    Dim enreg As Long 'ou integer, mais qui peut le + peut le -
    enreg = Me.CurrentRecord 'on stocke l'enregistrement courant du sf1 dans la variable enreg
    
    Forms!FormPrincipal!sf2.SetFocus 'on donne le focus au sf2
    
    DoCmd.GoToRecord , , acGoTo, enreg 'on va au même enregistrement que sf1
    


    A+
    0
    1. Bonjour,,
      Vos lignes de codes fonctionnent bien mais elles rentrent en conflit avec ces lignes

      Me.SFDépensesSaisieRecherchReq1FD.SetFocus
      DoCmd.GoToRecord , , acNewRec
      Me.SFDépensesSaisieRecherchReq1FU.SetFocus
      DoCmd.GoToRecord , , acNewRec

      Que j'avais placé sur les évènements d'ouverture de chargement du formulaire principal,

      Maintenant le formulaire s'ouvre sans se positionner sur nouvel enregistrement.

      Le suffixe 1FD identifie le SF1 Paramétré en feuille de données
      Le suffixe 1FU identifie le SF2 Paramétré en formulaire unique

      Comment faire pour conserver votre fonctionnalité et celle de se positionner automatiquement sur un nouvel enregistrement à l'ouverture ou au chargement du formulaire.

      J'ai essayé plusieurs combinaisons possibles mais je n'y parviens pas.

      Pouvez-vous m'aider sur ce point et encore merci pour ce que vous avez déjà développé.
      0
  5. Bonjour,

    bah simplement tu mets
    1/ Sur l'évènement load() du SF1
    Me.SFDépensesSaisieRecherchReq1FD.SetFocus
    DoCmd.GoToRecord , , acNewRec
    

    2/ Sur l'évènement current() du SF1, tu laisses comme je t'ai suggéré, à savoir
    Dim enreg As Long 'ou integer, mais qui peut le + peut le -
    enreg = Me.CurrentRecord 'on stocke l'enregistrement courant du sf1 dans la variable enreg
    
    Forms!FormPrincipal!sf2.SetFocus 'on donne le focus au sf2
    
    DoCmd.GoToRecord , , acGoTo, enreg 'on va au même enregistrement que sf1


    A+
    0
    1. Je reviens vers vous car j'ai testé votre code + 2 variantes,
      J'obtiens des erreurs à chaque fois.
      Avez-vous une idée pour pouvoir ouvrir ce formulaire sur Nouvel enregistrement ???
      D'avance, Merci
      Ci-dessous copies écran
      0
      1. Tu veux ouvrir quel formulaire sur un nouvel enregistrement ? Le formulaire principal ou le (un des) sous-formulaire ??

        A+
        0
    2. Attends,

      remplace "me.xxxxxxxxxx" (tu devrais choisir des noms encore + longs :-) ) par forms!formPrincipal!sf1.setfocus (premiere copie écran, donc sur load de sf1)

      Ca devrait aller mieux...

      A+
      0
      1. Cette fois ci j'ai une erreur sur tes 1ères lignes qui fonctionnaient "Synchronisation du focus des 2SF.
        Question toute bête est ce que cela pourrait provenir par l'odre dans lequel sont exécutées ces lignes de côdes !!!
        Serait-il possible d'appeler le nouvel enregistrement après un petit délais pour être parfaitement sûr que les lignes de synchro focus des deux SFsoient opérationnelles.
        Qu'en pensez-vous ????
        Ci-dessous copie écran de l'erreur.
        0
    3. Que se passe t'il si tu cliques sur continuer (la petite flèche verte en haut) ?
      0
      1. Il me marque Erreur d'exécution'2105': Impossible d'atteindre l'enregistrement spécifié
        0
        1. Du coup, cette erreur se produit au chargement ou au moment ou tu cliques sur un enregistrement dans le sf1 ?
          Sinon, si tu veux, partage ta base via https://fr.fromsmash.com/

          A+
          0
          1. voici le lien de téléchargement de ma base de données

            Pour que les deux SF du Form DépensesSaisieRecherchReq s'ouvrent sur nouvel enregistrement.

            Formulaire Maître "Parent"

            DépensesSaisieRecherchReq

            SF1 "paramétré en feuille de données"
            SFDépensesSaisieRecherchReq1FD

            SF2 "Paramétré en formulaire unique"
            SFDépensesSaisieRecherchReq1FU

            https://www.fromsmash.com/Xes6l8d23A-ct?e=aGFyZGRpc2NvdW50bWFya2V0QGdtYWlsLmNvbQ==
            0
          2. @traderpierreJe regarde, mais il y a pas mal de refresh, c'est "un peu" le bordel !
            0
        2. Essaies de mettre un
          on error resume next
          avant pour voir...
          0
          1. Sincèrement, je ne vois pas.

            Pourquoi vouloir t'acharner à aller sur un nouvel enregistrement automatiquement ?

            Il n'y a qu'à cliquer.

            Si d'autres ont la patience, moi j'arrête là, trop usine à gaz
            0
            1. Merci quand même
              0
              1. Pas mal de soucis en ce moment,

                si personne n'a trouvé, je réessaierai.

                A+
                0
            2. Bonjour
              C'est Un peu le Bor......
              Une chose a faire c'est de faire des relations correctes un à plusieurs avec des id en auto et numérique.
              0
              1. Oui mais je n'ai plus de filtre .
                Comment faire pour que ça fonctionne même avec le filtrage multi critère
                0
                1. Ah bah oui du coup, en modifiant la requête source du sf2 les modifs se sont appliquées au sf1.

                  Faut faire 2 requetes.

                  Je regarde cela
                  0