[Access]pré-remplir formulaire en venant d'un autre formulaire

Lucd33 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention   -  
platypus69 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour a tous,

J'ai un problème assez simple sur ACCESS mais je n'arrive pas à trouvez la solution ailleurs,


Je part d'un formulaire "contact" simple affichant un ID et d'autre informations sur un contact a la fois (un seul enregistrement à la fois).

Je voudrais créer un bouton qui ouvre un autre formulaire en mode ajout (que j'appelle history par exemple) qui contient deux champs "description" et "contact" dans le champ contact est supposé ce trouver l'ID d'un contact.

J'aimerais donc que lorsque j'ouvre ce formulaire "history" il ait le champ "contact" pré-rempli avec la valeur du champ ID du formulaire "contact" d'ou je viens.

J'ai toujours utilisé les macro jusqu'ici mais je me dit que ce n'est peut être pas possible sans utiliser de code.

Si vous ne voyez que des solutions impliquant du code VBA, pensez au fait que je n'ais jamais utilisé ça et que je n'ai aucune idée de ce que c'est, mais je suis prêt a essayer de comprendre, juste pour ma solution.

J'espère avoir été clair, je pense que ce n'est vraiment pas sorcier j'ai eu plus compliqué a faire, mais la je ne trouve pas.

4 réponses

Lucd33 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse, je vais essayais ca demain,

Surement la version code car en réalité mon champ qui contient l'ID dans le form "History" est une list box qui prend ses données dans "select ID from contacts"

Car je peut avoir à ouvrir le formulaire depuis un switchboard et donc choisir un ID dans une liste déroulant de tout les IDs. Il faudrait juste que quand je vienne d'un formulaire contact une des valeurs de la liste soit pré-sélectionné mais ta méthode avec code marche peut être
0
Lucd33 Messages postés 11 Date d'inscription   Statut Membre Dernière intervention  
 
Le code semble marcher, merci


j'ai un autre probleme j'essaye de le faire par code aussi mais la syntaxe est jamais bonne j'y comprend vraiment rien.

Je voudrais ouvrir un formulaire avec un critere,

j'ai Un champ prenom sur le premier formulaire que je met en open arg en ouvrant l'autre form ca c'est bon

et le 2eme formulaire qui est une liste ne devrais afficher que les enregistrements dont le champ prenom =[open arg](il peut y en avoir plusieurs).

Une idee de comment faire?
je me disait aue c'est peut etre dans le doc.openform , la ou je suis sense mettre le where criteria mais je ne trouve pas la syntaxe.
0
platypus69 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   7
 
Bonjour,

le passage de l'argument se passe correctement, c'est une bonne chose.

pour sélectionner un élément d'une liste je te laisse regarder le lien suivant : https://access.developpez.com/faq/?page=zdl#SelLignZdl
0
platypus69 Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   7
 
Bonjour Lucd33,

oui il existe bien des solutions à ton problème

-soit en VBA :
Dans ton formulaire Contact: clique sur le bouton qui te permet d'ouvrir le formulaire History, tu vas dans ses propriétés, onglet "événement", "Sur clic", "procédure événementiel", et tu cliques sur le bouton avec les 3 points. La tu va rentrer dans Visual Studio ou du moins sa version ACCESS.

Il devrait apparaître le code suivant :

Private Sub {nom-de-ton-bouton}_Click()

End Sub

il te suffit de mettre dans cette routine le code suivant


DoCmd.OpenForm "history", acNormal, , , acFormAdd, acWindowNormal, {le nom du champ qui correspond à ton id}

le dernier argument de cette fonction s'appelle OpenArg et permet de transmettre une information d'un form à l'autre.

Dans le formulaire History : il faut que dans la fenêtre des propriétés, menu déroulant en haut il soit affiché Formulaire pour que cela s'applique a celui-ci. Tu vas sur l'onglet "événement", "Sur ouverture", "procédure événementiel", et tu cliques sur le bouton avec les 3 points.

Il devrait apparaître le code suivant :

Private Sub history_Open(Cancel As Integer)

End Sub

il te suffit de marquer le code suivant :

Me.{nom de ton champ qui doit contenir l'ID} = Me.OpenArgs

En faite, VBA transmet une donnée d'un form à l'autre et le récupérer pour le mettre où tu veux.

-soit en via l'interface d'access

plus simple si tu ne te sens pas à l'aise avec le VBA

tu vas sur ton form History, tu cliques sur le champs qui doit contenir l'ID. tu vas dans les propriétés, onglet "Données", "Source contrôle" et tu cliques sur les 3 points.

une page s'ouvre, c'est le générateur d'expression. d'ici tu vois toutes les requêtes, formulaires et autres éléments d'ACCESS que tu as créé.
Tu double-clique sur le dossier "Formulaires", double-clique sur "Tous les formulaires". tu clique sur ton form contact et dans la colonne du milieu, tu vas trouver tous les éléments qui existe dans ton formulaire.
tu fais un double-clique sur le nom du champs qui contient l'ID, et il va apparaître dans l'encadré en haut de la fenêtre. tu appuies sur "OK" et le tour est joué.
-1