HELP !!! QQN SAIT COMMENT ...?

Résolu
dalma101 Messages postés 51 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 13 août 2008 - 22 juil. 2004 à 15:57
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 27 juil. 2004 à 12:28
Bonjour,

quelqu'un connaît-il un code (simple SVP) pour lire ou copier depuis ou dans un fichier .txt à une ligne bien précise ?

Par exemple :
Ecrire "nom" à la ligne 3 de "fichier.txt"
ou
Lire ligne 3 de "fichier.txt"

Merci

5 réponses

crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 juil. 2004 à 16:14
Pour lire la nieme ligne d'un fichier

Function GetNiemeLigne(byVal N as long,ByVal Fic as String) as String
Dim FN as Long, Buffer As String
Fn = FreeFile
Open Fic for Input as #FN
On Error Goto TooShort
While N>0
Line Input #FN, Buffer
N=N-1
Wend
GetNiemeLigne = Buffer
Exit Function
TooShort:
Msgbox "Le fichier " & Fic & " ne contient pas assez de ligne,vbOKOnly + vbCritical
End Function


Pour écrire à la nieme ligne, c'est un peu plus complexe, car il faut passer par un fichier tempo

Sub WriteNiemeLigne(ByVal N as Long, ByVal Fic as String, ByVal Ligne as String)
Dim FN as Long, FNtmp as longBuffer As String
Fn = FreeFile
Open Fic for Input as #FN
FNTmp = freefile
Open Fic & "Unbeautemporaire" for output as #FNtmp
On Error Goto TooShort
While N>1
Line Input #FN, Buffer
Print #FNTmp,buffer
N=N-1
Wend
Print #FNTmp,Ligne
Close #FN
Close #FNtmp
Kill Fic
FileCopy Fic & "Unbeautemporaire", Fic
Kill  Fic & "Unbeautemporaire"
Exit Sub
TooShort:
Msgbox "Le fichier " & Fic & " ne contient pas assez de ligne,vbOKOnly + vbCritical
End Sub


Je me suis pas pris la tête pour le fichier temporaire, y a moyen de faire bcp plus propre.

A noter que il est aussi possible de lire le fichier en entier, de le splitter dans un tableau de string, puis de réécrire tout le tableau dans le fichier après avoir changer l'item du tableau correspondant à la ligne voulu : Peut-être mieux, faut voir !!

Christophe R.
3
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
22 juil. 2004 à 16:17
J'ai oublié de metter les "Close #FN..." après les msgbox en cas d'erreur !!! Et ajouter aussi ici un Kill sur le ficheir temporaire dasn la sub

Christophe R.
0
dalma101 Messages postés 51 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 13 août 2008
22 juil. 2004 à 16:28
Merci...
0
dalma101 Messages postés 51 Date d'inscription jeudi 13 mai 2004 Statut Membre Dernière intervention 13 août 2008
27 juil. 2004 à 11:42
Salut, excuse moi de te déranger mais tu m'avais fourni un code pour lire ou écrire à une ligne bien précise d'un fichier txt et je viens seulement de me plonger dedans.
Il s'avère que la lecture ne pose pas de pb.
Mais par contre en écriture, lorsque je modifie le texte d'une ligne, toutes les lignes qui suivent sont effacées... J'ai essayé de comprendre mais je suis pas doué...
Tu sais pourquoi ?
Merci d'avance
0

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

Posez votre question
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
27 juil. 2004 à 12:28
Excuse moi !!
Remplace le While N>1 ... Wend par ceci.
While not EOF(#FN)
Line Input #FN,Buffer
N =N-1
If N = 0 Then Print #FNtmp, Ligne Else Print #FNTmp,Buffer
Wend

Et supprime le Print #FNTmp, Ligne qu'il y a après le wend.
Cela devrait fonctionner (j'ai pas VB sous la main mais de tete cela devrait être OK)
Christophe R.
0
Rejoignez-nous