[VBA et Access] Annuler une modification

langevert -  
 langevert -
Bonjour,

J'ai crée un formulaire sur Access 2000 qui agit directement sur une table (pour modifier les infos)
Le formulaire est de type "formulaire continus".
Quand je modifie un enregistrement, il est modifié uniquement quand on clique en dehors de celui-ci (soit quand on clique sur un autre enregistrement soit quand on ferme le formulaire).

J'ai crée un script par VBA :

Code :

Private Sub Form_BeforeUpdate(Cancel As Integer) Dim temp temp = DLookup("id", "MATABLE", "nom=" & Me.nom & "") If IsNull(temp) Then Me.Undo MsgBox "Cette personne n'existe pas.", vbCritical, "Erreur" End If End Sub


Dans le cas où il m'affiche ce message d'erreur, il m'efface toutes mes modifications apportées sur l'enregistrement et me mets les valeurs originales. (grâce à la ligne Me.Undo).

Existe-il une façon d'annuler la modification sans que l'on retrouve les valeurs initiales ? Je m'explique : Je voudrai, quand le nom entré n'existe pas (dans une autre table) , il m'affiche le message d'erreur, annule la procédure de MAJ mais garde mon nom que j'ai rentré (pour que je puisse le modifier) au lieu de mettre le nom initial qui était dans la base avant la MAJ.

J'ai remarqué que Access le faisait parfaitement si on mettait une condition dans "Valide Si" : Si la valeur n'est pas valide, il y a un message d'erreur et il y a toujours notre valeur entrée (qui n'est pas valide) qui est affichée à l'écran

Avez-vous une idée pour faire cela ?

Merci d'avance

1 réponse

langevert
 
Désolé pour la mise en page de la partie code, mais ca a foiré... :s Voici le code :

Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim temp
temp = DLookup("id", "MATABLE", "nom=" & Me.nom & "")
If IsNull(temp) Then
Me.Undo
MsgBox "Cette personne n'existe pas.", vbCritical, "Erreur"
End If
End Sub
0