Lire et ecrire dans un fichier texte.
Ce code est complet. (Pas comme celui de Zarbiboss)
Source / Exemple :
' *** Ecrire dans un fichier ***
'Ouvre le fichier c:\MonFichier
Open "c:\MonFichier" For Output As #1
'Ecrit Mon Texte dans le fichier
Print #1, "Mon Texte"
'Ferme le fichier
Close #1
' *** Lire un fichier ***
' Declare la variable Var1
Dim Var1
'Ouvre le fichier
Open "C:\Monfichier" For Input As #2
'Lit la première ligne et la place dans Var1
Input #2, Var1
'Ferme le fichier
Close #2
'Affiche le résultat dans un Msgbox
MsgBox "Le fichier contient : " & Var1
'Si vous voulez lire plusieurs ligne :
' Declare la variable Var1 et Var2
Dim Var1
Dim Var2
'Ouvre le fichier
Open "C:\Monfichier" For Input As #2
'Lit la première ligne et la place dans Var1
Input #2, Var1
Input #2, Var2
'Ferme le fichier
Close #2
Conclusion :
Assez simple avec la description des lignes.
Pour écrire sur plusieurs lignes faites la même chose que pour lire plusieurs lignes.
23 juin 2010 à 09:46
j'arrive peut-être après la bataille mais tu peux aussi utiliser la fonction Split() pour récupérer tes 3 champs.
Dim MaChaine As String 'chaine à traiter
Dim MesChainesFinales() As String 'tableau de chaines final
Dim MonSeparateur As String 'chaine contenant le texte qui sépare 2 champs (on parle aussi de délimiteur)
MaChaine="Mon texte1 Mon texte2 Mon texte3"
MonSeparateur=Space(5) 'chaine contenant 5 caractères "espace" correspondant aux 5 espaces entre "Mon teste1" et "Mon texte2"
MesChainesFinales=Split(MaChaine,MonSeparateur)
Print MesChainesFinales(0) 'Affiche "Mon texte1"
Print MesChainesFinales(1) 'Affiche "Mon texte2"
Print MesChainesFinales(2) 'Affiche "Mon texte3"
Tout le secret réside dans le bon choix de la chaine du délimiteur.
Pour faire l'opération sur l'ensemble du fichier, on peut le lire entierement dans une chaine (si le fichier n'est pas énorme), ensuite il faut séparer chaque ligne puis séparer chaque ligne. ça doit donner un truc du genre:
Dim TexteDuFichier As String 'chaine qui va contenir l'ensemble du fichier
Dim LignesDuFichier() As String 'tableau de chaine dont chaque indice va contenir une ligne du fichier
Open "c:\MonFichier" For Input As #2
TexteDuFichier=Input(LOF(2), #2) 'lecture de l'ensemble du fichier, LOF(2) renvoie la taille du fichier #2
Close #2
LignesDuFichier=Split(TexteDuFichier,vbCrLf) 'on utilise vbCrLf (nouvelle ligne) pour séparer les lignes
Print LignesDuFichier(0) 'Affiche ="Mon texte1 Mon texte2 Mon texte3"
Il restera ensuite à traiter chaque ligne comme je l'ai montré plus haut.
13 mars 2010 à 14:02
merci
2 févr. 2007 à 20:18
Suis pas un pro de la lecture écriture de fichier, ni de prog non plus.
J'attaquerais le pb en travaillant le texte comme çà :
(çà marche en vba excel)
Sub Macro1()
Dim chaine(1000) '1000 étant le nb de mots du fichier, 1 mot=Mon texte1
chainetext1 = "Mon texte1 Mon texte2 Mon texte3"
nbseparateurs = 5 'exemple 5 espaces entre chaque "enregistrement"
i = 1
j = 1
Do
caracteretestez = Mid(chainetext1, i, 1)
Select Case caracteretestez
Case Is <> " "
chaine(j) = chaine(j) + caracteretestez
i = i + 1
Case Is = " "
compteur = compteur + 1 'compte le nb d'espaces
Select Case compteur
Case Is = nbseparateurs 'exemple 5 espaces entre chaque "enregistrement"
compteur = 0 'remise à 0 du compteur d'espaces
j = j + 1 'numéro de la première variable texte
Do 'boucle pour récupérer les caractères différents du séparateur
i = i + 1
caracteretestez = Mid(chainetext1, i, 1)
If caracteretestez = " " Then Exit Do
chaine(j) = chaine(j) + caracteretestez
Loop
Case Else
i = i + 1 'passe au caractère suivant
End Select
End Select
Loop Until i > Len(chainetext1) ' la longueur de la variable texte
Style = vbOK
Title = "Démonstration de MsgBox " ' Définit le titre.
Help = "DEMO.HLP" ' Définit le fichier d'aide.
Ctxt = 1000
'boucle pour voir le résultat
For i = 1 To j
Msg = Str(i) + " " + chaine(i)
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
Next j
End Sub
14 janv. 2007 à 11:08
Je ne crois pas qu'il y aie de solution miracle a ton probleme.
Il faut que tu te fabriques tes propre fonctions.
deux solutions: soit tu met dé caractère "spéciaux" pour séparer tes 3 champs
(par exemple: "Mon texte1 ## Mon texte2 ## Mon texte3"
soit tu formate texte1 texte2 et texte3 pour qu'ils ai tjrs la même longueur.
ex: 'chaque texte a une longueur de 50 caract.
Open "c:\MonFichier" For Input As #2
Input #2, txt2
Close #2
texte1 = mid(txt2,1,50)
texte2 = mid(txt2,51,50)
texte3 = mid(txt2,101,50)
12 janv. 2007 à 13:05
super merci kirkham
un problème résolu m'en amène un autre.... je m'explique
# Open "c:\MonFichier" For Append As #1
# Print #1, "Mon Texte1","Mon texte2"," Mon texte3"
# Close #1
mon fichier texte ainsi créé à la configue suivante (configuration que je souhaite dailleur):
Mon texte1 Mon texte2 Mon texte3
A présent, je souhaite lire ce texte:
# Open "c:\MonFichier" For Input As #2
# Input #2, txt1, txt2, txt3 'ici, j'obtiens un message d'erreur(il n'accepte pas les virgules comme pour la fonction print)
# Close #2
alors,
# Open "c:\MonFichier" For Input As #2
# Input #2, txt1
# Close #2
la lecture de txt1 me donne comme résultat:
Mon texte1 Mon texte2 Mon texte3
Mon souhait est d'avoir comme résultat:
txt1="Mon text1"
txt2="Mon text2"
txt3="Mon text3"
Comment faire? Quelqu'un aurait il un exemple?
Avec tout mes remerciements
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.