Menu

Test sur trois valeurs

jadami 52 Messages postés mercredi 14 mars 2007Date d'inscription 8 mars 2018 Dernière intervention - 3 oct. 2017 à 20:52 - Dernière réponse : jadami 52 Messages postés mercredi 14 mars 2007Date d'inscription 8 mars 2018 Dernière intervention
- 5 oct. 2017 à 20:38
Bonjour,

Je voudraiS faire un test sur trois valeurs de mon formulaire mais je ni arrive pas.
'--- teste si la case départ est cocher et la date départ vide
If Me.txtMillLicence <= 2018 Or IsNull(txtMillLicence) Or Me.txtDateDépart <> "" Or IsNull(txtDateDépart) And Me.Cocher97 <> 0 Then

'--- Boite de dialogue par Api
reponse = MessageBox(Me.hwnd, "Il y à une anomalie sur cette fiche. " _
& vbCrLf & vbCrLf & "Veuillez vérifier les champs : ? " _
& vbCrLf & vbCrLf & "MilLicence " & Me.txtMillLicence _
& vbCrLf & "Date de Départ " & Me.txtDateDépart _
& vbCrLf & "Départ " & Me.Cocher97, _
ap_AppTitle(), mb_yes + MB_ICONEXCLAMATION)

If reponse = vbYes Then '2
strMessage = "Anomalie sur la fiche"
Me.lblMessage.Caption = strMessage
Me.lblMessage2.Caption = strMessage
Exit Sub
End If
End if

FONCTIONNEMENT
1- Si le ctrl Texte txtMilLicence <=2018 , txtDateDépart contient une date et la case à cocher est cocher(-1) aucun Message, le code continue.

2- Si le ctrl Texte txtMilLicence < >2018 ou ne contient pas de valeur, txtDateDépart ne contient pas une date ou la case à cocher est décocher(-1) un Message doit signaler une anomalie.

3- Si une des trois valeurs est manquante un Message doit signaler une anomalie.

Merci pour votre aide

Salutations
Afficher la suite 

9 réponses

Répondre au sujet
jordane45 20638 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 26 avril 2018 Dernière intervention - 3 oct. 2017 à 21:05
0
Utile
Bonjour

As tu essayé de regrouper tes conditions avec des parenthèses ?
Commenter la réponse de jordane45
yg_be 5307 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 25 avril 2018 Dernière intervention - Modifié par yg_be le 3/10/2017 à 22:49
0
Utile
bonsoir, pourquoi n'expliques-tu pas ce que tu obtiens?
peut-être en faisant:
If Me.txtMillLicence > 2018 Or IsNull(txtMillLicence) Or Me.txtDateDépart <> "" Or IsNull(txtDateDépart) Or Not Me.Cocher97  Then
Commenter la réponse de yg_be
jadami 52 Messages postés mercredi 14 mars 2007Date d'inscription 8 mars 2018 Dernière intervention - 4 oct. 2017 à 00:33
0
Utile
4
Bonsoir,

Merci pour vos réponses.

En faisant la ligne de code j'ai un message dans tous les cas de figure.

je joins des images des différents cas que j'aimerai traiter

Cas 1 et Cas 2 aucun message ne doit apparaître.
Cas 3 Cas 4 et Cas 5 Un message d'anomalie doit apparaître.

Salutations
yg_be 5307 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 25 avril 2018 Dernière intervention - 4 oct. 2017 à 07:26
tes exemples me semblent en contradiction avec ton explication de départ.
jadami 52 Messages postés mercredi 14 mars 2007Date d'inscription 8 mars 2018 Dernière intervention > yg_be 5307 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 25 avril 2018 Dernière intervention - 4 oct. 2017 à 08:56
Désolé, toutes mes excuses, mais j'ai dû mal expliquer la problématique.

Cependant les exemples sont des cas réels que je voudrais résoudre.

Salutations
yg_be 5307 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 25 avril 2018 Dernière intervention > jadami 52 Messages postés mercredi 14 mars 2007Date d'inscription 8 mars 2018 Dernière intervention - 4 oct. 2017 à 11:52
des exemples ne suffisent pas à décrire ce que tu veux obtenir.
jadami 52 Messages postés mercredi 14 mars 2007Date d'inscription 8 mars 2018 Dernière intervention > yg_be 5307 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 25 avril 2018 Dernière intervention - 4 oct. 2017 à 12:56
Bien je vais essayer cette description:

A partir de mon formulaire je sélectionne sur une liste déroulante un adhérent.

Si pour celui-ci :

Cas 1
la case MilLicence =2018, que la case départ n'est pas cochée et la Date de départ est vide, alors cet adhérent s'affiche.

Cas 2
la case MilLicence <>2018, que la case départ est cochée et la Date de départ est renseignée, alors cet adhérent s'affiche.

Cas 3
la case MilLicence = 2018, que la case départ est cochée et la Date de départ est vide alors, pour cet adhérent doit s'afficher un message qui signale une anomalie (La case départ et cocher).

Cas 4
la case MilLicence = Vide que la case départ est cochée et la Date de départ est vide alors, pour cet adhérent doit s'afficher un message qui signale une anomalie (MilLence vide, date départ vide).

Cas 5
la case MilLicence <> 2018 que la case départ n'est pas cochée et la Date de départ est renseignée, alors pour cet adhérent doit s'afficher un message qui signale une anomalie (MilLence vide , date départ vide).

Cas 6
Les trois champs sont vides, alors pour cet adhérent doit s'afficher un message qui signale une anomalie (MilLence vide , date départ vide case départ décochée).

Salutations
Commenter la réponse de jadami
yg_be 5307 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 25 avril 2018 Dernière intervention - Modifié par yg_be le 4/10/2017 à 19:33
0
Utile
je te suggère de commencer par ceci:
If (Me.txtMillLicence = 2018 and  (Me.txtDateDépart = "" Or IsNull(Me.txtDateDépart)) And not Me.Cocher97 )
or
(Me.txtMillLicence <> 2018 and  Me.txtDateDépart <> "" And Me.Cocher97 ) then
'c'est bon
else
'ah non
end if 
Commenter la réponse de yg_be
jadami 52 Messages postés mercredi 14 mars 2007Date d'inscription 8 mars 2018 Dernière intervention - 5 oct. 2017 à 20:38
0
Utile
Bonsoir,

Je joins ces lignes de code qui me permettent de résoudre les six cas.

'--- teste sur MillLicence, Case départ et la Date départ
'Cas 1 ou 2 On ne fait rien
If (Me.txtMillLicence = 2018 And (Me.txtDateDépart = "" Or IsNull(Me.txtDateDépart)) And Me.Cocher97 = 0) _
Or _
(Me.txtMillLicence <> 2018 And Me.txtDateDépart <> "" And Me.Cocher97 = -1) Then
MsgBox "1 ou 2 cas"

'Cas 3
ElseIf (Me.txtMillLicence = 2018 And (Me.txtDateDépart = "" Or IsNull(Me.txtDateDépart)) And Me.Cocher97 = -1) Then
Call MessageAnomalie
Exit Sub

'Cas 4
ElseIf (IsNull(txtMillLicence) And (Me.txtDateDépart <> "" Or IsNull(Me.txtDateDépart)) And Me.Cocher97 = -1) Then
Call MessageAnomalie
Exit Sub

'Cas 5
ElseIf (Me.txtMillLicence <> 2018 And Me.txtDateDépart <> "" And Me.Cocher97 = 0) Then
Call MessageAnomalie
Exit Sub

'Cas 6
ElseIf (IsNull(txtMillLicence) And (Me.txtDateDépart <> "" Or IsNull(Me.txtDateDépart)) And Me.Cocher97 = 0) Then
Call MessageAnomalie
Exit Sub
End If


Sub MessageAnomalie()

Dim strMessage As String

'--- Boite de dialogue par Api
reponse = MessageBox(Me.hwnd, "Il y à une anomalie sur cette fiche. " _
& vbCrLf & vbCrLf & "Veuillez vérifier les champs : ? " _
& vbCrLf & vbCrLf & "MilLicence : " & Me.txtMillLicence _
& vbCrLf & "Date de Départ : " & Me.txtDateDépart _
& vbCrLf & "Départ : " & Me.Cocher97 & " " & " ( -1 = COCHER ou DEPART *** 0 = NON COCHER ou PRESENT )", _
ap_AppTitle(), MB_OK + MB_ICONEXCLAMATION)


If Not reponse = vbYes Then
strMessage = "Anomalie sur la fiche"
Me.lblMessage.Caption = strMessage
Me.lblMessage2.Caption = strMessage
End If
End Sub

Je pense qu’on pourrait supprimer le 1er if des cas 1 et 2 car si c’est ok je n’ai aucune action à faire ?

Est-ce que le code pourrait être amélioré ?

De même je voudrais faire les mêmes tests à l’ouverture du formulaire en parcourant les enregistrements : est-ce faisable ? et est-ce que je dois ouvrir un autre post ?

Salutations
Commenter la réponse de jadami