OVH Cloud OVH Cloud

sortir de If then

2 réponses
Avatar
---DGI972---
Bonjour,

J'ai encore un pb pour sortir d'une condition:
Je lis un fichier en entrée pour le recopier dans un fichier en sortie.
Si une ligne commence par "100001" je dois faire un calcul de modulo 97
pour l'insérer en position 63 et recopier la ligne avec le cacul
Sinon je recopie toutes les autres lignes sans les modifier.
Simple non, mais voilà le calcul est recopié dans chaque ligne et je
m'en sort pas.

Merci je suis si près du but.

Option Explicit
Dim fso, objShell, CPTE, D, TEST, CLE, fileIn, fileOut, Sline, StrIn
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set fileIn = fso.OpenTextFile("C:\EDITION\DATA\EDGP", 1, True)
Set fileOut = fso.OpenTextFile("C:\EDITION\DATA\EDGPCLE", 2, True)

Do While Not fileIn.AtEndOfStream
SLine = fileIn.ReadLine
If Mid(SLine,1,6)="100001" then D=(62*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),1,7)+34*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),8,7)+3*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),15,7))Mod 97
CLE=97-D
If CLE < 10 Then CLE="0" & CLE 'Pour fabriquer une clef sur 2
caractères'
StrIn=Mid(Sline,1,60)'Début de la line'
StrIn=StrIn & CLE 'Début de la ligne et la clef RIB'
StrIn=StrIn & Mid(Sline,63,18) 'Début de la ligne et la clef RIB
et le reste de la ligne
Sline=StrIn
fileOut.WriteLine SLine

Loop
fileOut.Close

Set fso = Nothing
Set objShell = Nothing
Set fileIn = Nothing
Set fileOut = Nothing
Set objShell =Nothing

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

2 réponses

Avatar
Fred
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:
Bonjour,

J'ai encore un pb pour sortir d'une condition:
[...]

Option Explicit
Dim fso, objShell, CPTE, D, TEST, CLE, fileIn, fileOut, Sline, StrIn
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set fileIn = fso.OpenTextFile("C:EDITIONDATAEDGP", 1, True)
Set fileOut = fso.OpenTextFile("C:EDITIONDATAEDGPCLE", 2, True)

Do While Not fileIn.AtEndOfStream
SLine = fileIn.ReadLine
If Mid(SLine,1,6)="100001" then D=(62*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),1,7)+34*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),8,7)+3*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),15,7))Mod 97


Lorsque tu écris ton If sur une ligne, la partie conditionnée par le
test est uniquement ce qui suit sur la même ligne.
Or, si j'ai bien compris, c'est toute la suite du traitement que tu veux
conditionner.
Donc, il faut écrire quelque chose du style :
8<-----------------
If Mid(SLine,1,6)="100001" then
D=(62*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),1,7)+34*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),8,7)+3*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),15,7))Mod 97
CLE—-D
'
'etc ...
'
SLine=StrIn
Else 'facultatif
'si besoin (mais je ne crois pas ici)
End If
fileOut.WriteLine SLine
8<-----------------

--
Fred

Avatar
---DGI972---
"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le
message de news:
Bonjour,

J'ai encore un pb pour sortir d'une condition: [...]
Option Explicit
Dim fso, objShell, CPTE, D, TEST, CLE, fileIn, fileOut, Sline, StrIn
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set fileIn = fso.OpenTextFile("C:EDITIONDATAEDGP", 1, True)
Set fileOut = fso.OpenTextFile("C:EDITIONDATAEDGPCLE", 2, True)

Do While Not fileIn.AtEndOfStream
SLine = fileIn.ReadLine
If Mid(SLine,1,6)="100001" then D=(62*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),1,7)+34*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),8,7)+3*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),15,7))Mod 97


Lorsque tu écris ton If sur une ligne, la partie conditionnée par le
test est uniquement ce qui suit sur la même ligne.
Or, si j'ai bien compris, c'est toute la suite du traitement que tu veux
conditionner.
Donc, il faut écrire quelque chose du style :
8<-----------------
If Mid(SLine,1,6)="100001" then
D=(62*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),1,7)+34*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),8,7)+3*Mid(18079&"0" &
Mid(Sline,72,4)&Mid(Sline,13,11),15,7))Mod 97
CLE—-D
'
'etc ...
'
SLine=StrIn
Else 'facultatif
'si besoin (mais je ne crois pas ici)
End If
fileOut.WriteLine SLine
8<-----------------


C'est exactement cela

merci

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net