Bonjour,
J'ai réalisé un petit Script qui lit un fichier déja trié en entrée (environ
35 000 lignes) pour fabriquer des fichiers en sortie par block de 9000
lignes.
Le nom des fichiers de sortie s'incréménte aussi.
Le Script fonctionne mais, il me créé 4 fichier tbrib1, tbrib2... tbrib4
mais à la fin de l'exécution du Script j'ai le message d'erreur suivant:
Erreur : L'entrée dépasse la fin du fichier
à la ligne: fileOut.WriteLine fileIn.ReadLine.
Je n'arrive pas à voir d'ou viens le Pb. Tempo, délais ???
Je suis si proche de la fin de mon Pb !!!
Voiçi les quelques lignes de mon Script:
Option Explicit
Dim fso, objShell, CPT, ID, fileIn, ENT, fileOut, Sline,StrIn
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
ID = 1
CPT = 1
Set fileIn = fso.OpenTextFile("C:\SBA_MAR\PROGRAM\tbrib0s", 1, True)
Set fileOut = fso.OpenTextFile("C:\SBA_MAR\PROGRAM\tbrib"&ID&"s", 2,
True)'tbrib1s pour les 9000 premières lignes
Do While Not fileIn.AtEndOfStream
ENT="TBRIB"&ID&" TABL T" 'Fabrication de l'entête du fichier TBRIB1
TAB T
fileOut.WriteLine ENT
Do UNTIL CPT = 9000
fileOut.WriteLine fileIn.ReadLine
CPT = CPT + 1
Loop
fileOut.Close
CPT = 1
ID = ID+1
Set fileOut = fso.OpenTextFile("C:\SBA_MAR\PROGRAM\tbrib"&ID&"s", 2, True)
Loop
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
Fred
Dans son message ----DGI972--- nous dit :
Bonjour, J'ai réalisé un petit Script qui lit un fichier déja trié en entrée (environ 35 000 lignes) pour fabriquer des fichiers en sortie par block de 9000 lignes. Le nom des fichiers de sortie s'incréménte aussi. Le Script fonctionne mais, il me créé 4 fichier tbrib1, tbrib2... tbrib4 mais à la fin de l'exécution du Script j'ai le message d'erreur suivant: Erreur : L'entrée dépasse la fin du fichier à la ligne: fileOut.WriteLine fileIn.ReadLine. Je n'arrive pas à voir d'ou viens le Pb. Tempo, délais ??? Je suis si proche de la fin de mon Pb !!!
Voiçi les quelques lignes de mon Script:
Option Explicit Dim fso, objShell, CPT, ID, fileIn, ENT, fileOut, Sline,StrIn Set fso = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell")
ID = 1 CPT = 1 Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True) Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2, True)'tbrib1s pour les 9000 premières lignes
Do While Not fileIn.AtEndOfStream ENT="TBRIB"&ID&" TABL T" 'Fabrication de l'entête du fichier TBRIB1 TAB T fileOut.WriteLine ENT
Do UNTIL CPT = 9000 fileOut.WriteLine fileIn.ReadLine CPT = CPT + 1 Loop
fileOut.Close CPT = 1 ID = ID+1 Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2, True) Loop
fileOut.Close
Merci d'avance
Bonsoir, 4 * 9000 = 36000 ! N'est-ce pas la clé du problème ?
Tu t'exposes à ce genre de difficulté dès lors que tu imbriques des boucles. Ton FileIn.AtEndOfStream n'est évalué que toutes les 9000 lignes. Autant dire qu'il est peu efficace.
Tente quelque chose du style
Cpt = 0 : Id = 1 Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True) While Not FileIn.AtEndOfStream If Cpt=0 Then Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&Id&"s", 2, True) 'Ecriture de l'en-tête Ent = "TBRIB" & Id & " TABL T" fileOut.WriteLine Ent End If
FileOut.WriteLine FileIn.ReadLine Cpt = Cpt + 1
If Cpt = 9000 Then Cpt = 0 Id = Id + 1 fileOut.Close End If Wend
If Cpt <> 0 Then fileOut.Close fileIn.Close
Avec cet algorithme, 1 tour de boucle = 1 ligne. Attention : non testé, mais cela ne devrait pas être très loin de la solution.
-- Fred
Dans son message ej3Nk5vWFHA.3184@TK2MSFTNGP15.phx.gbl
----DGI972--- nous dit :
Bonjour,
J'ai réalisé un petit Script qui lit un fichier déja trié en entrée
(environ 35 000 lignes) pour fabriquer des fichiers en sortie par
block de 9000 lignes.
Le nom des fichiers de sortie s'incréménte aussi.
Le Script fonctionne mais, il me créé 4 fichier tbrib1, tbrib2...
tbrib4 mais à la fin de l'exécution du Script j'ai le message
d'erreur suivant: Erreur : L'entrée dépasse la fin du fichier
à la ligne: fileOut.WriteLine fileIn.ReadLine.
Je n'arrive pas à voir d'ou viens le Pb. Tempo, délais ???
Je suis si proche de la fin de mon Pb !!!
Voiçi les quelques lignes de mon Script:
Option Explicit
Dim fso, objShell, CPT, ID, fileIn, ENT, fileOut, Sline,StrIn
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
ID = 1
CPT = 1
Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True)
Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2,
True)'tbrib1s pour les 9000 premières lignes
Do While Not fileIn.AtEndOfStream
ENT="TBRIB"&ID&" TABL T" 'Fabrication de l'entête du fichier
TBRIB1 TAB T
fileOut.WriteLine ENT
Do UNTIL CPT = 9000
fileOut.WriteLine fileIn.ReadLine
CPT = CPT + 1
Loop
fileOut.Close
CPT = 1
ID = ID+1
Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2,
True) Loop
fileOut.Close
Merci d'avance
Bonsoir,
4 * 9000 = 36000 !
N'est-ce pas la clé du problème ?
Tu t'exposes à ce genre de difficulté dès lors que tu imbriques des boucles.
Ton FileIn.AtEndOfStream n'est évalué que toutes les 9000 lignes.
Autant dire qu'il est peu efficace.
Tente quelque chose du style
Cpt = 0 : Id = 1
Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True)
While Not FileIn.AtEndOfStream
If Cpt=0 Then
Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&Id&"s", 2,
True)
'Ecriture de l'en-tête
Ent = "TBRIB" & Id & " TABL T"
fileOut.WriteLine Ent
End If
FileOut.WriteLine FileIn.ReadLine
Cpt = Cpt + 1
If Cpt = 9000 Then
Cpt = 0
Id = Id + 1
fileOut.Close
End If
Wend
If Cpt <> 0 Then fileOut.Close
fileIn.Close
Avec cet algorithme, 1 tour de boucle = 1 ligne.
Attention : non testé, mais cela ne devrait pas être très loin de la
solution.
Bonjour, J'ai réalisé un petit Script qui lit un fichier déja trié en entrée (environ 35 000 lignes) pour fabriquer des fichiers en sortie par block de 9000 lignes. Le nom des fichiers de sortie s'incréménte aussi. Le Script fonctionne mais, il me créé 4 fichier tbrib1, tbrib2... tbrib4 mais à la fin de l'exécution du Script j'ai le message d'erreur suivant: Erreur : L'entrée dépasse la fin du fichier à la ligne: fileOut.WriteLine fileIn.ReadLine. Je n'arrive pas à voir d'ou viens le Pb. Tempo, délais ??? Je suis si proche de la fin de mon Pb !!!
Voiçi les quelques lignes de mon Script:
Option Explicit Dim fso, objShell, CPT, ID, fileIn, ENT, fileOut, Sline,StrIn Set fso = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell")
ID = 1 CPT = 1 Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True) Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2, True)'tbrib1s pour les 9000 premières lignes
Do While Not fileIn.AtEndOfStream ENT="TBRIB"&ID&" TABL T" 'Fabrication de l'entête du fichier TBRIB1 TAB T fileOut.WriteLine ENT
Do UNTIL CPT = 9000 fileOut.WriteLine fileIn.ReadLine CPT = CPT + 1 Loop
fileOut.Close CPT = 1 ID = ID+1 Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2, True) Loop
fileOut.Close
Merci d'avance
Bonsoir, 4 * 9000 = 36000 ! N'est-ce pas la clé du problème ?
Tu t'exposes à ce genre de difficulté dès lors que tu imbriques des boucles. Ton FileIn.AtEndOfStream n'est évalué que toutes les 9000 lignes. Autant dire qu'il est peu efficace.
Tente quelque chose du style
Cpt = 0 : Id = 1 Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True) While Not FileIn.AtEndOfStream If Cpt=0 Then Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&Id&"s", 2, True) 'Ecriture de l'en-tête Ent = "TBRIB" & Id & " TABL T" fileOut.WriteLine Ent End If
FileOut.WriteLine FileIn.ReadLine Cpt = Cpt + 1
If Cpt = 9000 Then Cpt = 0 Id = Id + 1 fileOut.Close End If Wend
If Cpt <> 0 Then fileOut.Close fileIn.Close
Avec cet algorithme, 1 tour de boucle = 1 ligne. Attention : non testé, mais cela ne devrait pas être très loin de la solution.
-- Fred
---DGI972---
ET EN PLUS CELA FONCTIONNE !!! Merci je vais pouvoir me coucher tôt ce soir
--
"Fred" a écrit dans le message de news:
Dans son message ----DGI972--- nous dit :
Bonjour, J'ai réalisé un petit Script qui lit un fichier déja trié en entrée (environ 35 000 lignes) pour fabriquer des fichiers en sortie par block de 9000 lignes. Le nom des fichiers de sortie s'incréménte aussi. Le Script fonctionne mais, il me créé 4 fichier tbrib1, tbrib2... tbrib4 mais à la fin de l'exécution du Script j'ai le message d'erreur suivant: Erreur : L'entrée dépasse la fin du fichier à la ligne: fileOut.WriteLine fileIn.ReadLine. Je n'arrive pas à voir d'ou viens le Pb. Tempo, délais ??? Je suis si proche de la fin de mon Pb !!!
Voiçi les quelques lignes de mon Script:
Option Explicit Dim fso, objShell, CPT, ID, fileIn, ENT, fileOut, Sline,StrIn Set fso = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell")
ID = 1 CPT = 1 Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True) Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2, True)'tbrib1s pour les 9000 premières lignes
Do While Not fileIn.AtEndOfStream ENT="TBRIB"&ID&" TABL T" 'Fabrication de l'entête du fichier TBRIB1 TAB T fileOut.WriteLine ENT
Do UNTIL CPT = 9000 fileOut.WriteLine fileIn.ReadLine CPT = CPT + 1 Loop
fileOut.Close CPT = 1 ID = ID+1 Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2, True) Loop
fileOut.Close
Merci d'avance
Bonsoir, 4 * 9000 = 36000 ! N'est-ce pas la clé du problème ?
Tu t'exposes à ce genre de difficulté dès lors que tu imbriques des boucles. Ton FileIn.AtEndOfStream n'est évalué que toutes les 9000 lignes. Autant dire qu'il est peu efficace.
Tente quelque chose du style
Cpt = 0 : Id = 1 Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True) While Not FileIn.AtEndOfStream If Cpt=0 Then Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&Id&"s", 2, True) 'Ecriture de l'en-tête Ent = "TBRIB" & Id & " TABL T" fileOut.WriteLine Ent End If
FileOut.WriteLine FileIn.ReadLine Cpt = Cpt + 1
If Cpt = 9000 Then Cpt = 0 Id = Id + 1 fileOut.Close End If Wend
If Cpt <> 0 Then fileOut.Close fileIn.Close
Avec cet algorithme, 1 tour de boucle = 1 ligne. Attention : non testé, mais cela ne devrait pas être très loin de la solution.
-- Fred
ET EN PLUS CELA FONCTIONNE !!!
Merci je vais pouvoir me coucher tôt ce soir
--
"Fred" <foleide@libre.france> a écrit dans le message de news:
eItAh8wWFHA.1040@TK2MSFTNGP10.phx.gbl...
Dans son message ej3Nk5vWFHA.3184@TK2MSFTNGP15.phx.gbl
----DGI972--- nous dit :
Bonjour,
J'ai réalisé un petit Script qui lit un fichier déja trié en entrée
(environ 35 000 lignes) pour fabriquer des fichiers en sortie par
block de 9000 lignes.
Le nom des fichiers de sortie s'incréménte aussi.
Le Script fonctionne mais, il me créé 4 fichier tbrib1, tbrib2...
tbrib4 mais à la fin de l'exécution du Script j'ai le message
d'erreur suivant: Erreur : L'entrée dépasse la fin du fichier
à la ligne: fileOut.WriteLine fileIn.ReadLine.
Je n'arrive pas à voir d'ou viens le Pb. Tempo, délais ???
Je suis si proche de la fin de mon Pb !!!
Voiçi les quelques lignes de mon Script:
Option Explicit
Dim fso, objShell, CPT, ID, fileIn, ENT, fileOut, Sline,StrIn
Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
ID = 1
CPT = 1
Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True)
Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2,
True)'tbrib1s pour les 9000 premières lignes
Do While Not fileIn.AtEndOfStream
ENT="TBRIB"&ID&" TABL T" 'Fabrication de l'entête du fichier
TBRIB1 TAB T
fileOut.WriteLine ENT
Do UNTIL CPT = 9000
fileOut.WriteLine fileIn.ReadLine
CPT = CPT + 1
Loop
fileOut.Close
CPT = 1
ID = ID+1
Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2,
True) Loop
fileOut.Close
Merci d'avance
Bonsoir,
4 * 9000 = 36000 !
N'est-ce pas la clé du problème ?
Tu t'exposes à ce genre de difficulté dès lors que tu imbriques des
boucles.
Ton FileIn.AtEndOfStream n'est évalué que toutes les 9000 lignes.
Autant dire qu'il est peu efficace.
Tente quelque chose du style
Cpt = 0 : Id = 1
Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True)
While Not FileIn.AtEndOfStream
If Cpt=0 Then
Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&Id&"s",
2, True)
'Ecriture de l'en-tête
Ent = "TBRIB" & Id & " TABL T"
fileOut.WriteLine Ent
End If
FileOut.WriteLine FileIn.ReadLine
Cpt = Cpt + 1
If Cpt = 9000 Then
Cpt = 0
Id = Id + 1
fileOut.Close
End If
Wend
If Cpt <> 0 Then fileOut.Close
fileIn.Close
Avec cet algorithme, 1 tour de boucle = 1 ligne.
Attention : non testé, mais cela ne devrait pas être très loin de la
solution.
ET EN PLUS CELA FONCTIONNE !!! Merci je vais pouvoir me coucher tôt ce soir
--
"Fred" a écrit dans le message de news:
Dans son message ----DGI972--- nous dit :
Bonjour, J'ai réalisé un petit Script qui lit un fichier déja trié en entrée (environ 35 000 lignes) pour fabriquer des fichiers en sortie par block de 9000 lignes. Le nom des fichiers de sortie s'incréménte aussi. Le Script fonctionne mais, il me créé 4 fichier tbrib1, tbrib2... tbrib4 mais à la fin de l'exécution du Script j'ai le message d'erreur suivant: Erreur : L'entrée dépasse la fin du fichier à la ligne: fileOut.WriteLine fileIn.ReadLine. Je n'arrive pas à voir d'ou viens le Pb. Tempo, délais ??? Je suis si proche de la fin de mon Pb !!!
Voiçi les quelques lignes de mon Script:
Option Explicit Dim fso, objShell, CPT, ID, fileIn, ENT, fileOut, Sline,StrIn Set fso = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell")
ID = 1 CPT = 1 Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True) Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2, True)'tbrib1s pour les 9000 premières lignes
Do While Not fileIn.AtEndOfStream ENT="TBRIB"&ID&" TABL T" 'Fabrication de l'entête du fichier TBRIB1 TAB T fileOut.WriteLine ENT
Do UNTIL CPT = 9000 fileOut.WriteLine fileIn.ReadLine CPT = CPT + 1 Loop
fileOut.Close CPT = 1 ID = ID+1 Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&ID&"s", 2, True) Loop
fileOut.Close
Merci d'avance
Bonsoir, 4 * 9000 = 36000 ! N'est-ce pas la clé du problème ?
Tu t'exposes à ce genre de difficulté dès lors que tu imbriques des boucles. Ton FileIn.AtEndOfStream n'est évalué que toutes les 9000 lignes. Autant dire qu'il est peu efficace.
Tente quelque chose du style
Cpt = 0 : Id = 1 Set fileIn = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib0s", 1, True) While Not FileIn.AtEndOfStream If Cpt=0 Then Set fileOut = fso.OpenTextFile("C:SBA_MARPROGRAMtbrib"&Id&"s", 2, True) 'Ecriture de l'en-tête Ent = "TBRIB" & Id & " TABL T" fileOut.WriteLine Ent End If
FileOut.WriteLine FileIn.ReadLine Cpt = Cpt + 1
If Cpt = 9000 Then Cpt = 0 Id = Id + 1 fileOut.Close End If Wend
If Cpt <> 0 Then fileOut.Close fileIn.Close
Avec cet algorithme, 1 tour de boucle = 1 ligne. Attention : non testé, mais cela ne devrait pas être très loin de la solution.