Alimenter une table par deux formulaires différents

rokson Messages postés 9 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je suis bloqué sur ce problème.
J'ai deux formulaires différents qui m'affichent des données de tables différentes sans aucunes relations.
J'ai crée une nouvelle table nommé NEW où je récupère la valeurs des champs de mes deux formulaires.
Pour chacun des formulaire, je récupère grâce à un code relié à un bouton du formulaire la valeur des champs. Cela marche bien !! Sauf que comme j'ai deux formulaires différents , j'ai donc deux boutons d'enregistrement qui alimentent la table ce qui fait que les résultats enregistrés sur ma table NEW ne sont pas sur la même ligne.
Je cherche une solution qui me permettrait d'avoir soit un seul bouton d'enregistrement pour les deux formulaires(je rappelle qu'ils sont différents sans aucuns liens ) ou quelque chose qui me permettrait d'activer simultanément les deux boutons d'enregistrement de sorte à avoir les résultats sur la même ligne.

Je vous remercie d'avance pour l'attention qui sera portée à ma question et reste à disposition pour réexpliquer au besoin mon problème.

3 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Les enregistrements dans votre table NEW sont en ajout ou cela peut être a la suite de motif d'un enregistrement ??
    0
    1. rokson Messages postés 9 Statut Membre
       
      Les enregistrements de la table NEW sont en ajout à chaque fois que je clique sur un bouton d'enregistrement
      d'un des deux formulaires.

      Je reste à disposition.

      Merci
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > rokson Messages postés 9 Statut Membre
       
      Re,

      les deux formulaires sont ouverts au moment du clic pour enregistrement
      0
    3. rokson Messages postés 9 Statut Membre
       
      Bonsoir,
      Oui les deux formulaires sont effectivement ouverts au moment du clic pour l'enregistrement.

      Merci
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > rokson Messages postés 9 Statut Membre
       
      Bonjour,
      exemple, pour un champ de chaque formulaire
      code a mettre dans les deux formulaires, voir a ajouter des tests pour eviter d'enregistrer x fois ou sans modif d'un des deux formulaires, mais la c'est vous qui voyez

      Private Sub Commande21_Click()
          Dim DB As Database
          Dim Rst As Recordset
          
          Set DB = CurrentDb
          Set Rst = DB.OpenRecordset("Table2")        'table a mettre a jour
          Rst.AddNew
              Rst.Fields(1) = Me.SK_inti      'formulaire 1
              Rst.Fields(2) = Forms![Copie de F_SiteKSB]![SK_inti]        'formulaire 2
          Rst.Update
          Rst.Close
      End Sub
      0
    5. rokson Messages postés 9 Statut Membre
       
      Bonjour,
      Je vous remercie beaucoup pour votre code.
      J'avais un code similaire sur chaque formulaire.
      Mon souci est que chaque formulaire dispose de son propre bouton de commande click ce qui fait que les champs complétés sur ma table NEW( ou table 2 pour vous) ne sont pas sur la même ligne.
      Je sais pas comment faire pour avoir les résultats sur la même ligne avec mes deux boutons click. Peut on envisager avoir un seul bouton de commande pour enregistrer les données des deux formulaires? J'ai essayé mais çà ne marche pas à mon niveau.
      Je mets ci-dessous mes codes:

      'Formulaire 1
      Private Sub Commande9_Click()

      ' Quelques variables
      Dim rst As dao.Recordset
      Dim lngNum As Long

      ' Ouvrir la table en lecture/écriture
      Set rst = CurrentDb.OpenRecordset("TABLE NEW", dbOpenDynaset)

      ' Créer un enregistrement dans la table
      rst.AddNew

      ' Alimenter les champs
      rst("Identifiant") = Me.attestation
      rst("Code") = Me.lolou

      ' Valider
      rst.Update
      rst.Close
      Set rst = Nothing
      MsgBox "Opération terminée !", vbInformation
      End Sub


      'Formulaire 2
      Private Sub Commande10_Click()

      ' Quelques variables
      Dim rst As dao.Recordset
      Dim lngNum As Long

      ' Ouvrir la table en lecture/écriture
      Set rst = CurrentDb.OpenRecordset("TABLE NEW", dbOpenDynaset)

      ' Créer un enregistrement dans la table
      rst.AddNew

      ' Alimenter les champs
      rst("Lieu") = Me.lieu
      rst("Adresse") = Me.adresse

      ' Valider
      rst.Update
      rst.Close
      Set rst = Nothing
      MsgBox "Opération terminée !", vbInformation
      End Sub


      Merci encore!!!
      Rokson
      0
  2. rokson Messages postés 9 Statut Membre
     
    Bonjour,

    Merci encore pour vos différentes réponses.

    Suite à votre proposition , voici les codes de mes deux formulaires:

    'Formulaire 1
    Private Sub Commande9_Click()

    ' Quelques variables
    Dim rst As dao.Recordset

    ' Ouvrir la table en lecture/écriture
    Set rst = CurrentDb.OpenRecordset("TABLE NEW", dbOpenDynaset)

    ' Créer un enregistrement dans la table
    rst.AddNew

    ' Alimenter les champs
    rst("Identifiant") = Me.attestation ' formulaire 1
    rst("Code") = Me.lolou 'formulaire 1
    rst("Lieu") = Forms![formulaire 2]![lieu] 'formulaire 2
    rst("Adresse") = Forms![formulaire 2]![adresse] 'formulaire 2
    ' Valider
    rst.Update
    rst.Close
    Set rst = Nothing
    MsgBox "Opération terminée !", vbInformation
    End Sub

    'Formulaire 2
    Private Sub Commande10_Click()

    ' Quelques variables
    Dim rst As dao.Recordset

    ' Ouvrir la table en lecture/écriture
    Set rst = CurrentDb.OpenRecordset("TABLE NEW", dbOpenDynaset)

    ' Créer un enregistrement dans la table
    rst.AddNew

    ' Alimenter les champs
    rst("Lieu") = Me.lieu ' formulaire 2
    rst("Adresse") = Me.adresse 'formulaire 2
    rst("Identifiant") = Forms![formulaire 1]![attestation] 'formulaire 1
    rst("Code") = Forms![formulaire 1]![lolou] 'formulaire 1
    ' Valider
    rst.Update
    rst.Close
    Set rst = Nothing
    MsgBox "Opération terminée !", vbInformation
    End Sub

    J'ai pour le formulaire 1 , le message d'erreur suivant:
    Microsoft Access ne trouve pas le formulaire " formulaire 2" auquel il est fait référence.
    J'ai le même message d'erreur pour le formulaire 2.
    Microsoft Access ne trouve pas le formulaire " formulaire 1" auquel il est fait référence.

    Merci encore pour tes réponses!

    Rokson
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      J'espere, quand-meme, que vous avez mis les noms de vos formulaires!!!!!!!!!
      0
    2. rokson Messages postés 9 Statut Membre
       
      Oui , j'ai bien mis les noms.
      Pour les tests du message précédent, j'avais nommé mes formulaires : formulaire 1 , formulaire 2.
      Je sais pas si ce serait dû à ce là ou pas, j'ai mis côte à côte mes deux formulaires dans un grand formulaire principal.Ils sont donc des sous formulaires du form-principal.

      Je reste à disposition.
      0
    3. rokson Messages postés 9 Statut Membre
       
      Re Bonjour,

      J'ai trouvé pourquoi çà ne marche pas ,
      0
      1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717 > rokson Messages postés 9 Statut Membre
         
        Re,

        Boh oui! Ce sont des sous-formulaire pas de formulaire !!!!!
        0
  3. rokson Messages postés 9 Statut Membre
     
    Comme j'ai mis mes formulaires 1 et 2 comme étant des sous formulaires du formulaire principal(Principal).
    J'ai utilisé ce code

    rst("Lieu") = Forms![Principal].Form![formulaire 1]![lieu].Value ' formulaire 2

    J'ai fait pareil pour les autres champs des deux formulaires.

    Merci beaucoup f894009 , grâce à vous ,nous sommes arrivés à la solution.

    Rokson
    0