Ecrire dans un fichier à telle ligne

burton41

XLDnaute Nouveau
Bonjour,
Je cherche actuellement comment je pourrais recopier quelque chose comme ca (les virgules serraient des cellules):

"1000,0,0,0 ,0,0,0 ,0,4.5 ,2,6.3 ,0,0,0 ,0,0,0 "

dans un fichier, à partir de la ligne 5 par exemple

j'ai déja un bout de programme que je remanirais mais je ne sais pas comment le faire debuter à partir de la ligne 5 de mon ficher txt par exemple est-ce que quelqu'un aurait la solution ??

Merci

base du prog:

Sub EcrireTxt()
Dim Fs As Object, A As Object
Dim i As Byte

Set Fs = CreateObject("Scripting.FileSystemObject")
Set A = Fs.CreateTextFile("\blablalbal\test.txt", True)

For i = 2 To 201
A.WriteLine (Range("A" & i) & Range("B" & i) & "')")
Next i
A.Close
End Sub
 

tototiti2008

XLDnaute Barbatruc
Re : Ecrire dans un fichier à telle ligne

Bonjour burton,

Bienvenue sur XLD

tu crées un fichier texte, pourquoi commencer à la ligne 5 de celui-ci ?
que doivent contenir les 4 1ères lignes ?
il suffit de faire un Writeline 4 fois pour sauter 4 lignes, mais je ne sais pas si c'est ce que tu veux...

edit : Pour info, l'écriture dans un fichier texte est toujours séquentielle, pas possible de "commencer à la ligne n" facilement, à part créer un autre fichier de toute pièce
 
Dernière édition:

burton41

XLDnaute Nouveau
Re : Ecrire dans un fichier à telle ligne

enfaite c'est pour initialisé un tableau dans un autre fichier qui contient deja des données
exemple :

#1 main(){
#2
#3 tab[2000]={
#4
#5 ET LA JE VEUX METTRE LE CONTENU DE MON TABLEAU EXCEL :)
#6
#7 };
#8 }

Ce qui donnerai une edition a partir de la ligne 5 ici
 

tototiti2008

XLDnaute Barbatruc
Re : Ecrire dans un fichier à telle ligne

Re,

tu ne peux pas écrire à la ligne n d'un fichier texte existant, mais tu peux
lire un fichier texte ligne à ligne
en créer un autre avec les mêmes lignes
et mettre une condition sur la ligne (n°5) pour écrire autre chose
pour finir, tu pourra même supprimer le fichier lu, et renommer le second comme le premier, ce qui donnera l'impression qu'on a juste modifié le premier mais à ma connaissance ce n'est pas possible

un essai (mais pas testé)

Code:
Sub EcrireTxt()
Dim Fs As Object, Source As Object, Dest as Object, Ligne as string
Dim i As Byte

Set Fs = CreateObject("Scripting.FileSystemObject")
Set Dest = Fs.CreateTextFile(".\blablalbal\Dest.txt", True)
Set Source = Fs.OpenTextFile(".\blablalbal\Source.txt",1,False,-2)
i = 0
Do 
Ligne = Source.readLine
Dest.writeline Ligne
i=i+1
Loop until i = 4
For i = 2 to 201
Dest.writeline Application.transpose(application.transpose(Range("A" & i & ":Z" & i).value, ",")
next i
Ligne = Source.readLine
Do until Source.atendofstream
Ligne = Source.readLine
Dest.writeline Ligne
Loop

Dest.Close
Source.Close
set Dest = nothing
Set source = nothing
Set fs = nothing
End Sub
 

burton41

XLDnaute Nouveau
Re : Ecrire dans un fichier à telle ligne

C'est bien dommage que l'on ne puisse pas le faire ....

Sinon, j'ai une erreur que je n'arrive pas a résoudre à ce niveau la :

[...]

Set Fs = CreateObject("Scripting.FileSystemObject")
Set Dest = Fs.CreateTextFile(".\blablalbal\Dest.txt", True)
Set Source = Fs.OpenTextFile(".\blablalbal\Source.txt",1,False,-2)
i = 0

[...]
 

tototiti2008

XLDnaute Barbatruc
Re : Ecrire dans un fichier à telle ligne

Re,

Le fichier source (celui qui commence par "main()") s'appelle Source.txt dans mon code, plus test.txt, il faut que tu le renommes
sinon j'avais fait une erreur, je viens de tester le code là sans erreur
Le classeur qui contient la macro doit être enregistré dans le même dossier que Source.txt
Le fichier résultat s'appelle Dest.txt après que la macro ait tourné

Code:
Sub EcrireTxt()
Dim Fs As Object, Source As Object, Dest As Object, Ligne As String
Dim i As Byte

Set Fs = CreateObject("Scripting.FileSystemObject")
Set Dest = Fs.CreateTextFile(".\Dest.txt", True)
Set Source = Fs.OpenTextFile(".\Source.txt", 1, False, -2)
i = 0
Do
Ligne = Source.readLine
Dest.writeline Ligne
i = i + 1
Loop Until i = 4
For i = 2 To 201
Dest.writeline Join(Application.Transpose(Application.Transpose(Range("A" & i & ":Z" & i).Value)), ",")
Next i
Ligne = Source.readLine
Do Until Source.atendofstream
Ligne = Source.readLine
Dest.writeline Ligne
Loop

Dest.Close
Source.Close
Set Dest = Nothing
Set Source = Nothing
Set Fs = Nothing
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 877
Messages
2 093 152
Membres
105 642
dernier inscrit
ABDELMAJIDZIANI