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

Modélisation Discussion :

[DEB][Formulaire +VBA] Ouvrir un formulaire et le remplir automatiquement


Sujet :

Modélisation

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut [DEB][Formulaire +VBA] Ouvrir un formulaire et le remplir automatiquement
    Bonjour,

    Je poste ce message car malgré les quelques heures que j'ai passé sur differents tutoriaux/forum/FAQ, je n'arrive toujours pas à réaliser ce que je veux.

    Je réalise une BDD sous access.

    J'aimerais à partir d'un formulaire réaliser les tâches suivantes depuis un bouton.

    1.Ouvrir un autre formulaire
    2.Ajouter un élement depuis celui-ci. (comme le bouton "Add Reccord").
    3.Remplir automatiquement un champ de ce formulaire avec une donnée du formulaire en cours.
    4.Fermer le formulaire en cours.

    Explications:
    Ma BDD concerne l'organisation de voyage.
    J'ai donc une table "participant" avec un formulaire associé (Nom,Prénom,Etc ....).
    J'ai aussi une table "inscription à un voyage" (date du voyage, prix, Etc....) et le formulaire associé.

    J'aimerais à partir du formulaire "participant", un bouton qui :
    -Ouvre le formulaire "inscription"
    -remplisse le champs Part_ID avec le champ ID_Participant (primary key de la table "Participant".
    -Ferme le formulaire "particpants".

    J'ai procedé de la façon suivante :
    Rajout d'un bouton "Open Form" dans le formulaire "participants".
    Modification du code en VBA de celui-ci :
    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
     
    Private Sub Command171_Click()
    On Error GoTo Err_Command171_Click
     
        Dim stDocName As String
        Dim stLinkCriteria As String
     
        stDocName = "Inscription"
        DoCmd.OpenForm stDocName, , , [ID participant] = " & Me.[Part_Id]"
        DoCmd.Close acForm, "Partipants"
     
    Exit_Command171_Click:
        Exit Sub
     
    Err_Command171_Click:
        MsgBox Err.Description
        Resume Exit_Command171_Click
     
    End Sub

    Lorsque je clique sur le bouton j'ai le message d'erreur suivant :
    "Microsoft Access can't find the field '|' referred in your expression"

    -------------------------------------------------------------

    Je pense avoir une grosse erreur de syntaxe de vba (que je ne connais pas) dans mon code.

    Ca serait vraiment sympa de me décoincer !
    Merci

    Manu

  2. #2
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour.....

    Effectivement tu as une petite erreur de syntaxe dans la ligne de code suivante.:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , [ID participant] = " & Me.[Part_Id]"
    ......à remplacer de cette façon..:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , "[ID participant]=  " & Me.Part_Id
    Dans la ...tu trouveras une explication plus détaillée concernant la syntaxe a adopter en fonction du type de ton champ (Texte, numérique.)

    Comment inclure des champs d'un formulaire dans une requête ?
    http://access.developpez.com/faq/?pa...riteres#txtQry

    Bonne continuation....
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  3. #3
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour,

    Transforme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , [ID participant] = " & Me.[Part_Id]"
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , [ID participant] = " & Me.[Part_Id]
    Si cela ne marche pas vérifie la nature de Me.[Part_Id]. Si c'est de l'alphanumérique, transforme ton code en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm stDocName, , , [ID participant] = '" & Me.[Part_Id] & "'"
    Courage
    Gabout

  4. #4
    Membre expérimenté Avatar de Gabout
    Homme Profil pro
    Utilisateur autodidacte
    Inscrit en
    Mai 2006
    Messages
    1 404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Utilisateur autodidacte

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 404
    Points : 1 683
    Points
    1 683
    Par défaut
    Bonjour FreeAccess,

    Désolé, je n'avais pas vu ta réponse
    Gabout

  5. #5
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour Gabout.....

    ....cela lui fera une confirmation.....

    Par contre attention aux guillemets.......
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Bonsoir !

    Merci beaucoup pour vos réponses rapide.

    En effet, plus de problème de syntaxe. Cependant le passage de paramètre ne marche pas : ID participant reste à 0 .
    Il ne me semble pas qu'il y ait une erreur de conversion de type: Les deux sont des "numbers" (enfin [ID part] est un Auto number).

    Le code actuel :
    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 Command171_Click()
    On Error GoTo Err_Command171_Click
     
        Dim stDocName As String
        Dim stLinkCriteria As String
     
        stDocName = "Inscription"
        DoCmd.OpenForm "Inscription", , , , acFormAdd, , "[ID participant]=  " & Me.Part_Id
        DoCmd.Close acForm, "Partipants"
    Exit_Command171_Click:
        Exit Sub
     
    Err_Command171_Click:
        MsgBox Err.Description
        Resume Exit_Command171_Click
     
    End Sub
    Une idée ?

    A+

  7. #7
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Ok.....autant pour moi, je n'avais pas lu complétement ton explication.....
    J'aimerais à partir du formulaire "participant", un bouton qui :
    -Ouvre le formulaire "inscription"
    -remplisse le champs ID_Participant avec le champ ID_Participant (primary key de la table "Participant".
    -Ferme le formulaire "particpants".
    ...donc question, à quoi correspond ton champ Me.Part_Id...
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Citation Envoyé par FreeAccess Voir le message
    Ok.....autant pour moi, je n'avais pas lu complétement ton explication.....

    ...donc question, à quoi correspond ton champ Me.Part_Id...
    Merci pour ta réponse.
    En effet, je m'étais planté dans l'explication. C'est corrigé.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Voici ma base de donnée, si quelqu'un à 5 minutes pour regarder au cas ou ....
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip db1.zip (440,6 Ko, 130 affichages)

  10. #10
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Sans regarder ta base.....si tu veux pouvoir passer une valeur d'un formulaire à l'autre, tu peux procéder ainsi....

    Sur ton formulaire "participants" tu a ton champ [Part_Id] qui contient une valeur soit en saisie ou lié à une table...

    Sur ce même formulaire, ton bouton de contrôle qui va ouvrir le formulaire "inscription" et passer en paramètres la valeur de ton champ [Part_Id]..:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub cmdOuvrir_Click()
    DoCmd.OpenForm "inscription", , , , , , Me.Part_Id
    End Sub
    .....puis sur l'événement "Sur ouverture" du formulaire "inscription"....:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
    Me.Id_Participant.Value = OpenArgs
    End Sub
    ..tu adapte aux noms de tous tes contrôles.....

    Pour plus de précisions, regarde l'aide d'Access sur l'argument OpenArgs de OpenForm....
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Re Re salut,
    Merci pour tes réponses.

    J'avais déjà essayé cette méthode. Il doit y avoir quelque chose que j'ai pas compris.

    Dans le code du bouton j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Command171_Click()
    DoCmd.OpenForm "inscription", , , , , , Me.Part_Id
    End Sub
    Dans le code de la page "inscrption" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
    Me.ID_part.Value = OpenArgs
    End Sub
    Et j'obtiens le message d'erreur suivant :
    " Compile Error :

    Method or Data mumber not found"

  12. #12
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    ........je te l'avais dis....
    ..tu adapte aux noms de tous tes contrôles.....
    ....et je ne pense pas que tu possède un champ nommé "Part_Id" sur ton formulaire "participants".......mais plutôt "Text166".

    Ensuite quand tu ouvre ton formulaire "inscription" tu dois te positionner sur un enregistrement vide....
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Salut,
    Logiquement j'ai bien un champ ""Part_Id" sur le formulaire "participant" (cela ne marche toujours pas avec "text166"

    J'ai fait les modifications suivantes (je confondais valeur d'une champ et champ d'un formulaire) :

    Dans le code du bouton j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Command171_Click()
    DoCmd.OpenForm "inscription", , , , , , Me.Text166.Value 
    End Sub

    Dans le code de la page "inscription" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
    Me.Text129.Value = OpenArgs
    End Sub

    Et j'ai le message d'erreur suivant :
    You can't assign a value to this object.
    Par contre qu'entends-tu par :
    tu dois te positionner sur un enregistrement vide....

    Je pense qu'il me manque de gros prérequis sur Access, j'essaye quand même de me débrouiller à l'aide des FAQ.
    En tout cas , merci à vs !

  14. #14
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    ...(je confondais valeur d'une champ et champ d'un formulaire)
    ........et oui, cela est courant...d'ou la necessité de correctement nommé tous ses contrôles de façon claire..

    Maintenant, si j'ai bien compris ce que tu voulais faire avec ta base....
    ...lors de l'inscription d'une personne tu souhaite "récupérer" la valeur du champ [Part_Id] contenue dans ton contrôle (Text166).....et lors de l'ouverture du formulaire "inscription" recopier cette valeur dans le champ (Text123).

    La première partie de ton code réalise cela correctement.:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenForm "inscription", , , , , , Me.Text166.Value
    ...ici OpenArgs contiendra la valeur de ton contrôle (Text166)

    Puisque tu va créer une nouvelle inscription pour cette personne, place directement ton Formulaire "inscription" sur un enregistrement vide...:
    Propriété "Entrée données" = oui
    ...et tu modifie le code sur l'événement "Sur ouverture"...:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_Open(Cancel As Integer)
    Me.Text123.DefaultValue = OpenArgs
    End Sub
    ...alors cela est-il mieux...
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Arrrrrrrrrrrggggggggggg

    Merci beaucoup pour tes réponses claires et rapides mais ....
    J'ai modifié la proprieté "Entrée données" = oui .

    Ensuite j'ai modifié le code "sur ouverture" de mon formulaire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Form_Open(Cancel As Integer)
    DoCmd.GoToRecord , , acNewRec // Pour ajouter un nouvel enregistrement.
    Me.Text123.DefaultValue = OpenArgs
    End Sub
    Et ............ Je me retrouve toujours avec le message d'erreur :
    "Compile Error :

    Method or Data mumber not found"

    On va y arriver !

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 13
    Points
    13
    Par défaut
    Je sais pas comment te remercier !!!

    Si jamais un jour tu as besoin d'un coup de main en assembleur je suis la !

  17. #17
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Houla, "l'assembleur" ça fait au moins 20 ans que je n'y ai plus mis le nez.....mais merci quand même.....

    Et n'oublie pas si ton problème est réglé de mettre le tag
    FreeAccess
    "Petit à petit l'araignée tisse sa toile"

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

Discussions similaires

  1. [VBA] ouvrir un formulaire de modification de champs
    Par dalmasma dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/07/2007, 15h10
  2. Réponses: 6
    Dernier message: 03/04/2007, 10h19
  3. ouvrir un formulaire sans ouvrir access
    Par Vincent623 dans le forum IHM
    Réponses: 25
    Dernier message: 28/12/2006, 09h34
  4. Réponses: 1
    Dernier message: 06/07/2006, 14h44
  5. Réponses: 2
    Dernier message: 05/07/2006, 16h52

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