Comment modifier un fichier .txt avec Visual Basic [Résolu]

marco1980 9 Messages postés vendredi 29 septembre 2006Date d'inscription 9 novembre 2006 Dernière intervention - 29 sept. 2006 à 10:26 - Dernière réponse : marco1980 9 Messages postés vendredi 29 septembre 2006Date d'inscription 9 novembre 2006 Dernière intervention
- 2 oct. 2006 à 09:46
Bonjour à tous,

grand débutant en programmation, je suis actuellement en possession d'une multitude de fichiers .txt contenant les resultats de tests expérimentaux.

Tous les résultats obtenus pas postprocessing et envoyés dans un fichiers .txt doivent etre classés.

C'est pourquoi je désire modifier chaque fichier .txt pour en créer un qui convienne à mes requetes ( cad supprimer des lignes, supprimer certaine partie de lignes, remplacer des espaces par de points virgule, etc.).

En quelques lignes , voici le style d'opérations que je souhaite effecuter:

fichier d'origine: C:\toto.txt
contenant:

j'invente n'importe quoi mais l'idée c'est ça 056
4567     temps
53426   metres
une ligne par ci par là
76279   litres  62678   nombre

fichier souhaité:C:\toto.txt
contenat:

056;4567;53426;76279;62678

Pourriez m'indiquer le chemin pour y parvenir ou m'indiquer un tutoriel existant traitant du sujet en question?

Merci d'avance.

Marco

<!-- / message -->
Afficher la suite 

3 réponses

Répondre au sujet
cs_GeorgesDeLajungle 29 Messages postés lundi 22 mars 2004Date d'inscription 22 juin 2007 Dernière intervention - 29 sept. 2006 à 11:14
+3
Utile
Bonjour,

Pour cela il te faut lire le fichier cela se fait avec
Dim fichier as new Streamreader("c:\toto.txt")
Là tu as en main un objet te permettant de lire ton fichier
Ensuite tu fais
Dim lignelue as String = fichier.readline()
Tu récupères la 1ère ligne de ton fichier avec la fonction readline
Ensuite tu fais une boucle du style

While Not (lignelue Is Nothing)
lignelue = fichier.readline()
End While

Avec cette boucle, tu parcours ton fichier,
A présent, il te reste à stocker les infos du fichier parce que tant que tu lis le fichier, tu ne peux pas écrire dedans
Donc tu crées avant ta boucle un tableau dynamique de String :
Dim lignes() as String
Tu initialises celui ci avant de commencer ta boucle
Redim lignes(0)
ajoute un compteur :
dim i as integer
i =0
et tu ajoutes dans ta boucle ce qu'il faut pour remplir ton tableau

While Not(lignelue Is Nothing)
lignes(i) = lignelue
i = i + 1
Redim Preserve lignes(i)
lignelue = fichier.readline()
End While

Tu fermes la lecture du fichier en cours
fichier.close()

Ensuite tu traites ton tableau avec une autre petite boucle (tu peux aussi les transformations directement dans la boucle de lecture)

For i = 0 to lignes.length -1
' Fonction qui tronque la ligne au premier espace
    lignes(i) = lignes(i).remove(lignes(i).indexof(" "),lignes(i).length - lignes(i).indexof(" "))
' Fonction qui remplace tous les espaces par des points virgules
    lignes(i) = lignes(i).replace(" ",";")
'Fonction qui permet de spécifier une sous chaine de caractères
    lignes(i) = lignes(i).substring(debut,longueur)
Next i

Une fois cela fait tu rouvres le fichier en écriture

Dim fichierecris as new StreamWriter("c:\toto.txt",false)
Tu ouvres ainsi le fichier en écriture, l'argument False, sert à dire que tu écrases le fichier existant, si tu mets l'argument à True, tu écris à la fin du fichier.
Ensuite ne te reste plus qu'à écrire tes données traitées dans le fichier

For i = 0 to lignes.length - 1
    if i < lignes.length -1 Then
        fichier.write(lignes(i) & ";")
    else
       fichier.write(lignes(i))
    end if
Next i

Pour plus de renseignements voit un peu la liste des fonctions applicables dans la documentation de .Net.

Eric
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_GeorgesDeLajungle
marco1980 9 Messages postés vendredi 29 septembre 2006Date d'inscription 9 novembre 2006 Dernière intervention - 29 sept. 2006 à 11:21
0
Utile
merci beaucoup,

j'ai bien compris la logique à laquelle je commence à m'impregner.
je  rencontrerez tres certainement d'autres soucis c'est pourquoi je confirme des à présent la réponse que tu m'as apportée.
A bientôt sur le forum!
Marco
Commenter la réponse de marco1980
marco1980 9 Messages postés vendredi 29 septembre 2006Date d'inscription 9 novembre 2006 Dernière intervention - 2 oct. 2006 à 09:46
0
Utile
Comme prévu j'ai rencontré quelques problèmes à appliquer le tutoriel parfaitement détaillé de GeorgesDeLaJungle.

Certains ont été illucidés d'autres non.

Les problèmes récurrents que je rencontre et qui m'empechent d'aller au bout de la modification, c'est à dire à la modification désirée du fichier sont les suivants:

1)Le tableau a été rempli, il s'agit de le traiter ligne par ligne pour y apporter les modifications souhaitées. Sauf que je rencontre lors de cette étape un refus:
 
En voulant remplacer tous les espaces par des points virgules avec la boucle suivante

For i = 0 To lignes.Length - 1
            lignes(i) = lignes(i).Replace(" ", ";") 
        Next i

je rencontre ce genre d'exception :

"Une exception de première chance de type 'System.IO.FileNotFoundException' s'est produite dans mscorlib.dll
Une exception de première chance de type 'System.NullReferenceException' s'est produite dans WindowsApplication1.exe"

2)J'ai essayé d'apporter les modifications du fichier directement dans la boucle de lecture et au lieu d'ecrire le nouveau fichier, le fichier toto existant est completement effacé.

Je me retrouve ainsi dans une impasse aui m'empêche hélas d'avancer.
Si un membre du vbfrance pouvait m'éclairer sur ces soucis je lui en serait gré. je pourrais ainsi perfectionner et corriger le tutoriel de GeorgesDeLaJungle.
Commenter la réponse de marco1980

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.