VBA ajouter une ligne a un fichier txt

Messages postés
81
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
16 mai 2006
- - Dernière réponse : ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 9 avril 2012 à 20:33
hello!! je voudrais rajouter une ligne dans un fichier, voilà ma procédure :




Private Sub Sig01_Change()




Open "C:\Documents and Settings\donnees.txt" For Output As #1


Print #1, "blablabla…", Ligne$; 47


Print #1, "Sig01" & Str(Val(Sig01.Text)), Ligne$; 48


Close #1


End Sub


‘Là c’est bon les deux lignes sont écrites dans le fichier donnees’


blablabla…47


Sig01 20048




puis je complète ma deuxième textbox


Private Sub Sig02_Change()




Open "C:\Documents and Settings\donnees.txt" For Output As #1


Print #1, "Sig02" & Str(Val(Sig02.Text)), Ligne$; 49


Close #1


Et là je ne retrouve mon fichier qu’avec la ligne


Sig02 20049




Comment doit-on faire pour que ça s’ajoute au même fichier, et ainsi avoir les trois lignes à la suite ?
Afficher la suite 

5 réponses

Meilleure réponse
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
18
2
Merci
Dit Lupus, dit en plus...
"Append" permet de reprendre le fichier à la fin... d'accord. Mais saut-il une ligne automatiquement (puisque la fin de la dernière ligne reste sur cette ligne!) ou alors se place-t-il à la fin de la dernière ligne ?

Enjoy


( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 204 internautes nous ont dit merci ce mois-ci

Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
10
0
Merci
Salut,

Tu remplaces Output par Append dans l'instruction Open.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
Messages postés
3758
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
10
0
Merci
ScSami, non.
Append de l'instruction Open ajoute simplement ce que tu veux ajouter à ton fichier texte. Tout dépend de comment le dernier enreg se termine.
S'il se termine par un vbcrlf (chr(13) & chr(10) - 0D0A en hexa) le nouvel enreg sera ajouté sur une nouvelle ligne. Sinon, à la suite de la dernière ligne.
Si c'est toi qui a créé le fichier, c'est à toi de gérer ça :
Print #x, ligne --> ajoute automatiquement un vbcrlf (fin d'enreg)
Print #x, ligne ; --> attend une suite donc pas de vbcrlf et c'est à toi de clore par un simple Print #x, pour ajouter un vbcrlf.
Sinon, il te faut tester la fin d'enreg, par exemple :

Function FinFichierOK(fichier As String) As Boolean
Dim s As String
Dim n As Integer


n = FreeFile
Open fichier For Input As #n
s = Input(LOF(n), #n)
Close #n

'là, tu choisis entre mid et right sachant qu'en vb.net, seul le mid est accepté 'If Mid(s, Len(s) - 1, 2) vbCrLf Then FinFichierOK True If Right(s, 2) vbCrLf Then FinFichierOK True


End Function

A utiliser comme suit :

Dim test As Boolean

test = FinFichierOK(TonFichier)

Open TonFichier For Append As #1
If test = False Then Print #1,
'...
Close #1

Bonne prog

------
Dresseur de puces, .... normal pour un loup !?
Messages postés
209
Date d'inscription
jeudi 5 août 2004
Statut
Membre
Dernière intervention
15 juillet 2009
0
Merci
Private Sub Sig01_Change()






Open "C:\Documents and Settings\donnees.txt" For Append As #1


Print #1, "blablabla…", Ligne$; 47



Print #1, "Sig01" & Str(Val(Sig01.Text)), Ligne$; 48



Close #1



End Sub
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Ouais...
Je ne pleurerai pas le jour où l'on interdira d'accès (pour au moins 3 mois) ceux qui ne passent ici que (comme les chiens au pied d'un arbre, les taggeurs en tous genres, les putois un peu partout, etc ...) n'interviennent manifestement ici que pour laisser une trace de leur ô combien "utile" passage !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient