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

Access Discussion :

Transfert de valeur entre formulaires [AC-2007]


Sujet :

Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut Transfert de valeur entre formulaires
    Bonjour,

    Je ne suis pas un pro d’Access mais j’essaie tout de même créer une petite base de données.
    Je rencontre un problème que je n’arrive pas à résoudre. C’est certainement très simple pour un oeil exercé, ce qui n’est pas mon cas.

    J’ai deux tables :
    Contacts avec des champs ; N°, nom, prenom, Id_Contact, etc…
    Actions avec des champs ; N°, Id_Contact, date, etc…
    J’ai deux formulaires basés sur ces tables ;
    Contact avec des textbox ; nom, prénom, Id_Contact
    Action avec des textbox ; date, Id_Contact, nom, prenom.

    Dans un premier temps je souhaite transférer la valeur de Id_Contact du formulaire Contact dans le textbox Id_Contact du formulaire Action (dans un second temps je voudrais transférer les autres valeurs nom et prenom mais chaque chose en son temps).

    J’ai recopié ce code sur le site mais tout ce qui se passe, c’est le formulaire Action qui s’ouvre mais aucune valeur ne s’affiche dans le textbox Id_Contact.

    J’ai beau relire le code je ne vois rien.
    Pouvez-vous m’aider,

    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
     
    Private Sub Commande64_Click()
     
    On Error GoTo Err_Commande64_Click
        Dim stDocName As String
     
        stDocName = "Action"
     
     DoCmd.OpenForm stDocName, , , "[Id_Contact] =" & Me![Id_Contact]
     
    Exit_Commande64_Click:
        Exit Sub
     
    Err_Commande64_Click:
        MsgBox Err.Description
        Resume Exit_Commande64_Click
    End Sub

    Avec mes remerciements
    Alain

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Points : 148
    Points
    148
    Par défaut
    Bonjour,

    Le "[Id_Contact] =" & Me![Id_Contact] que tu as écris dans ta fonction DoCmd.OpenForm te permet de filtrer l'affichage de ce nouveau formulaire (si tu affiche une liste de données)

    Essaye ce code:

    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
     
    Private Sub Commande64_Click()
     
       On Error GoTo Err_Commande64_Click
       Dim stDocName As String
     
       stDocName = "Action"
     
       DoCmd.OpenForm stDocName
       Forms(stDocName).Id_Contact.value = Me.Id_Contact.value
     
    Exit_Commande64_Click:
       Exit Sub
     
    Err_Commande64_Click:
       MsgBox Err.Description
       Resume Exit_Commande64_Click
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta réponse,

    Malheureusement ça ne fonctionne pas

    Message erreur "Erreur de compilation : Membre de méthode ou de données introuvable"
    sur la ligne : Forms(stDocName).Id_Contact.Value = Me.Id_Contact.Value

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Points : 148
    Points
    148
    Par défaut
    Tu as bien un champ qui s'appelle Id_Contact dans tes deux formulaires?

    Sinon essaye même si je doute que cela change quelque chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Forms(stDocName)![Id_Contact]!Value = Me![Id_Contac]!Value

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Oui effectivement, j'ai bien le même nom de champ dans les deux formulaires.

    Ta solution ne fonctionne pas non plus
    message erreur:
    La procédure Property let n'est pas définie et la procédure Property get n'a pas renvoyé l'objet

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Points : 148
    Points
    148
    Par défaut
    Il manquait un "t" dans Me.[Id_Contact], c'est peut être ça.

    Sinon, si tu essayes sur deux lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Forms(stDocName).[Id_Contact].Value = "Test"
    MsgBox Me.[Id_Contact].Value
    Laquelle te marque un message d'erreur?

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    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 648
    Points : 14 626
    Points
    14 626
    Par défaut
    bonjour,
    ceci est une syntaxe correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , "[Id_Contact] =" & Me![Id_Contact]
    donc si rien ne s'affiche, il faut essayer de regarder si le type de données est cohérent. Est-ce que Id_Contact est bien du numérique ? Sinon il faut ajouter des ' avant et après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , "[Id_Contact] ='" & Me![Id_Contact] & "'"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Syrald

    J'avais bien corrigé le t manquant

    Le mot test s'inscrit bien dans le champ Id_Contact de mon formulaire donc cela est OK pour le mot test.
    Le msgbox me renvoie bien la valeur de Id_Contact


    tee_grandbois

    Message d'erreur
    Type de données incompatible dans l'expression du critère
    Et la version numérique ne renvoie pas de message d'erreur ni ne renseigne le champ.


    Id_Contact est du texte. C'est la concaténation de la date (année& mois&jour&heure&minute&seconde) ainsi je suis sur qu'il n'y aura jamais de doublons

  9. #9
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    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 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Message d'erreur
    Type de données incompatible dans l'expression du critère
    peux-tu préciser dans quel cas cette erreur apparait ?
    Et la version numérique ne renvoie pas de message d'erreur ni ne renseigne le champ.
    je ne comprend pas bien. Si Id_Contact est une concaténation et même si elle ne contient que des chiffres, c'est donc bien du texte.

    Peux-tu poster un exemple de ce qu'il y a dans Id_contact ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Avec le code suivant, je reçois le message d’erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.OpenForm stDocName, , , "[Id_Contact] =" & Me![Id_Contact]
    Type de données incompatible dans l'expression du critère


    La valeur de Id_Contact : 201782162525
    Pour moi c’est tout de même du texte, mais c'est peut-être la-dessus qu'il y a une ambiguité

    J’ai essayé ta version de code avec les parenthèses pour le numérique, mais cela ne renvoie ni message d’erreur, ni ne renseigne le champ. Çà ouvre seulement le formulaire

  11. #11
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    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 648
    Points : 14 626
    Points
    14 626
    Par défaut
    J’ai essayé ta version de code avec les parenthèses pour le numérique, mais cela ne renvoie ni message d’erreur, ni ne renseigne le champ. Çà ouvre seulement le formulaire
    mais ce ne sont pas des parenthèses ?!?!? ce sont des apostrophes ' ' car c'est du texte :
    je reposte la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , "[Id_Contact] ='" & Me![Id_Contact] & "'"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Excuses-moi,
    Je me suis mal exprimé c'était bien des apostrophes.
    J'ai fait un copier/coller de ton code

  13. #13
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    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 648
    Points : 14 626
    Points
    14 626
    Par défaut
    je suis désolé mais la syntaxe est correcte, il y a quelque chose qui fait que cela ne fonctionne pas, le tout c'est de trouver laquelle ...
    Essaie de mettre en "dur" un Id_contact qui existe réellement dans les 2 tables pour voir si cela fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , "[Id_Contact] ='201782162525'"
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Cela ne fonctionne pas non plus.
    Je n'ai aucun message d'erreur. Le champ n'est pas renseigné. Cà ouvre seulement le formulaire

    Pourtant ce code ci dessous fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Forms(stDocName).[Id_Contact].Value = "Test"
      MsgBox Me.[Id_Contact].Value

  15. #15
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    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 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Citation Envoyé par Alain92110 Voir le message
    Cela ne fonctionne pas non plus.
    Je n'ai aucun message d'erreur. Le champ n'est pas renseigné. Cà ouvre seulement le formulaire
    Donc ce n'est à cause de la syntaxe puisque avec un identifiant reconnu cela ne fonctionne pas.
    A tout hasard :
    - peux-tu poster les propriétés se trouvant dans l'onglet Données du formulaire à ouvrir (formulaire Action) ?
    - existe-t-il du code sur les évènements (Load, Open, Current ..) du formulaire à ouvrir, et si oui, peux-tu le poster ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Voici les propriétés
    Images attachées Images attachées   

  17. #17
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 648
    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 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    donc, rien d'anormal dans les propriétés et pas de code qui puisse changer le mode du formulaire.
    Je ne comprend pas, existe-t-il vraiment des enregistrements dans Actions pour le Id_contact passé en paramètre (201782162525) ?
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  18. #18
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Points : 148
    Points
    148
    Par défaut
    Je crois que ce que Alain voulais faire était de juste passer des valeurs d'un formulaire à un autre, et pas de faire un filtre
    Le quatrième argument de DoCmd.OpenForm c'est:
    Nom : 4Argument.png
Affichages : 101
Taille : 3,4 Ko

    Si ce que tu veux vraiment c'est juste passé en paramètre, tu peux utiliser l'argument OpenArgs:
    Nom : openArgsArgument.png
Affichages : 106
Taille : 18,3 Ko

    DoCmd.OpenForm stDocName, , , , , , "[Id_Contact] ='" & Me![Id_Contact] & "'"

    Et ensuite dans le formulaire action, tu ajoutes la fonction Form_Open() où tu utilise Me.OpenArgs pour récupérer la valeur en paramètre

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 46
    Points : 19
    Points
    19
    Par défaut
    Effectivement, tout ce que je veux faire, c’est une simple base Clients.
    Un formulaire (Contact) basé sur une table (Contacts) avec nom, prénom, adresse, etc
    Un autre formulaire (Action) basée sur une autre table (Actions) avec ref, actions, commande, date rdv, etc
    Et que par un bouton de commande sur le formulaire Contact s’ouvre le formulaire Action en préinscrivant l’identifiant, le nom et le prénom du Client qui est saisi ou affiché sur le formulaire Contact.
    C’est tout simple, cela devrait être le B.A. BA d’une base de données. Mais c’est déjà galère de transférer une seule donnée alors 3…mission.

    Ceci dit, la dernière ligne de code, ouvre seulement le formulaire Action.

  20. #20
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2017
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2017
    Messages : 114
    Points : 148
    Points
    148
    Par défaut
    As-tu rajouté dans le code du formulaire action ceci, en plus de la ligne de mon précédent post ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Public Sub Form_Open()
       If Not IsNull(Me.OpenArgs) Then
          Me![Id_contact] = Me.OpenArgs
       End If
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Renvoi de valeur entre formulaires
    Par falco40² dans le forum IHM
    Réponses: 1
    Dernier message: 05/10/2007, 18h14
  2. Transfert de valeur entre formulaires
    Par Sodangbe dans le forum IHM
    Réponses: 2
    Dernier message: 15/12/2006, 17h59
  3. Transfert de Valeurs entre 2 fichiers PHP ?
    Par caviar dans le forum Langage
    Réponses: 4
    Dernier message: 27/04/2006, 12h10
  4. [VBA-A] transfert de données entre formulaire
    Par snaxisnake dans le forum VBA Access
    Réponses: 10
    Dernier message: 20/04/2006, 16h48
  5. transfert de valeurs entre fonctions js et asp
    Par ericmart dans le forum ASP
    Réponses: 5
    Dernier message: 10/03/2005, 16h18

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