Bonjour,
J'ai crée un formulaire 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 :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 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
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
Partager