Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2008, 16h37   #1
Invité de passage
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 4
Points : 4
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 :
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
Superbretzel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 17h32   #2
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 319
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 319
Points : 2 871
Points : 2 871
Bonjour.....

Effectivement tu as une petite erreur de syntaxe dans la ligne de code suivante.:
Code :
DoCmd.OpenForm stDocName, , , [ID participant] = " & Me.[Part_Id]"
......à remplacer de cette façon..:
Code :
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"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 17h32   #3
Membre Expert
 
Avatar de Gabout
 
Inscription : mai 2006
Messages : 1 298
Détails du profil
Informations personnelles :
Âge : 57
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : mai 2006
Messages : 1 298
Points : 1 289
Points : 1 289
Bonjour,

Transforme
Code :
DoCmd.OpenForm stDocName, , , [ID participant] = " & Me.[Part_Id]"
en
Code :
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 :
DoCmd.OpenForm stDocName, , , [ID participant] = '" & Me.[Part_Id] & "'"
Courage
Gabout est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 17h33   #4
Membre Expert
 
Avatar de Gabout
 
Inscription : mai 2006
Messages : 1 298
Détails du profil
Informations personnelles :
Âge : 57
Localisation : France, Ille et Vilaine (Bretagne)

Informations forums :
Inscription : mai 2006
Messages : 1 298
Points : 1 289
Points : 1 289
Bonjour FreeAccess,

Désolé, je n'avais pas vu ta réponse
Gabout est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 17h35   #5
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 319
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 319
Points : 2 871
Points : 2 871
Bonjour Gabout.....

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

Par contre attention aux guillemets.......
__________________
FreeAccess
"Petit à petit l'araignée tisse sa toile"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 17h47   #6
Invité de passage
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 4
Points : 4
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 :
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+
Superbretzel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 17h59   #7
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 319
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 319
Points : 2 871
Points : 2 871
Ok.....autant pour moi, je n'avais pas lu complétement ton explication.....
Citation:
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"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 18h07   #8
Invité de passage
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 4
Points : 4
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é.
Superbretzel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 18h09   #9
Invité de passage
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 4
Points : 4
Voici ma base de donnée, si quelqu'un à 5 minutes pour regarder au cas ou ....
Fichiers attachés
Type de fichier : zip db1.zip (440,6 Ko, 13 affichages)
Superbretzel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 18h18   #10
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 319
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 319
Points : 2 871
Points : 2 871
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 :
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 :
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"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 18h40   #11
Invité de passage
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 4
Points : 4
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 :
1
2
3
Private Sub Command171_Click()
DoCmd.OpenForm "inscription", , , , , , Me.Part_Id
End Sub
Dans le code de la page "inscrption" :
Code :
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"
Superbretzel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 19h00   #12
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 319
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 319
Points : 2 871
Points : 2 871
........je te l'avais dis....
Citation:
..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"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 20h22   #13
Invité de passage
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 4
Points : 4
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 :
1
2
3
Private Sub Command171_Click()
DoCmd.OpenForm "inscription", , , , , , Me.Text166.Value 
End Sub

Dans le code de la page "inscription" :
Code :
1
2
3
Private Sub Form_Open(Cancel As Integer)
Me.Text129.Value = OpenArgs
End Sub

Et j'ai le message d'erreur suivant :
Citation:
You can't assign a value to this object.
Par contre qu'entends-tu par :
Citation:
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 !
Superbretzel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 21h03   #14
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 319
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 319
Points : 2 871
Points : 2 871
Citation:
...(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 :
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 :
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"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 21h20   #15
Invité de passage
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 4
Points : 4
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 :
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 !
Superbretzel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 22h12   #16
Invité de passage
 
Inscription : février 2008
Messages : 21
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 21
Points : 4
Points : 4
Je sais pas comment te remercier !!!

Si jamais un jour tu as besoin d'un coup de main en assembleur je suis la !
Superbretzel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2008, 22h16   #17
Expert Confirmé
 
Avatar de FreeAccess
 
Homme
Inscription : mars 2006
Messages : 2 319
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2006
Messages : 2 319
Points : 2 871
Points : 2 871
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"
FreeAccess est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h45.


 
 
 
 
Partenaires

Hébergement Web