Supprimer ligne dans fichier texte [Résolu]

Signaler
Messages postés
319
Date d'inscription
jeudi 1 avril 2010
Statut
Membre
Dernière intervention
16 mars 2011
-
Messages postés
14725
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020
-
Bonjour, voila j'ai un code qui doit supprimer la ligne de texte comportant le mot prédéfini. Le problème est que le code génère l'erreur :
L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection. Nom du paramètre : index

A mon avis le RemoveAt(i) pose problème car il supprime une ligne et cela décale le n° des lignes et au final ca les suppriment toutes.
For Each files In My.Computer.FileSystem.GetFiles(TextBox1.Text, FileIO.SearchOption.SearchAllSubDirectories, "*txt")
                Dim lines As List(Of String) = System.IO.File.ReadAllLines(files).ToList
                If lines.Count = 0 Then Continue For ' ne passe pas à la ligne de dessous mais remonte pour traiter le prochain fichier
                For i As Integer = 0 To lines.Count - 1
                    If lines(i).Contains("toto") Then
                        lines.RemoveAt(i)
                    End If
                Next
            Next

Qu'en pensez-vous ?

Ma LV2 c'est le Visual Basic, et toi ?

23 réponses

Messages postés
14725
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020
144
Bonjour,

Merci :)
Il y en a plusieurs, si tu rafraichis la page ;)

Je pense que oui, à vérifier.

Messages postés
319
Date d'inscription
jeudi 1 avril 2010
Statut
Membre
Dernière intervention
16 mars 2011
1
Salut, j'ajoute ce message non pas battre le record de message dans un post mais parce qu'il y a une contrariété imprévue.

Le code permet de supprimer une ligne dans un fichier .txt mais pas dans une autre extension genre .docx ou rtf.

Une fois l'opération achevée, il m'est impossible d'ouvrir le fichier.
Dans Office j'ai un message qui me dit que le fichier est endommagé.

A mon avis le contage de ligne comme ont fait se fait seulement dans les .txt et dans les autres extensions dérègle tout.

Je vais enquêter sur le problème, si vous avez des idées je suis preneur.




Ma LV2 c'est le Visual Basic, et toi ?
Messages postés
14725
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 septembre 2020
144
Bonjour,

Pour le RTF, utilises le contrôle RTF (je ne me rappel plus du nom exacte) de .NET
Et la raison pour que les DocX ne sont pas pris en compte, c'est que ce ne sont pas des fichiers texte standards, mais avec une autre mise en forme, il vaut mieux essayer d'automatiser Word (Controle OLE ou Macro).