Supprimer les 3 dernières lignes d'un .txt [Résolu]

Signaler
Messages postés
56
Date d'inscription
mardi 28 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2008
-
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
Salut à tous,

Voilà mon petit problème :
J'ai un fichier *.txt et je voudrais supprimer les 3 dernières lignes de ce fichier à partir de mon programme (sous VB6).

Merci d'avance à ceux qui pourront m'aider

8 réponses

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
Salut,

En utilisant la méthode LoadTextFile de l'ami Renfield que tu trouveras ici :




http://www.vbfrance.com/codes/CHARGER-FICHIER-TEXTE-WINDOWS-OU-UNIX_39369.aspx






tu peux faire ceci :

Dim tablo() As String
Dim sTemp As String
Dim sFileName As String
Dim i As Long

sFileName =
"C:\repertoire\fichier.txt"


sTemp = LoadTextFile(sFileName)
tablo = Split(sTemp,vbCrLf)
Open sFileName For Output As #1
  For i = LBound(tablo) To UBound(tablo)-3
    Print #1,tablo(i)
  Next i
Close #1




Manu


--------------------------------------------------------------------------------------------
Avant de poster un message, n'oubliez pas de consulter le reglement.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Fais une petite recherche sur ce forum.

Elle te permettra d'importer dans un variable la totatlité de ton fichier texte.

Utilise alors Split (en te servant des vbcrlf qui séparent les lignes)

N'utilise du tableau(n) obtenu que les n-3 lignes, à réécrire dans ton fichier texte.


Voilà... j'ai préféré le dire ainsi plutôt que de t'écrire directement le code. (il vaut mieux apprendre à pêcher que de donner un poisson).

Reviens (avec ton code d'essai) si tu rencontres une difficulté.
Messages postés
561
Date d'inscription
samedi 10 janvier 2004
Statut
Membre
Dernière intervention
11 octobre 2010

Ca aurait été bien que tu nous montre ta source.

Je ne sais pas quel est le codage du texte que tu as utilisé mais admettons que c'est ASCII
Dans le bloc note de Windows les saut de lignes peuvent être virtuel car le texte est redimenssioné à la taille de la fenêtre. Donc il faut que tu cherches dans la variable String récupéré quand tu ouvres ton fichier dans l'Ide grâce à la fonction InStr le caractère suivant "�5;�5;". Je sais plus le code correspondant dans la table ASCII. Le dernier "�5;�5;" trouvé correspont au saut de la dernière ligne. Autrement dit tu cherches les trois derniers "�5;�5;" et tu supprimes les lignes grâce à la fonction Mid par exemple. J'éspère t'avoir donné une piste.
Messages postés
561
Date d'inscription
samedi 10 janvier 2004
Statut
Membre
Dernière intervention
11 octobre 2010

jmfmarques > J'aime bien ta méthode plus simple avec l'utilisation d'un tableau mais scoboy va devoir reconstituer sa chaîne de caractères. Tu fais NouveauTexte = Mid(MonTexte,1,Position_Du_3eme_Dernier_VbCrLf_Trouvé - 1)
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Les lignes d'un fichier txt sont des lignes (et celà n'a rien à voir avec l'affichage, qui va uniquement dépendre de la largeur que l'on donne à la fenêtre de l'affichage de l'outil utilisé pour visualiser). Les lignes y sont séparées par un vbcrlf
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
"Position_Du_3eme_Dernier_VbCrLf_Trouvé "

et tu l'envoies alors vers la fabrication d'une boucle pour faire cette recherche de position !...
Messages postés
56
Date d'inscription
mardi 28 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2008

Ok econs,
Merci à tous de m'avoir aidé.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
J'aurais vraiment préféré que tu n'aies pas ce poisson-là servi prêt à manger...
Tu serais sans doute arrivé au même résultat (plus lentement, certes) et il serait resté "gravé"...
Désolé.