Enregistrement dans un fichier

lincaro Messages postés 13 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 30 mai 2005 - 2 août 2004 à 14:37
lincaro Messages postés 13 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 30 mai 2005 - 3 août 2004 à 08:25
Salut, je suis en train de faire un petit programme de fusion, je souhaiterai conserver ma liste de doc dans un fichier .txt, donc j'ouvre mon fichier et j'enregistre mais je n'arrive pas a changer de ligne donc ca enregistre tout le tps sur la premiere ligne, je vois pas comment faire, si quelqu'un peu m'aider ce serai cool. merci

je vous met mon morceau de code peut etre que vous comprendrez mieu mon erreur...

Sub sauvegarde_liste()
Dim pf As Integer
Dim i As Integer
Dim nbenr As Integer

pf = FreeFile
If chckliste.Value = 1 Then

Open "C:\mes documents\ sauvegardeliste.txt" For Random As pf
'nbenr = LOF(pf) / Len(Myenr)
For i = 1 To nbr_doc
Myenr.nom_fichier = tabcons(i).nom_fichier
Myenr.nom_rep = tabcons(i).nom_repertoire
Myenr.nom_sauvegarde = Txtsauvegarde.Text
Put #pf, , Myenr
Next i

Close pf
End If

10 réponses

cs_RDX Messages postés 117 Date d'inscription samedi 26 juin 2004 Statut Membre Dernière intervention 27 août 2005
2 août 2004 à 15:01
salut!

Je serait a ta place, j'ouvrirai en mode binaire

Open "C:\mes documents\ sauvegardeliste.txt" for binary as #1
for i =1 to nbrdoc
Myenr.nom_fichier = tabcons(i).nom_fichier
Myenr.nom_rep = tabcons(i).nom_repertoire
Myenr.nom_sauvegarde = Txtsauvegarde.Text
Put #1, , Myenr
Next i
close #1

mais une chose très IMPORTANTE : MyEnr doit etre de longueur finie !
toutes tes chaines doivent etre déclarées comme ca :

Dim Chaine1 as string *100 'par exemple

Sinon tu doit enregistrer la longueur de chaque variable string dans le fichier.

J'espere que ca va t'aider.

Bye!
0
lincaro Messages postés 13 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 30 mai 2005
2 août 2004 à 15:18
Merci d'avoir repondu, je viens de faire comme tu me l'as dit, j'avais deja defini des longueur pour MyEnr. le fait de mettre binary au lieu de random ne change rien malheureusement. Le probleme reste le meme, les derniers ecrasent les enregistrements d'avant.
0
Fulgy Messages postés 85 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 5 octobre 2004
2 août 2004 à 15:51
Salut.
Si tu veux enregistrer tout en une fois utilise un file system object (référence: Microsoft Scripting Runtime) qui te permet d'écrire ligne par ligne, sinon si tu veux enregistrer en plusieurs fois il faut que tu ouvre ton fichier en mode append ce qui te permet d'écrire à la fin du fichier en conservant l'original.
A+
0
lincaro Messages postés 13 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 30 mai 2005
2 août 2004 à 16:19
j'avais deja référencé avec Microsoft Scripting Runtime mais ca n'ecrit pas pour autant a la ligne. j'ai essayé avec append, mais ca me pose un probleme avec mon Myenr.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Fulgy Messages postés 85 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 5 octobre 2004
2 août 2004 à 16:26
Même si tu as mis la référence à Microsoft Scripting Runtime, si tu ouvre tes fichier avec Open, tu ne l'utilise pas. Je te donne un exemple pour écrire cela dans un fichier:
Salut
Coucou
Bijour

<code>

dim fso as filesystemobject
dim dest as textstream

set fso = new filesystemobject
set dest = fso.createtextfile("exemple.txt", true)
dest.writeline "Salut"
dest.writeline "Coucou"
dest.writeline "Bijour"
dest.close
set dest = nothing
set fso = nothing

<\code>

Et voilou! A+
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
2 août 2004 à 16:26
Quel drole d'idée d'ouvrir un ficheir texte en binary !!!!! Pour écrire dasn un ficheir texte, il suffit de l'ouvrir en Output et d'utiliser Print #..., dessus !!! J'ai l'impression que vous vous compliquer joliment la vie tous !!

Christophe R.
0
lincaro Messages postés 13 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 30 mai 2005
2 août 2004 à 16:32
oui mais output ne va pas conserver les autres enregistrement??
et je n'ai pas mis print mais put. il faudrai cas chaque fois je rouvre le fichier sur la premiere ligne ou il y a rien d'ecris. et ainsi de suite.
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
2 août 2004 à 16:44
Pour écrire a la fin du fichier ouvre le avec Append, au lieu de Output. Comme cela, le Print #... écrira à la fin du fichier

Christophe R.
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
2 août 2004 à 23:10
Bonsoir
Si tu veux garder ton mode Random, essaie

Open "C:\mes documents\ sauvegardeliste.txt" For Random As #pf Len = Len(Myenr)
For i = 1 To nbr_doc
nbenr = LOF(pf) / Len(Myenr)
Myenr.nom_fichier = tabcons(i).nom_fichier
Myenr.nom_rep = tabcons(i).nom_repertoire
Myenr.nom_sauvegarde = Txtsauvegarde.Text
Put #pf, nbenr + 1, Myenr
Next i

Close pf
End If
0
lincaro Messages postés 13 Date d'inscription lundi 1 décembre 2003 Statut Membre Dernière intervention 30 mai 2005
3 août 2004 à 08:25
Je te remercie, c'est tout a fait ce que je cherchais. Ca va me permettre d'avancer. Merci beaucoup a plus

bye
0
Rejoignez-nous