bonsoir tout le monde,

je butte encore sur les boucles avec condition...
j'ai un fichier en entree (cf piece jointe)que je voudrais eclater en autant de sequence "01"-"07" que je trouve dans le fichier.

voila le bout de code que j'ai deja ecrit:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
const ForReading = 1
const ForWriting = 2
const ForAppending = 8
Const ModeAscii = 0 
Const ModeUnicode = -1
 
public function LitFichier(ByRef fic)
 
dim fso, ofso, flow, line, StreamR, StreamW, f, cpte
 
cpte = 0
ind = 0
set fso = CreateObject( "Scripting.FileSystemObject" )
'set StreamW = fso.OpenTextFile(fileout, ForAppending,true)
set StreamR = fso.OpenTextFile(fic, ForReading, false)
 
do while StreamR.AtEndOfStream <> true 'tant que l'on est pas à la fin du fichier
	line = StreamR.Readline 'lis la ligne
	cpte = StreamR.Line 'compte le nb de ligne dans le fichier
 
	codeenr = mid(line, 1, 2)             'Code enregistrement (01,04,05,07)
	sBank = mid(line, 3,5)    	           'Banque
	sGuichet = mid(line, 12, 5)           'Guichet
	sCompte =  mid(line, 22,11)           'Compte
	sDateINI = mid(line, 35,6)			  'Date Solde Initial
	sSoldeINI = mid(line, 91, 14)
	TmpAcc = sBank & sGuichet & sCompte    'RIB Complet
 
	if codeenr = "07" then
		codeenr = mid(line, 1, 2)             'Code enregistrement (01,04,05,07)
		sBank = mid(line, 3,5)    	           'Banque
		sGuichet = mid(line, 12, 5)           'Guichet
		sCompte =  mid(line, 22,11)           'Compte
		sDateFIN = mid(line, 35,6)			  'Date Solde Initial
		sSoldeFIN = mid(line, 91, 14)
	end if
 
		REM 'condition à mettre: si le code enregistrement lu de la ligne est un 01 (entete) et que l'on trouve un "07" (enregistrement de fin):
		REM on ecrit la ligne 01,04,05 et 07 puis on ferme le fichier 
		REM if left(line,2) = "01" then ' test si l'enregistrement est un 01(entete)
				ind = ind + 1 'indice du fichier
				fileout = "C:\_TMP\" & "AAAC"& "_" & TmpAcc & "_" & ind & ".dat" 'nom du fichier de sortie
				if not fso.FileExists(fileout) then 'si le fichier n'existe pas... 
					set StreamW = fso.CreateTextFile(fileout,ForWriting, ModeAscii) 'on le cree.... 
					StreamW.Write(line) 'ecrit la ligne
					StreamW.Close 'ferme le flot en ecriture
				else 'sinon
					set StreamW = fso.OpenTextFile(fileout,ForAppending, ModeAscii) 'ouvre le fichier
					StreamW.Write(line)'ecrit la ligne...
					StreamW.Close'ferme le flot en ecriture
				end if
		end if
	'StreamW.Close
loop
set fso = nothing
end function
en sortie avec le fichier d'exemple je devrais avoir 3 fichiers. Est ce que l'un d'entre vous pourrait m'aider a ecrire la boucle et la condition svp? je m'en sors pas..
merci d'avance.