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
Toujours pas …
J’ai remplacé comme tu m’as dis dans le code du bouton et dans Form_Activate()
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
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
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 …
Il fallait mettre :
Forms(“Formulaire A”).Requery
dans le bouton 2
@+