Page 2 sur 3

Publié:
22 Nov 2010 à 15:34
par Wildcat
Wildcat a écrit:Les deux 079 sont bien de même type ?
Hmmm avec le trim(cstr) la question ne devrait pas se poser :/

Publié:
22 Nov 2010 à 16:39
par LSong
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 ?

Publié:
22 Nov 2010 à 16:41
par LSong
Si tu voulait faire un Not sur l'ensemble des condition faut mettre des parenthese

Publié:
22 Nov 2010 à 18:56
par Mick
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.


Publié:
22 Nov 2010 à 19:19
par Mick
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,

Publié:
22 Nov 2010 à 21:02
par Michael DELIQUE
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

Publié:
22 Nov 2010 à 22:16
par roubech
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 ?

Publié:
23 Nov 2010 à 12:47
par Mick
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 ... ?

Publié:
23 Nov 2010 à 13:13
par Michael DELIQUE
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

Publié:
23 Nov 2010 à 13:16
par Mick
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 ?

Publié:
23 Nov 2010 à 13:42
par Michael DELIQUE
ça ne l'est pas !

Publié:
23 Nov 2010 à 13:54
par Mick
Messieurs les experts.
Comment vous vous en sortiriez de ce méli mélo ... ?
Merci à vous,

Publié:
23 Nov 2010 à 13:58
par Michael DELIQUE
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

Publié:
23 Nov 2010 à 15:50
par Mick
Ok je vais me lancer dans le debug.
Je vous tiens au courant ...

Publié:
23 Nov 2010 à 17:28
par Mick
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 ...
