Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Compilation de fichiers avec fso

5 réponses
Avatar
François
Bonjour,

John Fuss m'avait proposé la méthode suivante pour empiler des fichiers de
grande
taille sans avoir besoin de les ouvrir.
Il me manque une instruction permettant de copier le fichierIn2 à la suite
du fichierIn1
en omettant la 1ère ligne (qui contient les noms de champ).

Dim fso As New FileSystemObject '(référence à Ms Scripting
requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream


Set fichierIn1 = fso.OpenTextFile("c:\MonFichier1.csv")
Set fichierIn2 = fso.OpenTextFile("c:\MonFichier2.csv")
Set fichierOut = fso.OpenTextFile("c:\MaSynthese.csv",
ForWriting, True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close
fichierOut.Close

Merci par avance
François

5 réponses

Avatar
JB
Bonjour,

Dim fso As New FileSystemObject '(référence à Ms Scripting requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream
Set fichierIn1 = fso.OpenTextFile("classeur2.csv")
Set fichierIn2 = fso.OpenTextFile("classeur3.csv")
Set fichierOut = fso.OpenTextFile("classeur5.csv", ForWriting,
True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
fichierIn2.ReadLine
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close

JB

On 7 sep, 18:27, "François" wrote:
Bonjour,

John Fuss m'avait proposé la méthode suivante pour empiler des fichie rs de
grande
taille sans avoir besoin de les ouvrir.
Il me manque une instruction permettant de copier le fichierIn2 à la su ite
du fichierIn1
en omettant la 1ère ligne (qui contient les noms de champ).

Dim fso As New FileSystemObject '(référence à Ms Scripti ng
requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream

Set fichierIn1 = fso.OpenTextFile("c:MonFichier1.csv")
Set fichierIn2 = fso.OpenTextFile("c:MonFichier2.csv")
Set fichierOut = fso.OpenTextFile("c:MaSynthese.csv",
ForWriting, True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close
fichierOut.Close

Merci par avance
François


Avatar
François
Bonjour Jacques,

Merci beaucoup pour cette réponse.
Ca fonctionne, ce qui ne m'étonne pas de ta part, mais, mais je ne
comprend pas pourquoi !?
La seule différence me semble être que l'on ne ferme pas le fichier de
destination !

Je veux bien un éclaircissement, mais en toput cas, meric encore et
mille fois
Françosi

"JB" a écrit dans le message de news:

Bonjour,

Dim fso As New FileSystemObject '(référence à Ms Scripting requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream
Set fichierIn1 = fso.OpenTextFile("classeur2.csv")
Set fichierIn2 = fso.OpenTextFile("classeur3.csv")
Set fichierOut = fso.OpenTextFile("classeur5.csv", ForWriting,
True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
fichierIn2.ReadLine
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close

JB

On 7 sep, 18:27, "François" wrote:
Bonjour,

John Fuss m'avait proposé la méthode suivante pour empiler des fichiers de
grande
taille sans avoir besoin de les ouvrir.
Il me manque une instruction permettant de copier le fichierIn2 à la suite
du fichierIn1
en omettant la 1ère ligne (qui contient les noms de champ).

Dim fso As New FileSystemObject '(référence à Ms Scripting
requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream

Set fichierIn1 = fso.OpenTextFile("c:MonFichier1.csv")
Set fichierIn2 = fso.OpenTextFile("c:MonFichier2.csv")
Set fichierOut = fso.OpenTextFile("c:MaSynthese.csv",
ForWriting, True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close
fichierOut.Close

Merci par avance
François


Avatar
JB
Bonsoir,

Avant la boucle de lecture du second fichier, j'ai ajouté cette
instruction qui lit la première ligne (les titres) sans l'écrire dans
le fichier de sortie:

fichierIn2.ReadLine

JB

On 10 sep, 21:52, "François" wrote:
Bonjour Jacques,

Merci beaucoup pour cette réponse.
Ca fonctionne, ce qui ne m'étonne pas de ta part, mais, mais je ne
comprend pas pourquoi !?
La seule différence me semble être que l'on ne ferme pas le fichi er de
destination !

Je veux bien un éclaircissement, mais en toput cas, meric encore et
mille fois
Françosi

"JB" a écrit dans le message de news:

Bonjour,

Dim fso As New FileSystemObject '(référence à Ms Scripting requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream
Set fichierIn1 = fso.OpenTextFile("classeur2.csv")
Set fichierIn2 = fso.OpenTextFile("classeur3.csv")
Set fichierOut = fso.OpenTextFile("classeur5.csv", ForWriting,
True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
fichierIn2.ReadLine
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close

JB

On 7 sep, 18:27, "François" wrote:



Bonjour,

John Fuss m'avait proposé la méthode suivante pour empiler des fich iers de
grande
taille sans avoir besoin de les ouvrir.
Il me manque une instruction permettant de copier le fichierIn2 à la suite
du fichierIn1
en omettant la 1ère ligne (qui contient les noms de champ).

Dim fso As New FileSystemObject '(référence à Ms Scrip ting
requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream

Set fichierIn1 = fso.OpenTextFile("c:MonFichier1.csv")
Set fichierIn2 = fso.OpenTextFile("c:MonFichier2.csv")
Set fichierOut = fso.OpenTextFile("c:MaSynthese.csv",
ForWriting, True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close
fichierOut.Close

Merci par avance
François- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
François
Bonjour Jacques,

C'est vraiment très sympa!
Merci pour cet éclairage.

Bonne journée à tous
François

"JB" a écrit dans le message de news:

Bonsoir,

Avant la boucle de lecture du second fichier, j'ai ajouté cette
instruction qui lit la première ligne (les titres) sans l'écrire dans
le fichier de sortie:

fichierIn2.ReadLine

JB

On 10 sep, 21:52, "François" wrote:
Bonjour Jacques,

Merci beaucoup pour cette réponse.
Ca fonctionne, ce qui ne m'étonne pas de ta part, mais, mais je ne
comprend pas pourquoi !?
La seule différence me semble être que l'on ne ferme pas le fichier de
destination !

Je veux bien un éclaircissement, mais en toput cas, meric encore et
mille fois
Françosi

"JB" a écrit dans le message de news:

Bonjour,

Dim fso As New FileSystemObject '(référence à Ms Scripting requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream
Set fichierIn1 = fso.OpenTextFile("classeur2.csv")
Set fichierIn2 = fso.OpenTextFile("classeur3.csv")
Set fichierOut = fso.OpenTextFile("classeur5.csv", ForWriting,
True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
fichierIn2.ReadLine
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close

JB

On 7 sep, 18:27, "François" wrote:



Bonjour,

John Fuss m'avait proposé la méthode suivante pour empiler des fichiers
de


grande
taille sans avoir besoin de les ouvrir.
Il me manque une instruction permettant de copier le fichierIn2 à la
suite


du fichierIn1
en omettant la 1ère ligne (qui contient les noms de champ).

Dim fso As New FileSystemObject '(référence à Ms Scripting
requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream

Set fichierIn1 = fso.OpenTextFile("c:MonFichier1.csv")
Set fichierIn2 = fso.OpenTextFile("c:MonFichier2.csv")
Set fichierOut = fso.OpenTextFile("c:MaSynthese.csv",
ForWriting, True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close
fichierOut.Close

Merci par avance
François- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
johnfuss
François a écrit le 11/09/2007 à 07h22 :
Bonjour Jacques,

C'est vraiment très sympa!
Merci pour cet éclairage.

Bonne journée à tous
François

"JB" a écrit dans le message
de news:

Bonsoir,

Avant la boucle de lecture du second fichier, j'ai ajouté cette
instruction qui lit la première ligne (les titres) sans l'écrire
dans
le fichier de sortie:

fichierIn2.ReadLine

JB

On 10 sep, 21:52, "François" wrote:
Bonjour Jacques,

Merci beaucoup pour cette réponse.
Ca fonctionne, ce qui ne m'étonne pas de ta part, mais, mais je ne
comprend pas pourquoi !?
La seule différence me semble être que l'on ne ferme pas le
fichier de
destination !

Je veux bien un éclaircissement, mais en toput cas, meric encore et
mille fois
Françosi

"JB" a écrit dans le message
de news:

Bonjour,

Dim fso As New FileSystemObject '(référence à Ms
Scripting requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream
Set fichierIn1 = fso.OpenTextFile("classeur2.csv")
Set fichierIn2 = fso.OpenTextFile("classeur3.csv")
Set fichierOut = fso.OpenTextFile("classeur5.csv", ForWriting,
True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
fichierIn2.ReadLine
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close

JB

On 7 sep, 18:27, "François" wrote:



Bonjour,

John Fuss m'avait proposé la méthode suivante pour empiler des
fichiers
de
grande
taille sans avoir besoin de les ouvrir.
Il me manque une instruction permettant de copier le fichierIn2 à la
suite
du fichierIn1
en omettant la 1ère ligne (qui contient les noms de champ).

Dim fso As New FileSystemObject '(référence à Ms
Scripting
requise)
Dim fichierIn1 As TextStream
Dim fichierIn2 As TextStream
Dim fichierOut As TextStream

Set fichierIn1 = fso.OpenTextFile("c:MonFichier1.csv")
Set fichierIn2 = fso.OpenTextFile("c:MonFichier2.csv")
Set fichierOut = fso.OpenTextFile("c:MaSynthese.csv",
ForWriting, True)
Do Until fichierIn1.AtEndOfStream
fichierOut.WriteLine fichierIn1.ReadLine
Loop
Do Until fichierIn2.AtEndOfStream
fichierOut.WriteLine fichierIn2.ReadLine
Loop
fichierIn1.Close
fichierIn2.Close
fichierOut.Close

Merci par avance
François- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -





Bonjour,

en 'plus sioux' que de faire un .ReadLine pour ignorer la ligne d'en-tête du deuxième fichier on peut faire un .SkipLine

Bon courage.

JohnFuss.