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

D' où vient l'erreur ?

2 réponses
Avatar
Emilie
Bonsoir à toutes et à tous ,

Voilà j'ai un champs " Montant " dans mon form principal et dans lequel on
saisit une somme ; pour être sûre que personne n'oublie de saisir dans ce
champs j'ai une petite procédure qui a l'avantage de laisser la main si
jamais on doit rnregistrer un client qui ne paie pas ( travail à refaire,
erreur diverses etc........)
Voici ma procedure :

Private Sub Form_BeforeUpdate(Cancel As Integer)
' Si l'utilisateur a saisi un nom de client, vérifie le montant

Dim StrMessage As String
Dim IntOptions As Integer
Dim BytChoice As Byte

If IsNull(Montant) Then
StrMessage = " Vous devez saisir un montant ; voulez-vous valider
cet enregistrement ?"
IntOptions = vbQuestion + vbOKCancel
BytChoice = MsgBox(StrMessage, IntOptions)

If BytChoice = vbCancel Then
Montant.SetFocus
Cancel = True
End If
End If
End Sub

Le problème est que cela fonctionne si on essaie d'effacer une somme déjà
saisie dans ce champs ; par contre, si je saisie un nouveau client et que
*volontairement* je ne remplie pas mon champs" Montant ", il ne se passe
rien ; je passe à un autre champs sans problème et valide mon enregistrement
sans aucun message .
D'où vient mon erreur ? Qu'est ce que j'ai pu faire pour que cela ne
fonctionne pas comme je voudrais ?

Merci de votre aide et de vos lumières !!

A+

Emilie

2 réponses

Avatar
Raymond [mvp]
Bonsoir Emilie.

Tu ne testes que le cas où le montant est null, donc dans tout autre cas ça
passe tout droit.
si la valeur par défaut de montant est 0 par exemple, tu ne passeras jamais
dans la procédure.
il faut que tu rajoutes soit un complément else au if actuel ou que tu
testes d'autres valeurs pour montant.

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


"Emilie" a écrit dans le message de
news:%23LMD$
Bonsoir à toutes et à tous ,

Voilà j'ai un champs " Montant " dans mon form principal et dans lequel on
saisit une somme ; pour être sûre que personne n'oublie de saisir dans ce
champs j'ai une petite procédure qui a l'avantage de laisser la main si
jamais on doit rnregistrer un client qui ne paie pas ( travail à refaire,
erreur diverses etc........)
Voici ma procedure :

Private Sub Form_BeforeUpdate(Cancel As Integer)
' Si l'utilisateur a saisi un nom de client, vérifie le montant

Dim StrMessage As String
Dim IntOptions As Integer
Dim BytChoice As Byte

If IsNull(Montant) Then
StrMessage = " Vous devez saisir un montant ; voulez-vous valider
cet enregistrement ?"
IntOptions = vbQuestion + vbOKCancel
BytChoice = MsgBox(StrMessage, IntOptions)

If BytChoice = vbCancel Then
Montant.SetFocus
Cancel = True
End If
End If
End Sub

Le problème est que cela fonctionne si on essaie d'effacer une somme déjà
saisie dans ce champs ; par contre, si je saisie un nouveau client et que
*volontairement* je ne remplie pas mon champs" Montant ", il ne se passe
rien ; je passe à un autre champs sans problème et valide mon
enregistrement

sans aucun message .
D'où vient mon erreur ? Qu'est ce que j'ai pu faire pour que cela ne
fonctionne pas comme je voudrais ?

Merci de votre aide et de vos lumières !!

A+

Emilie







Avatar
Emilie
Bonsoir Raymond ,

Raymond [mvp]...
Wrote :

Tu ne testes que le cas où le montant est null, donc dans tout autre
cas ça passe tout droit.
si la valeur par défaut de montant est 0 par exemple, tu ne passeras
jamais dans la procédure.
il faut que tu rajoutes soit un complément else au if actuel ou que tu
testes d'autres valeurs pour montant.


Je ne sais pas trop comment tester avecdes valeurs; effectivement la valeur
par defaut est 0 ; ce que je ne m'explique pas c'est que si j'efface une
somme, ça fonctionne ; par contre si le champs est vide, je passe au travers
de ma procédure ! !

Je vais donc essayer ton conseil, à savoir essayer de rajouter un complément
Else.

Merci Raymond

A+

Emilie