[ Access ] Comment mettre à jour un formulaire

Bonjour,

j’ai un formulaire A qui a un bouton 1 pour ouvrir un formulaire B.
Sur le B, y a un bouton 2 pour ajouter un enregistrement.

J’aimerais que lorsque bouton 2 est enfoncé, le formulaire B se ferme et met à jour le formulaire A.

Mais comme je ne suis pas spécialiste… :heink:
Je fais appel à une âme charitable pour me guider.

merci d’avance

:jap:

Tu mets ce code pour ton formulaire B que tu associe à ton bouton 2 - bouton que tu appeleras “bouton2” :
[cpp]Private Sub bouton2_Click()
On Error GoTo erreur

DoCmd.GoToRecord , , acNewRec
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
DoCmd.Close

sortir:
Exit Sub

erreur:
MsgBox Err.Description
Resume sortir

End Sub[/cpp]

Si cela ne marche pas ajoute ce code au formulaire A :
[cpp]Private Sub Form_Activate()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
End Sub[/cpp]

ok merci Tyrion
malheureusement j’ai un message d’erreur :
La commande ou l’action ‘Actialiser’ n’est pas disponible pour l’instant.

Remplace : DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70 par Form.refresh

Je fais tout de tête :wink:

Toujours pas … :cry:
J’ai remplacé comme tu m’as dis dans le code du bouton et dans Form_Activate()

:stuck_out_tongue:
Le truc consiste à fermer un formulaire après avoir ouvert l’autre (par une sub “sur activation”)

Private Sub Commande81_Click()
On Error GoTo Err_Commande81_Click

Dim stDocName As String
Dim stLinkCriteria As String

stDocName = "formulaire1"
DoCmd.OpenForm stDocName, , , stLinkCriteria

Exit_Commande81_Click:
Exit Sub

Err_Commande81_Click:
MsgBox Err.Description
Resume Exit_Commande81_Click

End Sub

Private Sub Form_Activate()
DoCmd.Close , “formulaire1”
End Sub

Pour l’autre formulaire on aura quelque chose de similaire

Essaye en enlevant le code que je t’ai donné pour le formulaire A et retire la ligne DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70 du formulaire B.

En effet quand tu mets à jour via un formulaire les informations dans ta base de données elle sont immédiatement prise en compte. Donc normalement la mise à jour se voie immédiatement sur le formulaire A même resté ouvert.

J’ai testé avec Access 2003 et peut être que si tu es sous une autre version cela ne marche pas. Je précise qu’il faut que tes deux formulaires soient liés tous les deux à la table accédé (ie clic droit carré noir en haut à gauche du formulaire puis propriété, onglet données et dans source tu choisis ta table - tu peux ainsi avoir les champs liés avec Affichage>Liste des champs que tu glisses dans ton formulaire)

Tiens moi au courant :wink:

J’ai aussi Access 2003…

j’ai essayé comme ça :

Formulaire A :
[#00b846]Option Compare Database

Private Sub Form_Activate()
Me.Refresh
End Sub[/#00b846]

Formulaire B :
[#000ef0]Option Compare Database

Private Sub Save_Click()
On Error GoTo Err_Save_Click

DoCmd.GoToRecord , , acNewRec
DoCmd.Close

Exit_Save_Click:
Exit Sub

Err_Save_Click:
MsgBox Err.Description
Resume Exit_Save_Click

End Sub[/#000ef0]

mes 2 formulaires ont pour source ma table mais ça marche pas …

:??:

Tu peux enlever :
Private Sub Form_Activate()
Me.Refresh
End Sub

Apparement ça ne sert à rien.

Pour le code du formulaire B chez moi ça marche.

Est ce que quand tu fais les modifs dans ton formulaire B, ils sont bien pris en compte dans ta table ?

oui :sweat:
si je ferme et réouvre le formulaire B, j’ai bien mon listing à jour … :pt1cable:

J’ai trouvé la réponse sur un autre forum … :stuck_out_tongue:

Il fallait mettre :
Forms(“Formulaire A”).Requery
dans le bouton 2

@+ :stuck_out_tongue: