Effacer une ligne dans un fichier texte

Résolu
Asghaard Messages postés 13 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 31 août 2006 - 24 août 2006 à 09:35
Asghaard Messages postés 13 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 31 août 2006 - 24 août 2006 à 10:34
Bonjour,

(je fais des macros sous VBE Excel)
Je ne parviens pas à trouver comment effacer une ligne précise dans un fichier en .txt

je sais écrire à la fin avec .WriteLine
je sais tout lire grâce à .ReadAll

mais comment faire pour, par exemple, supprimer les 3 premières ligne sdu fichier texte à l'aide d'une macro ou comment supprimer une ligne précise (autre que la dernière ligne ! )

Merci pour votre aide.

6 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 août 2006 à 09:45
Salut,


Essaie ceci. j'espere que cela t'aidera.










Dim Fso  As New FileSystemObject 
Dim TStream As TextStream 
Dim Contenu As String 
Dim Lignes() As String 
Dim i As Integer 

Set TStream =  Fso.OpenTextFile("C:\2.txt", ForReading) 
'On lit tout d'un coup
Contenu = TStream.ReadAll 
Call TStream.Close 
'On recupere toutes les lignes grace a la fonciton Split
Lignes = Split(Contenu, vbCrLf) 

'[.. operation sur tes lignes]
'Lignes(0) = Premiere ligne
'Lignes(1) = Seconde ligne...
'... Lignes(Ubound(Lignes)) = Derniere ligne
'Ne pas oublier de décaler les lignes vides redimensionner le tableau
'OU bien n'ecrire que les lignes non vides

Set TStream = Fso.OpenTextFile("C:\2.txt", ForWriting) 

For i =  LBound (Lignes) To UBound(Lignes) 
    Call TStream.WriteLine(Lignes(i)) 
    'OU    If Lignes(i) <> "" Then Call TStream.WriteLine(Lignes(i))
Next 
Call TStream.Close 
Set TStream  = Nothing 
Set Fso = Nothing 
 







<small> Coloration syntaxique automatique [AFCK]</small>

       







 






@+, Julien
3
Asghaard Messages postés 13 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 31 août 2006
24 août 2006 à 09:45
Edit :
Le but final étant de tout copier le fichier texte sauf les 3 premières lignes.
plutôt que de supprimer les 3 premières lignes, existe-t-il une solution qui permettrait de copier toutes les lignes sauf les 3 premières ?
0
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 août 2006 à 09:47
Re pas vu ton dernier post.


Dans ce cas la boucle d'écriture


passe de For i =   LBound (Lignes) To UBound(Lignes) 

A For i  = 2 To UBound(Lignes) '2 Car l'indice du tableau commence a 0






@+, Julien
0
Asghaard Messages postés 13 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 31 août 2006
24 août 2006 à 10:08
Merci pour avoir répondu si rapidement ...

Je suis en train d'essayer ta solution mais la procédure bloque sur

Dim Fso  As New FileSystemObject

message d'erreur : "Erreur de compilation : Type défini par l'utilisateur non défini"

(j'utilise Excel 2000 sous WinNT)
0

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

Posez votre question
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
24 août 2006 à 10:20
Salut,
J ai mis en référence au projet Microsoft Scripting Runtime.
Mais comme dans le premier post tu parlais de .ReadAll et WriteLine (methodes du textstream) je pensais que tu l'avais ajouter comme référence aussi.

@+, Julien
0
Asghaard Messages postés 13 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 31 août 2006
24 août 2006 à 10:34
(désolé, je suis débutant et j'ai pas bien compris ton explication pourquoi ça marchait pas !)

Toujours est il que j'ai réussi à faire ce que je demandais grâce à

Lignes = Split(Contenu, vbCrLf)

et

For i = LBound(Lignes) To UBound(Lignes) 
    Call TStream.WriteLine(Lignes(i)) 
    'OU    If Lignes(i) <> "" Then Call TStream.WriteLine(Lignes(i))
Next 

Comme j'avai des erreurs de compilations avec les Fso ... j'ai bidouillé avec d'autres solutions pour m'en sortir mais la tienne fonctionne sûrement

je te remercie pour ton aide
0
Rejoignez-nous