Tuto vb6 : supprimer une ligne dans un fichier

4/5 (7 avis)

Vue 19 057 fois - Téléchargée 2 347 fois

Description

Une idée avec Proviste : créer un module de fonction identique en VB6 et en VB.NET --> Voici la version VB6.
( Version .Net ici http://www.vbfrance.com/code.aspx?id=22827 )

Cette fonction, logée dans un module (facilement réutilisable) permet de supprimer :
- Soit une ligne, en précisant son numéro
- Soit du texte, en précisant le texte
Parmi les options, on peut choisir :
- Le fichier de destination (différent ou identique à l'original)
- Le type de comparaison (insensible aux majuscules ou pas)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
jihednond Messages postés 143 Date d'inscription jeudi 27 mars 2008 Statut Membre Dernière intervention 3 septembre 2011 1
10 déc. 2008 à 15:40
lol source pro
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 20
16 mars 2006 à 21:02
Le Split va engager quasi 2,5 fois en mémoire la taille du fichier, ne passera pas si le fichier est gros, manque de mémoire assuré. Niveau temps de traitement c'est aussi la cata.
Il y a des cas (très souvent en VB) où il convient de se faire une vraie dll qui traitera cela en qlqs millisecondes.
- buffer de 4 Ko (suffisant pour 2 lignes) => VirtuallAlloc.
- Ouverture fichier => CreateFile.
- Taille fichier => GetFileSizeEx.
- Si taille > 4 Ko, aller au bout - 4 Ko => SetFilePointer.
- Remplir buffer => ReadFile (qui dira taille lue).
- Repositionner même place que avant lecture => SetFilePointer.
- Pointeur au bout du buffer, remonter tant que (Ptr > buffer) ET (2 sauts ligne non rencontrés).
- Si Ptr > buffer alors tamponner (Ptr - buffer) octets => WriteFile.
- Tronquer à la position actuelle du ptr de fichier => SetEndOfFile.
- Fermer fichier => CloseHandle.

Voila les 2 dernières lignes enlevées en un temps difficilement mesurable et sur nimporte quelle taille de fichier.
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
16 mars 2006 à 20:08
John7 disait :
Bonjour jack, voilà,je me sert de votre source pour supprimer 2 lignes dans un fichier texte. La première(là il n'y a pas de problème) et la dernière. Pour l'instant je passe par le texte de la dernière ligne car j'ai un fichier test mais sinon c'est jamais le même texte de fin et bien entendu c'est jamais la même longueur de texte !! Faut-il passer le fichier par une nouvelle boucle et s'arréter à la fin du fichier-1 pour avoir la dernière ligne ou une autre solution plus en rapport avec votre source ? J'espère que vous me répondrez, en attendant...Trés bonne journée à vous .

Je réponds ... euh
Dans ton cas, tu ne connais pas le contenu de la ligne ni son numéro.
Il faut alors charger tout le fichier :
Open "monFichier.txt" For Binary As #1
Temp$ = Space(FileLen("monFichier.txt"))
Get #1, , Temp$ ' On lit tout le fichier d'un coup -> Temp
Close #1
Dim Tableau() As String
Tableau = Split(Temp$, vbCrLf) ' Mets toutes les lignes dans un tableau
' La dernière ligne est dans Tableau(UBound(Tableau))
' Il suffit donc de réécrire le fichier, ligne par ligne, sans aller jusqu'au bout :
Open "monFichier.txt" For Output As #1
For r = 0 To (UBound(Tableau) - 1)
Print #1, Tableau(r)
Next r
Close #1
evilmajestik Messages postés 38 Date d'inscription lundi 13 janvier 2003 Statut Membre Dernière intervention 5 juillet 2005
1 déc. 2004 à 11:24
et pour supprimer juste un caractère donné faut faire comment ?
J'ai une ligne avec des " et je voudrais les supprimer dans le fichier texte avant des les importer dans ACCESS.

Merci.
cs_Alain Proviste Messages postés 908 Date d'inscription jeudi 26 juillet 2001 Statut Modérateur Dernière intervention 1 février 2015 2
22 août 2004 à 13:34
Afficher les 7 commentaires

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.