un fichier txt en entrée (C:\UT\IC7ACOR.txt)
0000000120
1000101000
3000222000
3000223000
3000224000
1000102000
3000303000
3000304000
1000101000
3000404000
je voudrais éclater ce fichier en autant de fichier de sortie que de
ligne commencant par 1.
premier fichier (AG0001.txt)
1000101000
3000222000
3000223000
3000224000
deuxième fichier (AG0002.txt)
1000102000
3000303000
3000304000
troisième fichier (AG0003.txt)
1000101000
3000404000
Voici mon début de code et comme d'habitude je ne m'en sort pas avec la
boucle, la rupture se fait après la detection du premier caractère égal
a 1:
8<------------------------------------------------
Dim fso, inFile, outfile, C, cmpt, test, test1
On Error Resume next
Const ForReading = 1
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set inFile = fso.OpenTextFile("C:\UT\IC7ACOR", ForReading,False)
cmpt = 1
Do While inFile.AtEndOfStream <> True
set outfile = fso.OpenTextFile("C:\UT\AG"&Right("0000"&cmpt,4)&".txt",
ForWriting,True)
'set outfile = fso.OpenTextFile("C:\UT\AG"&Right("0000"&cmpt,4)&".txt",
ForWriting,True)
test = inFile.ReadLine 'Lecture de la ligne complète
if Mid(test,1,1) = "1" then
outfile.WriteLine test
cmpt=cmpt+1
End if
if Mid(test,1,1) = "3" then outfile.WriteLine test
Loop
' Libère les variables objets.
Set fso = Nothing
Set inFile = Nothing
Set outfile = Nothing
8<------------------------------------------------
Pour la suite il faudrait que je fabrique les fichiers AGXXXX.txt en
fonction de l'extraction de la zone 5 longueur 3 de la ligne commencant
par un 1 et si le fichier existe déjà incrémenter le fichier par un
compteur (C:\UT\AG101-00.txt;C:\UT\AG102-00.txt;C:\UT\AG101-01.txt).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gilles LAURENT [MVP]
"---DGI972---" wrote:
Bonjour,
Bonjour,
Je butte encore avec les boucles avec condition:
un fichier txt en entrée (C:UTIC7ACOR.txt) 0000000120 1000101000 3000222000 3000223000 3000224000 1000102000 3000303000 3000304000 1000101000 3000404000
je voudrais éclater ce fichier en autant de fichier de sortie que de ligne commencant par 1.
premier fichier (AG0001.txt) 1000101000 3000222000 3000223000 3000224000 deuxième fichier (AG0002.txt) 1000102000 3000303000 3000304000 troisième fichier (AG0003.txt) 1000101000 3000404000
Voici mon début de code et comme d'habitude je ne m'en sort pas avec la boucle, la rupture se fait après la detection du premier caractère égal a 1:
8<------------------------------------------------ Dim fso, inFile, outfile, C, cmpt, test, test1 On Error Resume next Const ForReading = 1 Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:UTIC7ACOR", ForReading,False)
cmpt = 1 Do While inFile.AtEndOfStream <> True set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt", ForWriting,True) 'set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt", ForWriting,True) test = inFile.ReadLine 'Lecture de la ligne complète if Mid(test,1,1) = "1" then outfile.WriteLine test cmpt=cmpt+1 End if
if Mid(test,1,1) = "3" then outfile.WriteLine test
Loop
' Libère les variables objets. Set fso = Nothing Set inFile = Nothing Set outfile = Nothing 8<------------------------------------------------
Pour la suite il faudrait que je fabrique les fichiers AGXXXX.txt en fonction de l'extraction de la zone 5 longueur 3 de la ligne commencant par un 1 et si le fichier existe déjà incrémenter le fichier par un compteur (C:UTAG101-00.txt;C:UTAG102-00.txt;C:UTAG101-01.txt).
--- Coupez ici : CodeSnippet.vbs --- Set oFs=CreateObject("Scripting.FileSystemObject") Set oFileIn=oFs.OpenTextFile("ic7acor.txt", 1) Do While Not oFileIn.AtEndOfStream sLine=oFileIn.ReadLine If Left(sLine,1)="1" Or Left(sLine,1)="3" Then If Left(sLine,1)="1" Then nCount=0 Do sName="AG" & Mid(sLine,5,3) & "-" & _ Right("0" & nCount, 2) & ".txt" nCount=nCount+1 Loop While oFs.FileExists(sName) Set oFileOut=oFs.CreateTextFile(sName, True) End If oFileOut.WriteLine sLine End If Loop --- Coupez ici : CodeSnippet.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"---DGI972---" wrote:
Bonjour,
Bonjour,
Je butte encore avec les boucles avec condition:
un fichier txt en entrée (C:UTIC7ACOR.txt)
0000000120
1000101000
3000222000
3000223000
3000224000
1000102000
3000303000
3000304000
1000101000
3000404000
je voudrais éclater ce fichier en autant de fichier de sortie que de
ligne commencant par 1.
premier fichier (AG0001.txt)
1000101000
3000222000
3000223000
3000224000
deuxième fichier (AG0002.txt)
1000102000
3000303000
3000304000
troisième fichier (AG0003.txt)
1000101000
3000404000
Voici mon début de code et comme d'habitude je ne m'en sort pas avec la
boucle, la rupture se fait après la detection du premier caractère égal
a 1:
8<------------------------------------------------
Dim fso, inFile, outfile, C, cmpt, test, test1
On Error Resume next
Const ForReading = 1
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set inFile = fso.OpenTextFile("C:UTIC7ACOR", ForReading,False)
cmpt = 1
Do While inFile.AtEndOfStream <> True
set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt",
ForWriting,True)
'set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt",
ForWriting,True)
test = inFile.ReadLine 'Lecture de la ligne complète
if Mid(test,1,1) = "1" then
outfile.WriteLine test
cmpt=cmpt+1
End if
if Mid(test,1,1) = "3" then outfile.WriteLine test
Loop
' Libère les variables objets.
Set fso = Nothing
Set inFile = Nothing
Set outfile = Nothing
8<------------------------------------------------
Pour la suite il faudrait que je fabrique les fichiers AGXXXX.txt en
fonction de l'extraction de la zone 5 longueur 3 de la ligne commencant
par un 1 et si le fichier existe déjà incrémenter le fichier par un
compteur (C:UTAG101-00.txt;C:UTAG102-00.txt;C:UTAG101-01.txt).
--- Coupez ici : CodeSnippet.vbs ---
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFileIn=oFs.OpenTextFile("ic7acor.txt", 1)
Do While Not oFileIn.AtEndOfStream
sLine=oFileIn.ReadLine
If Left(sLine,1)="1" Or Left(sLine,1)="3" Then
If Left(sLine,1)="1" Then
nCount=0
Do
sName="AG" & Mid(sLine,5,3) & "-" & _
Right("0" & nCount, 2) & ".txt"
nCount=nCount+1
Loop While oFs.FileExists(sName)
Set oFileOut=oFs.CreateTextFile(sName, True)
End If
oFileOut.WriteLine sLine
End If
Loop
--- Coupez ici : CodeSnippet.vbs ---
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
un fichier txt en entrée (C:UTIC7ACOR.txt) 0000000120 1000101000 3000222000 3000223000 3000224000 1000102000 3000303000 3000304000 1000101000 3000404000
je voudrais éclater ce fichier en autant de fichier de sortie que de ligne commencant par 1.
premier fichier (AG0001.txt) 1000101000 3000222000 3000223000 3000224000 deuxième fichier (AG0002.txt) 1000102000 3000303000 3000304000 troisième fichier (AG0003.txt) 1000101000 3000404000
Voici mon début de code et comme d'habitude je ne m'en sort pas avec la boucle, la rupture se fait après la detection du premier caractère égal a 1:
8<------------------------------------------------ Dim fso, inFile, outfile, C, cmpt, test, test1 On Error Resume next Const ForReading = 1 Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:UTIC7ACOR", ForReading,False)
cmpt = 1 Do While inFile.AtEndOfStream <> True set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt", ForWriting,True) 'set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt", ForWriting,True) test = inFile.ReadLine 'Lecture de la ligne complète if Mid(test,1,1) = "1" then outfile.WriteLine test cmpt=cmpt+1 End if
if Mid(test,1,1) = "3" then outfile.WriteLine test
Loop
' Libère les variables objets. Set fso = Nothing Set inFile = Nothing Set outfile = Nothing 8<------------------------------------------------
Pour la suite il faudrait que je fabrique les fichiers AGXXXX.txt en fonction de l'extraction de la zone 5 longueur 3 de la ligne commencant par un 1 et si le fichier existe déjà incrémenter le fichier par un compteur (C:UTAG101-00.txt;C:UTAG102-00.txt;C:UTAG101-01.txt).
--- Coupez ici : CodeSnippet.vbs --- Set oFs=CreateObject("Scripting.FileSystemObject") Set oFileIn=oFs.OpenTextFile("ic7acor.txt", 1) Do While Not oFileIn.AtEndOfStream sLine=oFileIn.ReadLine If Left(sLine,1)="1" Or Left(sLine,1)="3" Then If Left(sLine,1)="1" Then nCount=0 Do sName="AG" & Mid(sLine,5,3) & "-" & _ Right("0" & nCount, 2) & ".txt" nCount=nCount+1 Loop While oFs.FileExists(sName) Set oFileOut=oFs.CreateTextFile(sName, True) End If oFileOut.WriteLine sLine End If Loop --- Coupez ici : CodeSnippet.vbs ---
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
---DGI972---
Gilles LAURENT [MVP] a écrit :
"---DGI972---" wrote:
Bonjour,
Bonjour,
Je butte encore avec les boucles avec condition:
un fichier txt en entrée (C:UTIC7ACOR.txt) 0000000120 1000101000 3000222000 3000223000 3000224000 1000102000 3000303000 3000304000 1000101000 3000404000
je voudrais éclater ce fichier en autant de fichier de sortie que de ligne commencant par 1.
premier fichier (AG0001.txt) 1000101000 3000222000 3000223000 3000224000 deuxième fichier (AG0002.txt) 1000102000 3000303000 3000304000 troisième fichier (AG0003.txt) 1000101000 3000404000
Voici mon début de code et comme d'habitude je ne m'en sort pas avec la boucle, la rupture se fait après la detection du premier caractère égal a 1:
8<------------------------------------------------ Dim fso, inFile, outfile, C, cmpt, test, test1 On Error Resume next Const ForReading = 1 Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:UTIC7ACOR", ForReading,False)
cmpt = 1 Do While inFile.AtEndOfStream <> True set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt", ForWriting,True) 'set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt", ForWriting,True) test = inFile.ReadLine 'Lecture de la ligne complète if Mid(test,1,1) = "1" then outfile.WriteLine test cmpt=cmpt+1 End if
if Mid(test,1,1) = "3" then outfile.WriteLine test
Loop
' Libère les variables objets. Set fso = Nothing Set inFile = Nothing Set outfile = Nothing 8<------------------------------------------------
Pour la suite il faudrait que je fabrique les fichiers AGXXXX.txt en fonction de l'extraction de la zone 5 longueur 3 de la ligne commencant par un 1 et si le fichier existe déjà incrémenter le fichier par un compteur (C:UTAG101-00.txt;C:UTAG102-00.txt;C:UTAG101-01.txt).
--- Coupez ici : CodeSnippet.vbs --- Set oFs=CreateObject("Scripting.FileSystemObject") Set oFileIn=oFs.OpenTextFile("ic7acor.txt", 1) Do While Not oFileIn.AtEndOfStream sLine=oFileIn.ReadLine If Left(sLine,1)="1" Or Left(sLine,1)="3" Then If Left(sLine,1)="1" Then nCount=0 Do sName="AG" & Mid(sLine,5,3) & "-" & _ Right("0" & nCount, 2) & ".txt" nCount=nCount+1 Loop While oFs.FileExists(sName) Set oFileOut=oFs.CreateTextFile(sName, True) End If oFileOut.WriteLine sLine End If Loop --- Coupez ici : CodeSnippet.vbs ---
Merci gilles C'est exactement ce que je voulais et en 17 lignes ... :'( merci encore ;-)
Gilles LAURENT [MVP] a écrit :
"---DGI972---" wrote:
Bonjour,
Bonjour,
Je butte encore avec les boucles avec condition:
un fichier txt en entrée (C:UTIC7ACOR.txt)
0000000120
1000101000
3000222000
3000223000
3000224000
1000102000
3000303000
3000304000
1000101000
3000404000
je voudrais éclater ce fichier en autant de fichier de sortie que de
ligne commencant par 1.
premier fichier (AG0001.txt)
1000101000
3000222000
3000223000
3000224000
deuxième fichier (AG0002.txt)
1000102000
3000303000
3000304000
troisième fichier (AG0003.txt)
1000101000
3000404000
Voici mon début de code et comme d'habitude je ne m'en sort pas avec la
boucle, la rupture se fait après la detection du premier caractère égal
a 1:
8<------------------------------------------------
Dim fso, inFile, outfile, C, cmpt, test, test1
On Error Resume next
Const ForReading = 1
Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject")
Set inFile = fso.OpenTextFile("C:UTIC7ACOR", ForReading,False)
cmpt = 1
Do While inFile.AtEndOfStream <> True
set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt",
ForWriting,True)
'set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt",
ForWriting,True)
test = inFile.ReadLine 'Lecture de la ligne complète
if Mid(test,1,1) = "1" then
outfile.WriteLine test
cmpt=cmpt+1
End if
if Mid(test,1,1) = "3" then outfile.WriteLine test
Loop
' Libère les variables objets.
Set fso = Nothing
Set inFile = Nothing
Set outfile = Nothing
8<------------------------------------------------
Pour la suite il faudrait que je fabrique les fichiers AGXXXX.txt en
fonction de l'extraction de la zone 5 longueur 3 de la ligne commencant
par un 1 et si le fichier existe déjà incrémenter le fichier par un
compteur (C:UTAG101-00.txt;C:UTAG102-00.txt;C:UTAG101-01.txt).
--- Coupez ici : CodeSnippet.vbs ---
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oFileIn=oFs.OpenTextFile("ic7acor.txt", 1)
Do While Not oFileIn.AtEndOfStream
sLine=oFileIn.ReadLine
If Left(sLine,1)="1" Or Left(sLine,1)="3" Then
If Left(sLine,1)="1" Then
nCount=0
Do
sName="AG" & Mid(sLine,5,3) & "-" & _
Right("0" & nCount, 2) & ".txt"
nCount=nCount+1
Loop While oFs.FileExists(sName)
Set oFileOut=oFs.CreateTextFile(sName, True)
End If
oFileOut.WriteLine sLine
End If
Loop
--- Coupez ici : CodeSnippet.vbs ---
Merci gilles
C'est exactement ce que je voulais et en 17 lignes ... :'(
merci encore
;-)
un fichier txt en entrée (C:UTIC7ACOR.txt) 0000000120 1000101000 3000222000 3000223000 3000224000 1000102000 3000303000 3000304000 1000101000 3000404000
je voudrais éclater ce fichier en autant de fichier de sortie que de ligne commencant par 1.
premier fichier (AG0001.txt) 1000101000 3000222000 3000223000 3000224000 deuxième fichier (AG0002.txt) 1000102000 3000303000 3000304000 troisième fichier (AG0003.txt) 1000101000 3000404000
Voici mon début de code et comme d'habitude je ne m'en sort pas avec la boucle, la rupture se fait après la detection du premier caractère égal a 1:
8<------------------------------------------------ Dim fso, inFile, outfile, C, cmpt, test, test1 On Error Resume next Const ForReading = 1 Const ForWriting = 2
Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("C:UTIC7ACOR", ForReading,False)
cmpt = 1 Do While inFile.AtEndOfStream <> True set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt", ForWriting,True) 'set outfile = fso.OpenTextFile("C:UTAG"&Right("0000"&cmpt,4)&".txt", ForWriting,True) test = inFile.ReadLine 'Lecture de la ligne complète if Mid(test,1,1) = "1" then outfile.WriteLine test cmpt=cmpt+1 End if
if Mid(test,1,1) = "3" then outfile.WriteLine test
Loop
' Libère les variables objets. Set fso = Nothing Set inFile = Nothing Set outfile = Nothing 8<------------------------------------------------
Pour la suite il faudrait que je fabrique les fichiers AGXXXX.txt en fonction de l'extraction de la zone 5 longueur 3 de la ligne commencant par un 1 et si le fichier existe déjà incrémenter le fichier par un compteur (C:UTAG101-00.txt;C:UTAG102-00.txt;C:UTAG101-01.txt).
--- Coupez ici : CodeSnippet.vbs --- Set oFs=CreateObject("Scripting.FileSystemObject") Set oFileIn=oFs.OpenTextFile("ic7acor.txt", 1) Do While Not oFileIn.AtEndOfStream sLine=oFileIn.ReadLine If Left(sLine,1)="1" Or Left(sLine,1)="3" Then If Left(sLine,1)="1" Then nCount=0 Do sName="AG" & Mid(sLine,5,3) & "-" & _ Right("0" & nCount, 2) & ".txt" nCount=nCount+1 Loop While oFs.FileExists(sName) Set oFileOut=oFs.CreateTextFile(sName, True) End If oFileOut.WriteLine sLine End If Loop --- Coupez ici : CodeSnippet.vbs ---
Merci gilles C'est exactement ce que je voulais et en 17 lignes ... :'( merci encore ;-)
Gilles LAURENT [MVP]
"---DGI972---" wrote:
Merci gilles C'est exactement ce que je voulais et en 17 lignes ... :'( merci encore
De rien DGI972 :-) Il est à noter que le cahier des charges que vous avez exprimé ici était très précis. Cela facilite forcement beaucoup les choses ;-)
A bientôt,
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr
"---DGI972---" wrote:
Merci gilles
C'est exactement ce que je voulais et en 17 lignes ... :'(
merci encore
De rien DGI972 :-) Il est à noter que le cahier des charges que vous avez
exprimé ici était très précis. Cela facilite forcement beaucoup les choses ;-)
A bientôt,
--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Merci gilles C'est exactement ce que je voulais et en 17 lignes ... :'( merci encore
De rien DGI972 :-) Il est à noter que le cahier des charges que vous avez exprimé ici était très précis. Cela facilite forcement beaucoup les choses ;-)
A bientôt,
-- Gilles LAURENT MVP Windows Server - Admin Frameworks http://glsft.free.fr