Condition sur le IF

Forum destiné aux questions sur le développement : Formules, LotusScript, Java ...

Messagepar Wildcat » 22 Nov 2010 à 15:34

Wildcat a écrit:Les deux 079 sont bien de même type ?


Hmmm avec le trim(cstr) la question ne devrait pas se poser :/
Avatar de l’utilisateur
Wildcat
Premier posts
Premier posts
 
Message(s) : 19
Inscrit(e) le : 06 Jan 2010 à 11:11
Localisation : Montpellier

Messagepar LSong » 22 Nov 2010 à 16:39

IF Not platetraite(i_p) = Trim(doccli.CliTriCo7(0)) then

Ca retourne vrai quand les deux sont Different
c'est bien ca que tu veux ?
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar LSong » 22 Nov 2010 à 16:41

Si tu voulait faire un Not sur l'ensemble des condition faut mettre des parenthese
LSong
Posteur expérimenté
Posteur expérimenté
 
Message(s) : 353
Inscrit(e) le : 07 Nov 2007 à 14:27
Localisation : Ile de france

Messagepar Mick » 22 Nov 2010 à 18:56

Ce que je souhaite c'est que :
si platetraite(i_p) = Trim(doccli.CliTriCo7(0)) alors
je ne fais rien
sinon je fais un traitement.


J'ai donc essayé tous vos conseils sans succès ...

C'est vraiment déroutant tout ça.
:?:
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Mick » 22 Nov 2010 à 19:19

Je crois que j'ai besoin de recul effectivement ...

Voilà le code et voilà ce que j'obtiens comme message :
Code : Tout sélectionner
   If Cstr(platetraite(i_p)) <>  Cstr(doccli.CliTriCo7(0)) And Trim(Cstr(jourtraite(i_p))) <> Trim(Cstr(jour)) And Trim(Cstr(tournetraite(i_p))) <> Trim(Cstr(tournee)) Then
                     arg(0) = Trim(tournee)
                     arg(1) = Trim(jour)
                     arg(2) = Trim(doccli.CliTriCo7(0))
                  Else
                     Msgbox "la plateforme stocke" & i_p & platetraite(i_p) & "est bien egale a la plateforme lue" & doccli.CliTriCo7(0)
                     Msgbox "le jour stocke" & i_p & jourtraite(i_p) & "est bien egale au jour  lue" & jour
                     Msgbox "la tournee stocke" & i_p & tournetraite(i_p) & "est bien egale a la tournee lue" & tournee
                     Erase arg
                  End If


J'obtiens les messages 3 fois :
la plateforme(0) stocke 079 est bien egale à la plateforme lue 079
le jour(0) stocke 13112010 est bien egale au jour lue 13112010
la tournee(0) stocke K4510 est bien egale à la tournee lue K4510


la plateforme(0) stocke 079 est bien egale à la plateforme lue 079
le jour(0) stocke 13112010 est bien egale au jour lue 15112010
la tournee(0) stocke K4510 est bien egale à la tournee lue M4520


la plateforme(0) stocke 079 est bien egale à la plateforme lue 079
le jour(0) stocke 13112010 est bien egale au jour lue 15112010
la tournee(0) stocke K4510 est bien egale à la tournee lue M4520



ça pourrait vouloir dire quoi ?


Merci,
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 22 Nov 2010 à 21:02

j'y pense concernant

If Cstr(platetraite(i_p)) <> Cstr(doccli.CliTriCo7(0)) And Trim(Cstr(jourtraite(i_p))) <> Trim(Cstr(jour)) And Trim(Cstr(tournetraite(i_p))) <> Trim(Cstr(tournee)) Then

pour que la condition soit vrai il faut que les 3 soient différentes

donc si je re garde

Code : Tout sélectionner
If Cstr(platetraite(i_p)) <>  Cstr(doccli.CliTriCo7(0)) And Trim(Cstr(jourtraite(i_p))) <> Trim(Cstr(jour)) And Trim(Cstr(tournetraite(i_p))) <> Trim(Cstr(tournee)) Then
                     arg(0) = Trim(tournee)
                     arg(1) = Trim(jour)
                     arg(2) = Trim(doccli.CliTriCo7(0))
                  Else
                     Msgbox "la plateforme stocke" & i_p & platetraite(i_p) & "est bien egale a la plateforme lue" & doccli.CliTriCo7(0)
                     Msgbox "le jour stocke" & i_p & jourtraite(i_p) & "est bien egale au jour  lue" & jour
                     Msgbox "la tournee stocke" & i_p & tournetraite(i_p) & "est bien egale a la tournee lue" & tournee
                     Erase arg
                  End If


ta condition est toujours fausse, au moins une des 3 est egale
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar roubech » 22 Nov 2010 à 22:16

j'arrive un peu tard, voici mes remarques sur ton post avec ton code :

vu que platetraite est alimenté comme ça, lors de la comparasion, il faut utiliser un trim aussi
platetraite(t_pltfDejaMax) = Trim(doccli.CliTriCo7(0))

If Not (platetraite(i_p)) = doccli.CliTriCo7(0) Then
les paranthèses autour de platetraite limite la portée du NOT
If not ( platetraite(t_pltfDejaMax) = Trim(doccli.CliTriCo7(0)) ) Then
ou plutôt comme le disait Michael avec <>
If ( platetraite(t_pltfDejaMax) <> Trim(doccli.CliTriCo7(0)) ) Then

Ensuite, pour ce qui est de cumuler les 3 tests, comme le dit Michael, c'est un ET ou un OU que tu veux réellement ?
Avatar de l’utilisateur
roubech
Modérateur
Modérateur
 
Message(s) : 4976
Inscrit(e) le : 01 Fév 2007 à 20:22
Localisation : Lille

Messagepar Mick » 23 Nov 2010 à 12:47

Merci pour vos pistes ...

Je ce que je souhaite c'est faire un traitement que si le trio plateforme traité ET jour traité ET tournee traitée est différent du trio plateforme lue ET jour lu ET tournee LUE

Il faut bien que je fasse un AND ... ?
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 23 Nov 2010 à 13:13

oui

mais tu as plus rapide (a l'exécution) et pratique (a débuger)

tu imbrique les si

Code : Tout sélectionner
If trim(Cstr(platetraite(i_p))) <>  trim(Cstr(doccli.CliTriCo7(0))) then
     if Trim(Cstr(jourtraite(i_p))) <> Trim(Cstr(jour)) then
           if Trim(Cstr(tournetraite(i_p))) <> Trim(Cstr(tournee)) then
              '         traitement
           end if
     end if
end if
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Mick » 23 Nov 2010 à 13:16

Merci je vais essayer ...

Mais je ne m'explique pas les résultats que j'obtiens :

la tournee(0) stocke K4510 est bien egale à la tournee lue M4520

Comment cela est possible ?
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 23 Nov 2010 à 13:42

ça ne l'est pas !
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Mick » 23 Nov 2010 à 13:54

Messieurs les experts.

Comment vous vous en sortiriez de ce méli mélo ... ?


Merci à vous,
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Michael DELIQUE » 23 Nov 2010 à 13:58

ben

la seule solution, est d'analyser en mode débug ce qui se passe.

dans ce genre de situation, je fais a coté une code d'essay que je simplifie au maximum. et je regarde en debug ce qui se passe
Cordialement

Michael (SMS-Phobique)
----------------------------
"La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi."
Albert EINSTEIN
Avatar de l’utilisateur
Michael DELIQUE
Administrateur
Administrateur
 
Message(s) : 12183
Inscrit(e) le : 16 Déc 2004 à 10:36
Localisation : Paris/Cergy

Messagepar Mick » 23 Nov 2010 à 15:50

Ok je vais me lancer dans le debug.

Je vous tiens au courant ...
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

Messagepar Mick » 23 Nov 2010 à 17:28

Je ne comprend toujours pas ...

J'ai fait du debug et je constate que toutes mes valeurs comparées sont bien en STRING.
Donc rien n'explique que la comparaison ne fonctionne pas, c'est quand même invraisemblable.
Bien souvent quand la comparaison ne fonctionne pas c'est à cause du type.

J'ai beau tournée le IF dans tous les sens, je ne vois pas comment je vais faire pour me sortir de cette impasse ...

:?:
Mick
Apprenti-posteur
Apprenti-posteur
 
Message(s) : 170
Inscrit(e) le : 09 Juin 2009 à 09:39

PrécédentSuivant

Retour vers Développement