Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formulaire controle saisie

8 réponses
Avatar
claudem
Bonjour,

Je débute dans Access et je ne sais pas comment faire...
Dans mon formulaire lié sur une table je dois saisir un champ1 montant
initial, ensuite un champ2 montant renegocie et lorsque ce champ est rempli,
il doit controler que champ2 est = ou inférieur à champ1 et si ok me
demander de ne pas valider cet enregistrement.
Si qq peut m'aider...
Merci d'avance,
Claude

8 réponses

Avatar
Raymond [mvp]
Bonsoir.

dans la propriété Valide si de Champ1, entrer: >[Champ2]
dans la propriété Valide si de Champ2, entrer: =<[Champ1]

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"" a écrit
dans le message de news:

Bonjour,

Je débute dans Access et je ne sais pas comment faire...
Dans mon formulaire lié sur une table je dois saisir un champ1 montant
initial, ensuite un champ2 montant renegocie et lorsque ce champ est
rempli,
il doit controler que champ2 est = ou inférieur à champ1 et si ok me
demander de ne pas valider cet enregistrement.
Si qq peut m'aider...
Merci d'avance,
Claude


Avatar
claudem
Bonjour,

Merci, mais lorsque le contrôle se fait j'ai bien le message d'avertissement
et je boucle dessus au lieu d'annuler la saisie de l'enregistrement complet
dans le formulaire


Bonsoir.

dans la propriété Valide si de Champ1, entrer: >[Champ2]
dans la propriété Valide si de Champ2, entrer: =<[Champ1]

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"" a écrit
dans le message de news:

Bonjour,

Je débute dans Access et je ne sais pas comment faire...
Dans mon formulaire lié sur une table je dois saisir un champ1 montant
initial, ensuite un champ2 montant renegocie et lorsque ce champ est
rempli,
il doit controler que champ2 est = ou inférieur à champ1 et si ok me
demander de ne pas valider cet enregistrement.
Si qq peut m'aider...
Merci d'avance,
Claude







Avatar
Raymond [mvp]
dans ce cas il faut passer par du code dans l'événement AfterUpdate des deux
contrôles et s'il y a erreur de saisie, afficher un message par msgbox et
demander confirmation de l'annulation complète de la saisie que tu feras par
Me.Undo

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"" a écrit
dans le message de news:

Bonjour,

Merci, mais lorsque le contrôle se fait j'ai bien le message
d'avertissement
et je boucle dessus au lieu d'annuler la saisie de l'enregistrement
complet
dans le formulaire



Avatar
claudem
Merci pour ton aide mais je suis novice en code... alors si je peux abuser je
suis preneur de ta prose pour ces deux évènements..


dans ce cas il faut passer par du code dans l'événement AfterUpdate des deux
contrôles et s'il y a erreur de saisie, afficher un message par msgbox et
demander confirmation de l'annulation complète de la saisie que tu feras par
Me.Undo

--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"" a écrit
dans le message de news:

Bonjour,

Merci, mais lorsque le contrôle se fait j'ai bien le message
d'avertissement
et je boucle dessus au lieu d'annuler la saisie de l'enregistrement
complet
dans le formulaire








Avatar
Raymond [mvp]
Tu peux faire ceci, sous réserve de bien faire composer le champ supérieur
en premier et de compléter la procédure selon tes besoins.

Private Sub champ1_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.Champ2) Then
If Nz(Me.champ1, 0) <= Nz(Me.Champ2, 0) Then
If MsgBox("Erreur composition, confirmer annulation globale",
vbYesNo, "Champ1 <= Champ2") = vbYes Then
Me.Undo
Cancel = True
Else
Me.champ1.Undo
Cancel = True
End If
End If
End If
End Sub

Private Sub Champ2_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.champ1) Then
If Nz(Me.Champ2, 0) > Nz(Me.champ1, 0) Then
If MsgBox("Erreur composition, confirmer annulation globale",
vbYesNo, "Champ2 > Champ1") = vbYes Then
Me.Undo
Cancel = True
Else
Me.Champ2.Undo
Cancel = True
End If
End If
End If
End Sub

bien vérifier car non testé en réel dans une base
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"" a écrit
dans le message de news:

Merci pour ton aide mais je suis novice en code... alors si je peux abuser
je
suis preneur de ta prose pour ces deux évènements..



Avatar
claudem
Un grand merci raymond


Tu peux faire ceci, sous réserve de bien faire composer le champ supérieur
en premier et de compléter la procédure selon tes besoins.

Private Sub champ1_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.Champ2) Then
If Nz(Me.champ1, 0) <= Nz(Me.Champ2, 0) Then
If MsgBox("Erreur composition, confirmer annulation globale",
vbYesNo, "Champ1 <= Champ2") = vbYes Then
Me.Undo
Cancel = True
Else
Me.champ1.Undo
Cancel = True
End If
End If
End If
End Sub

Private Sub Champ2_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.champ1) Then
If Nz(Me.Champ2, 0) > Nz(Me.champ1, 0) Then
If MsgBox("Erreur composition, confirmer annulation globale",
vbYesNo, "Champ2 > Champ1") = vbYes Then
Me.Undo
Cancel = True
Else
Me.Champ2.Undo
Cancel = True
End If
End If
End If
End Sub

bien vérifier car non testé en réel dans une base
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"" a écrit
dans le message de news:

Merci pour ton aide mais je suis novice en code... alors si je peux abuser
je
suis preneur de ta prose pour ces deux évènements..








Avatar
claudem
Rebonjour Raymond,

Juste un petit souci... tout fonctionne bien quand champ2 = champ1.. les 2
se réinitialisent à blanc .. mais lorsque champ2 est inférieur je boucle sur
un messagebox que je n'arrives pas à trouver avec les propriétes des
contrôles.. de ce fait ca me fait une boucle et les champs ne sont pas
reinitialisés...
Peux-tu encore m'aider?
Merci


Un grand merci raymond


Tu peux faire ceci, sous réserve de bien faire composer le champ supérieur
en premier et de compléter la procédure selon tes besoins.

Private Sub champ1_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.Champ2) Then
If Nz(Me.champ1, 0) <= Nz(Me.Champ2, 0) Then
If MsgBox("Erreur composition, confirmer annulation globale",
vbYesNo, "Champ1 <= Champ2") = vbYes Then
Me.Undo
Cancel = True
Else
Me.champ1.Undo
Cancel = True
End If
End If
End If
End Sub

Private Sub Champ2_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.champ1) Then
If Nz(Me.Champ2, 0) > Nz(Me.champ1, 0) Then
If MsgBox("Erreur composition, confirmer annulation globale",
vbYesNo, "Champ2 > Champ1") = vbYes Then
Me.Undo
Cancel = True
Else
Me.Champ2.Undo
Cancel = True
End If
End If
End If
End Sub

bien vérifier car non testé en réel dans une base
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"" a écrit
dans le message de news:

Merci pour ton aide mais je suis novice en code... alors si je peux abuser
je
suis preneur de ta prose pour ces deux évènements..










Avatar
claudem
pas de panique, ça doit venir de mon formulaire qui a gardé une nacienne
propriete ... j'aen ai fait un nouveau et ca marche..


Rebonjour Raymond,

Juste un petit souci... tout fonctionne bien quand champ2 = champ1.. les 2
se réinitialisent à blanc .. mais lorsque champ2 est inférieur je boucle sur
un messagebox que je n'arrives pas à trouver avec les propriétes des
contrôles.. de ce fait ca me fait une boucle et les champs ne sont pas
reinitialisés...
Peux-tu encore m'aider?
Merci


Un grand merci raymond


Tu peux faire ceci, sous réserve de bien faire composer le champ supérieur
en premier et de compléter la procédure selon tes besoins.

Private Sub champ1_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.Champ2) Then
If Nz(Me.champ1, 0) <= Nz(Me.Champ2, 0) Then
If MsgBox("Erreur composition, confirmer annulation globale",
vbYesNo, "Champ1 <= Champ2") = vbYes Then
Me.Undo
Cancel = True
Else
Me.champ1.Undo
Cancel = True
End If
End If
End If
End Sub

Private Sub Champ2_BeforeUpdate(Cancel As Integer)
If Not IsNull(Me.champ1) Then
If Nz(Me.Champ2, 0) > Nz(Me.champ1, 0) Then
If MsgBox("Erreur composition, confirmer annulation globale",
vbYesNo, "Champ2 > Champ1") = vbYes Then
Me.Undo
Cancel = True
Else
Me.Champ2.Undo
Cancel = True
End If
End If
End If
End Sub

bien vérifier car non testé en réel dans une base
--
@+
Raymond Access MVP
http://OfficeSystem.Access.free.fr/
http://OfficeSystem.Access.free.fr/runtime/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"" a écrit
dans le message de news:

Merci pour ton aide mais je suis novice en code... alors si je peux abuser
je
suis preneur de ta prose pour ces deux évènements..