OVH Cloud OVH Cloud

If Imbriqué

7 réponses
Avatar
angela
Bonjour à tous,
Lorsque j'exécute ce code

Private Sub Form_Close()
If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
CodeNiv.SetFocus
ElseIf (Me!CodeNiv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE", vbExclamation
CodeLocal.SetFocus
End If
End Sub

Seule la seconde condition est vérifiée. je ne comprends pas pourquoi.
Merci d'avance
Angéla

7 réponses

Avatar
JMD
Bj,

les deux conditions sont valides, quoi que je rajouterais bien Isnull après
le ElseIf, mais c'est l'évènement qui n'est pas le bon, car il ferme le
formulaire dans tous les cas. Ca marche sur l'évènement "Sur libération"

A +


"angela" a écrit dans le message de news:

Bonjour à tous,
Lorsque j'exécute ce code

Private Sub Form_Close()
If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
CodeNiv.SetFocus
ElseIf (Me!CodeNiv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE", vbExclamation
CodeLocal.SetFocus
End If
End Sub

Seule la seconde condition est vérifiée. je ne comprends pas pourquoi.
Merci d'avance
Angéla




Avatar
JMD
Non, j'ai rien dit, ça marche pas sur libération non plus... Mes excuses.


"angela" a écrit dans le message de news:

Bonjour à tous,
Lorsque j'exécute ce code

Private Sub Form_Close()
If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
CodeNiv.SetFocus
ElseIf (Me!CodeNiv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE", vbExclamation
CodeLocal.SetFocus
End If
End Sub

Seule la seconde condition est vérifiée. je ne comprends pas pourquoi.
Merci d'avance
Angéla




Avatar
Bruno MAZÉPA
Bonjour Angela,
Une erreur c'est glissée dans tes lignes, :
Il faut également mettre "IsNull" au deuxième test
Private Sub Form_Close()
If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
CodeNiv.SetFocus
If IsNull(Me!CodeNiv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE", vbExclamation
CodeLocal.SetFocus
End If
End Sub

--
Cordialement.
"angela" a écrit dans le message de
news:
Bonjour à tous,
Lorsque j'exécute ce code

Private Sub Form_Close()
If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
CodeNiv.SetFocus
ElseIf (Me!CodeNiv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE", vbExclamation
CodeLocal.SetFocus
End If
End Sub

Seule la seconde condition est vérifiée. je ne comprends pas pourquoi.
Merci d'avance
Angéla




Avatar
JMD
Par contre, ça marche comme ça :

If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
Else
End If
Codeniv.SetFocus
If IsNull(Me!Codeniv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE"
CodeLocal.SetFocus
End If
End Sub


"JMD" a écrit dans le message de news:
O$
Non, j'ai rien dit, ça marche pas sur libération non plus... Mes excuses.


"angela" a écrit dans le message de news:

Bonjour à tous,
Lorsque j'exécute ce code

Private Sub Form_Close()
If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
CodeNiv.SetFocus
ElseIf (Me!CodeNiv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE", vbExclamation
CodeLocal.SetFocus
End If
End Sub

Seule la seconde condition est vérifiée. je ne comprends pas pourquoi.
Merci d'avance
Angéla








Avatar
JMD
Bruno,

même avec Isnull, ça ne fonctionne pas en conditions imbriquées.

Cordialement,

"Bruno MAZÉPA" <ReplyToNewsGroup> a écrit dans le message de news:

Bonjour Angela,
Une erreur c'est glissée dans tes lignes, :
Il faut également mettre "IsNull" au deuxième test
Private Sub Form_Close()
If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
CodeNiv.SetFocus
If IsNull(Me!CodeNiv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE", vbExclamation
CodeLocal.SetFocus
End If
End Sub

--
Cordialement.
"angela" a écrit dans le message de
news:
Bonjour à tous,
Lorsque j'exécute ce code

Private Sub Form_Close()
If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
CodeNiv.SetFocus
ElseIf (Me!CodeNiv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE", vbExclamation
CodeLocal.SetFocus
End If
End Sub

Seule la seconde condition est vérifiée. je ne comprends pas pourquoi.
Merci d'avance
Angéla








Avatar
Rv
Salut,
Il faut peut-être tester isnull() mais aussi la chaîne vide = "" ce qui
peut s'écrire:

If IsNull(Me!CodeLocal) or Me!CodeLocal="" Then

ou bien

If nz(Me!CodeLocal,"")="" then

A+

Rv

"JMD" a écrit dans le message de
news:
Bruno,

même avec Isnull, ça ne fonctionne pas en conditions imbriquées.

Cordialement,

"Bruno MAZÉPA" <ReplyToNewsGroup> a écrit dans le message de news:

Bonjour Angela,
Une erreur c'est glissée dans tes lignes, :
Il faut également mettre "IsNull" au deuxième test
Private Sub Form_Close()
If IsNull(Me!CodeLocal) Then
MsgBox "LE Local EST UN CHAMPS OBLIGATOIRE"
CodeNiv.SetFocus
If IsNull(Me!CodeNiv) Then
MsgBox "LE Niveau EST UN CHAMPS OBLIGATOIRE", vbExclamation
CodeLocal.SetFocus
End If
End Sub




Avatar
Angéla
Merci à tous.
En fait ça marche si je n'imbrique pas les SI...
Maintenant le problème est que quand un de mes champs est vide, il affiche
bien le message mais il sort de mon formulaire sans me donner la
possibilité de modifier la valeur de mon champs.
Angéla