marb03 dit :
Dans l'onglet "Evènement" tu as une propriété "sur fermeture" dans laquelle tu peux indiquer une procédure événementielle ou pointer sur une macro
OK
Je rappelle toutefois dans quel environnement je désire utiliser cet état :
A partir de la base de travail, j'appelle un état situé dans une autre base (base externe) par du code tiré d'un tuto de Cafeine modifié pour l'adapter à mon cas
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Set objAccess = New Access.Application
With objAccess
'ouverture de la base externe
.OpenCurrentDatabase strMDB
'les commandes sont les mêmes que pour la base en cours
' hormis le "objAccess."
' ouverture de l'état
msg = MsgBox("Pour refermer l'aperçu, taper sur la touche 'a'", vbOKOnly)
.Visible = True
.DoCmd.OpenReport strReport, acViewPreview, , "[" & strNRef & "] = " & lngRef
'boucle d'attente de l'appui sur 'a'
Do
If GetAsyncKeyState(vbKeyA) <> 0 Then Exit Do
Loop
.Visible = False
End If
' fermeture de l'état sans sauvegarde
.DoCmd.Close acReport, strReport, acSaveNo
End With |
L'appui sur 'a' ferme bien l'état
Mais l'utilisateur est tenté de cliquer sur la case X de la controlbox de l'état, il ne ferme alors que l'état et non la base externe.
il faudrait donc que cette procédure liée à ce bouton X soit temporaire, et elle ne devrait pas agir lorsque l'état est ouvert à partir de la base à laquelle il appartient.
Je pensais à créer par code une procédure événementielle temporaire sur OnClose du genre
. .Reports(strReport).OnClose = ?????
placée avant la boucle.
Est-ce possible et comment ?
Merci
Amitiés
Partager