Bonjour,
Voici un exemple généralisé
pour ouvrir un formulaire quelconque à l’endroit où il a été fermé la fois précédente.
Il faut une table
« DerniersConsultés » avec NomDuFormulaire (texte) et DernierConsulté (Numérique long)
Le formulaire doit avoir sa propriété « Bouton Fermer » à Non
Pour sortir, l’utilisateur doit cliquer un bouton. Voici le code associé au click du bouton "
Fermer"
1 2 3 4
| Private Sub Fermer_Click()
Call MémoriserDernierConsulté(Me.Name)
DoCmd.Close acForm, Me.Name
End Sub |
L’événement Sur ouverture du formulaire exécutera le code suivant :
1 2 3 4 5 6 7 8
| Private Sub Form_Open(Cancel As Integer)
'si déjà dans la table --> ouvrir au dernier, si non ne rien faire
If DCount("*", "DerniersConsultés", "NomDuFormulaire = """ _
& Me.Name & """") Then
DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, _
DLookup("DernierConsulté", "DerniersConsultés", "NomDuFormulaire= """ & Me.Name & """")
End If
End Sub |
La Sub "
MémoriserDernierConsulté" appelée à la fermeture est logée dans un module. Voici le code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Public Sub MémoriserDernierConsulté(Formulaire)
Dim sql
DoCmd.SetWarnings False 'supprimer temporairement les messages
'Ce formulaire est-il déjà dans la table ? si oui mettre à jour
If DCount("*", "DerniersConsultés", "NomDuFormulaire = """ _
& Formulaire & """") Then
DoCmd.RunSQL ("UPDATE DerniersConsultés " _
& "SET DernierConsulté = """ & Forms(Formulaire).CurrentRecord & """" _
& "WHERE NomDuFormulaire =""" & Formulaire & """;")
Else ' si non il faut ajouter un item dans la table
DoCmd.RunSQL ("INSERT INTO DerniersConsultés ( NomDuFormulaire, DernierConsulté ) " _
& "SELECT """ & Formulaire & """ AS Expr1, " _
& Forms(Formulaire).CurrentRecord & " AS Expr2;")
End If
DoCmd.SetWarnings True
End Sub |
Il te suffit d'adapter ceci à ton cas.
Au plaisir.
Un exemple Access2000 dans la pièce jointe.
Partager