ecrire à la fin fichier texte déjà créé

youki

XLDnaute Occasionnel
Bonjour,
je traite des données qui doivent au final être mis dans un fichier texte (oui toujours).
comment faire pour ouvrir un fichier texte existant et écrire à la fin de ce texte. J'ai beaucoup de mal à trouver la doc vba pour cela.

Actuellement j'ouvre un fichier texte avec cette méthode:
Code:
Set Fsys = CreateObject("Scripting.FileSystemObject")
                    Set monfic = Fsys.CreateTextFile("E:\METHODES\TMS\" & chaine & ".txt")

Donc ça c'est bon, maintenant je souhaite à des endroits différents du script écrire dans le fichier texte.

1 - Est il mieux de fermer la connection au fichier texte entre temps avec un "monfic.close" ?
2 - Je n'arrive pas fichier clos ou pas, à trouver la méthode pour rééccrire dedans - et si possible à la suite.
Code:
Set Fsys = CreateObject("Scripting.OpenAsTextStream")
        Set monfic = Fsys.Opentextfile("E:\METHODES\TMS\" & essai & ".txt")
        With monfic
        .writeline Trim(tab_tempo_s1(0, size))
        .writeline Trim(v1)
        .writeline Trim(tab_tempo_s1(1, size))
        .writeline Trim(r1)
        End With
3- Je tente actuellement cette méthode vue dans msdn... mais il ne connait pas l'objet OpenAsTextStream apparement??


Si ce que je demande est nul, je pourrais passer par un tableau multidimensionnelle à taille variable que je transfère dans les multiples fichiers textes seulement à la fin... mais ça non plus je n'y arrive pas, car apparemment en vba il faut déclarer la taille du tableau dés le début??!! Et comme je ne connais pas le nombre de ligne avant de remplir le tableau... c'est pas pratique.

Merci d'avance pour vos lumières.
 

youki

XLDnaute Occasionnel
Re : ecrire à la fin fichier texte déjà créé

ah jolie, il y a de l'avancée. J'ai une erreur 70 erreur de permission. Je viens d'essayer en creant donc le fichier avant:

puis je ne le ferme pas (je ne mets pas monfic.close) = erreur 70 quand je veux réécrire dedans
puis je le ferme (monfic.clos) = erreur 70 aussi à l'écriture.

Existe t'il un problème de chmod en vba sur un pauvre fichier texte ou est ce autre chose?
 

Habitude

XLDnaute Accro
Re : ecrire à la fin fichier texte déjà créé

Pour les fichiers je te conseil, à moins de multiples utilisations, les modules de classe.
Tu l'ouvre, créer un objet et tu le ferme.

Ensuite tu travail avec ton objet.

Quand tu as fini, tu recopie ton objet dans le fichier.
 

mromain

XLDnaute Barbatruc
Re : ecrire à la fin fichier texte déjà créé

re,
bonjour Habitude,

chez moi, ce code fonctionne :
Code:
Dim Fsys As New Scripting.FileSystemObject, monfic As TextStream

    'si le fichier n'existe pas :
    Set monfic = Fsys.CreateTextFile("E:\METHODES\TMS\", True)
    '...
    '...
    '...
    monfic.Close
    
    
    'si le fichier existe déjà
    Set monfic = Fsys.OpenTextFile("E:\METHODES\TMS\" & essai & ".txt", 8)
    '...
    '...
    '...
    monfic.Close

il faudrait que tu fournisses ton code si tu n'arrive pas à l'adapter.

a+
 

youki

XLDnaute Occasionnel
Re : ecrire à la fin fichier texte déjà créé

Nickel mromain problème réglé (restriction serveur en thread: bref). Pour les futures qui rechercheront:

Pour ne pas écraser le fichier il suffit de changer le paramtre forwritting en for appending:

Code:
Set oFSO = New Scripting.FileSystemObject
        Set oFl = oFSO.GetFile("E:\METHODES\TMS\" & essai & ".txt")
        Set monfic = oFl.OpenAsTextStream(ForAppending)

Encore merci à vous
 
Dernière édition:

Discussions similaires

Réponses
19
Affichages
2 K