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 :

Syncronisation de 2 formulaires indépendant


Sujet :

IHM

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut Syncronisation de 2 formulaires indépendant
    Bonjour,
    J'utilise 2 formulaires silmultanées (et non un formulaire et un sous-formulaire). sur le 1er formulaire (A) je saisis une ou plusieurs fiches.
    Sur le 2ème formulaire (B) je saisie également des enregistrements, pour un enregistrement A corespond obligatoirement une enregistrement B avec un index
    soit le cas pratique suivant
    A 1 -----> B1
    A 2 -----> B2
    A3 ------> B3
    An -------> Bn
    Chaque formulaires possèdent des boutons de navigation, qui me permette de mettre à jour certains champs renseignés ultérieurement...
    Ce que je veux obtenir, c'est une syncronisation entre les 2 formulaires, c'est à dire que si je me positionne sur A2 , le formulaire N°2 (B2) doit afficher les données en cours de saisie. Car le 2ème est obligatoirement liè par un code de référence généré des la création d'un enregistrement sur le 1er formulaire.
    Actuellement, j'ai rajouté des boutons de navigation mais si je me déplace d'une ou de 2 fiches à partir du formulaire A, je suis également obligé de me déplacer dans le même sens dans l'autre formulaire.
    Voici un descriptif de l'écran de saisie.

    Merci de me donner la marche à suivre.

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut Explication complémentaires
    Vu le peu de réactions sur mon post, je vous communique à toutes fins utiles quelques renseignements complémentaires :
    Le champs commun entres les 2 tables se nome : ID_Ref_Trans
    Le formulaire A se nome : Saisie_Chargement_ajout
    C'est un formulaire basé sur la table 'Chargement' ouvert en mode 'ajout de données'
    Chaque enregistrement est référencé par un N° de chargement qui se comporte d'un N° unique pour le dossier en cours de saisie, et d'un sous-numéro qui est
    un numéro sequentiel. Ensuite la concaténation de ses deux champs est sauvegardé dans un champs, qui n'accepte pas les doublons.

    Le formulaire B se nome : Saisie_Livraison_ajout
    C'est un formulaire basé sur la table 'Livraison' ouvert en mode 'ajout de données'
    Ce sont les actions sur les boutons 'Même adresse' ou 'Saisir une nouvelle adresse' qui permette de créer une nouvelle fiche et de sauvegarder celle en cours dans la table.
    N'hésiter pas à me contacter pour toutes autres information, il est en effet important que je réussisse à synchroniser ses deux formulaires, car en cours de saisie d'un dossier de transport les utilisateurs vont être amener à remplir certaines fiches, à ouvrir d'autres fenêtres et à revenir sur l'écran de saisie de transport , et si le formulaire Livraison n'est pas positionné avec le chargement auquel il proviens, il risque d'y avoir des erreurs d'attributions...

  3. #3
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Pas testé, mais une idée :

    Dans le formulaire A, dans l'événement Sur activation du formulaire, on fait exécuter un procédure publique dans le formulaire B

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!frmB.SynchroniserB
    Dans le module du formulaire B

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub SynchroniserB()
     
        With Me.RecordsetClone
     
            .FindFirst "ID_Ref_Trans=" & Forms!FormsA!ID_Ref_Trans
     
            If .NoMatch = False Then Me.Bookmark = .Bookmark
     
        End With
     
    End Sub
    Cela donne quelque chose ?

    Domi2

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut
    Merci pour votre aide Domi2, j'ai compris votre ligne de commande sur activation du formulaire A, mais j'ai crée un module dans mon projet, mais j'ai un message d'erreur dès que je clique sur un de mes boutons de navigation... Je ne comprends pas comment l'appelle à cette procédure incluse dans un module global de mon projet, peut faire référence à mon 2ème formulaire?
    J'ai crée un module qui comprend le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Sub SynchroniserB()
     
        With Me.RecordsetClone
     
            .FindFirst "IDCodeCharg_NumCharg=" & Forms![Saisie Livraison ajout2]![IDCodeCharg_NumCharg]
     
            If .NoMatch = False Then Me.Bookmark = .Bookmark
     
        End With
     
    End Sub
    Il est sauvegardé sous le nom "module1" avec en 1er ligne Option compare datase
    et ensuite le code compris entre les bornes Sub et End Sub.
    Les variables indiquées sont les véritables nom de mes champs.
    Voici le code sur évenement 'sur activation' de mon formulaire A 'Saisie Chargement ajout'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Form_Current()
    'Sur activation du formulaire Saisie Chargement ajout
    Forms![Saisie Livraison ajout2].SynchroniserB
    End Sub

  5. #5
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    C'est presque ça...

    La procédure SynchroniserB ne doit pas se trouver dans un module standard (comme ton module 1), mais dans le module du formulaire B.

    Si tu n'as pas encore de code pour ce formulaire, tu le sélectionnes dans la fenêtre de base de données, puis menu Affichage ==> Code, et tu y colles ta procédure, puis tu supprimes ton module 1

    Ensuite dans cette ligne, ton critère n'est pas correct, tu utilises celui de ton formulaire B, alors qu'il faut faire référence à celui du formulaire A.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .FindFirst "IDCodeCharg_NumCharg=" & Forms![Saisie Livraison ajout2]![IDCodeCharg_NumCharg]
    A remplacer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .FindFirst "IDCodeCharg_NumCharg=" & Forms![Saisie Chargement ajout]![IDCodeCharg_NumCharg]
    Si cela ne fonctionne pas mieux, n'oublies pas d'indiquer la teneur des messages d'erreur, ça peut aider.

    Domi2

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,
    Baba, de quelle manière ouvres-tu les deux formulaires ?
    Un idée c'est de créer des variables de type Access.CommandButton dans le formulaire Saisie_Livraison_Ajout de cette manière :

    Exemple 1): Pour l'exemple j'appelle cmdSameAddr et cmdNewAddr les boutons bouton 'même adresse' et 'nouvelle adresse' du formulaire Saisie_Chargement_Ajout. Dans cet exemple, le formulaire Saisie_Chargement est ouvert avant celui des livraisons.

    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
    16
    17
    18
    19
    20
    21
    Public WithEvents MemeAdresse as Access.CommandButton
    Public WithEvents AutreAdresse as Access.CommandButton
     
    Private Sub Form_Load()
     'Affecter la variable MemeAdresse au bouton de Saisie_Chargement_Ajout
     Set MemeAdresse=Forms("Saisie_Chargement_Ajout")!cmdSameAddr
     'Affecter la variable AutreAdresse au bouton de Saisine_Chargement_Ajout
     Set AutreAdresse=Forms("Saisie_Chargement_Ajout")!cmdNewAddr
    End sub
     
    'Quand on clique sur le bouton cmdSameAddr du formulaire Chargement
    'L'événement Click de la variable MemeAdresse se produit aussi
    Sub MemeAdresse_Click()
      'ici mettre le code correspondant pour la livraison
    End sub
     
    'Quand on clique sur le bouton cmdNewAddr du formulaire Chargement 
    'L'événement Click de la variable AutreAdresse se produit aussi
    Sub AutreAdresse_Click()
     'ici mettre le code correspondant pour la livraison
    End sub
    Une autre idée est dans les procédures Click de chaque bouton du formulaire Saisie_Chargement; appeler les procédures équivalentes du formulaire Saisie_Livraison.

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut Ca ne synchronise pas...
    Bonjour Domi1,
    Je suis désolé mais j'ai bien suivie tes instructions, mais le click sur mes 2 boutons de navigation à partir du formulaire saisis chargement ne positionne toujours pas le formulaire sur la fiche en relation.
    J'ai rajouté une msgbox,à chaque condition de la procédure, les 2 messages sont visualisée, mais si je suis sur la fiche 1 en haut et que je désire passer sur la 2em fiche, la fiche du formulaire du bas (livraison) reste sur la 1er.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub SynchroniserB()
     
        With Me.RecordsetClone
     
            .FindFirst "IDCodeCharg_NumCharg=" & Forms![Saisie Chargement ajout]![IDCodeCharg_NumCharg]
              MsgBox "La fiche est synchroniser..."
            If .NoMatch = False Then Me.Bookmark = .Bookmark
             MsgBox "La fiche n'est pas  synchroniser..."
        End With
     
    End Sub
    Sur ton 1er poste tu m'indiques cette ligne suivante :
    Bien-sûr j'obtiens un message d'erreur, je l'ai donc remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub SynchroniserB()
    En ce qui concerne mon erreur d'interpretation, au départ avec Module1 c'est d'avoir voulu créer un module, alors que c'est une procédure à insérer en effet parmis les nombreuses procédures de mon fomulaire...
    Pour répondre à ilank, j'ouvre mes formulaires à partir d'un menu général, action sur click du bouton m'ouvre simultanément 3 formulaires et le curseur est positionnée sur le 1er champ (rue, voie...) du formulaire de saisie de chargement.
    Merci pour votre aide.

  8. #8
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Bien-sûr j'obtiens un message d'erreur, je l'ai donc remplacé par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public Sub SynchroniserB()
    Pas absolument nécessaire il me semble, mais plus "propre"...

    Et très bonne idée les messages.

    Te reste encore à vérifier quelle valeur d'enregistrement de A tu récupères dans B.

    Regarde la petite base exemple. C'est bien ça que tu veux ?

    Domi2

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut
    En effet c'est exactement ce que je veux obtenir, mais ça ne marche toujours pas
    Mais je me demande si cela ne viens pas du type de variable, car la chaine de comparaison entre les 2 fiches que je dois synchroniser est de type texte. Je viens d'essayer ton exemple avec mes variables et le frmB ne bouge pas...

  10. #10
    Membre chevronné Avatar de Renardo
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 648
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 648
    Points : 2 019
    Points
    2 019
    Par défaut
    bonjour
    essai comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub SynchroniserB()
     
        With Me.RecordsetClone
     
            .FindFirst "NumCharg= '" & Forms![frmA]![NumCharg] & "'"
     
            If .NoMatch = False Then Me.Bookmark = .Bookmark
     
        End With
     
    End Sub

  11. #11
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut merci à vous tous.
    En effet, c'était encore une histoire de syntaxe ! Sacré VBA avec toutes ses subtilités...
    Merci, maintenant je n'ai plus qu'à rajouter des procédures de vérifications au moment de la validation de mes transports, mais ce n'est que pur logique.
    Encore merci pour votre aide, surtout un dimanche !
    Alain.

  12. #12
    Membre régulier
    Homme Profil pro
    Inscrit en
    Mars 2008
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine Saint Denis (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 127
    Points : 78
    Points
    78
    Par défaut Le N° de rèf. de mes livraisons est-il indispensable?
    Je viens de faire une simulation d'un dossier, mais une question m'est venue à l'esprit ? le N° de livraison est-il utile ? car finalement il y aura toujours une livraison correspondant à un chargement, le contraire est impossible, et pour chaque chargement, même en cas de livraison a des adresses différentes, je serai obligé d'enregistrer un 'duo' car il y à un inventaire en relation d'un départ A vers une livraison B. Je pense que dans la table livraison, je peux supprimer le champ qui stocke la référence de la livraison. Qu'en pensez-vous ?

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

Discussions similaires

  1. Programmation de Formulaires Indépendants
    Par hugo1992 dans le forum Access
    Réponses: 6
    Dernier message: 02/12/2006, 18h20
  2. Réponses: 1
    Dernier message: 16/08/2006, 18h01
  3. plusieurs formulaires 'indépendants' dans la même page
    Par mgemc2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/08/2006, 12h49
  4. Ouvrir plusieurs formulaires indépendants
    Par CRC dans le forum Access
    Réponses: 5
    Dernier message: 27/03/2006, 16h39
  5. Formulaire basé Vs formulaire indépendant
    Par anikeh dans le forum Access
    Réponses: 12
    Dernier message: 26/10/2005, 09h57

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