Bonjour à tous,
Je développe à l'aide de Visual Studio 2005, et je travaille sur un fichier txt.
Mon code fonctionne est à l'air propre mais après vérification, il me retourne un résultat qui n'est pas complet donc faux... Par la je veux dire que mon code ne retourne pas la totalité des lignes qu'il devrait faire.

Voici mon procédé, je ne pense pas qu'il soit le plus optimal possible, j'ouvre un fichier txt que j'ai nommé "toto" (il contient des données en brute", je récupère les lignes qui m'interressent et les places dans "tata" (que j'ai créé dans c/temp) puis j'aimerai mettre en forme ces données dans "tata2" (que je laisse dans c/temp pour le moment)

Voici mon code:
En vous remerciant d'avance


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
Imports System.IO
 
 
Public Class MegaSIRH
 
    Dim txtSource2 As String
 
 
    Private Sub btnParcourir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnParcourir.Click
        Dim txtSource As IO.Stream
        Dim OpenFileDialog1 As New OpenFileDialog
 
        'j'ouvre que les fichiers txt (extraction de Mega...
        'dans une petite fenetre et à la fermeture retour dans le repertoire
        OpenFileDialog1.Filter = "fichier txt (*.txt)|*.txt"
        OpenFileDialog1.Title = "Ouvrir le fichier à traiter"
        OpenFileDialog1.FilterIndex = 2
        OpenFileDialog1.RestoreDirectory = True
 
        'apres ouverture je sauvegarde dans des variables la source
        'et je laffiche à coté du bouton
        If OpenFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            txtSource = OpenFileDialog1.OpenFile()
            txtSource2 = OpenFileDialog1.FileName
            tbxParcourir.Text = txtSource2
        End If
 
 
 
 
    End Sub
 
    Private Sub btnTraiter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnTraiter.Click
 
        If (txtSource2 = Nothing) Then
            'test si un fichier a été choisie
            MsgBox("Veuillez choisir un fichier à traiter")
        Else
            'je copie le fichier source dans le rép temporaire pour travailler dessus
            'File.Copy(txtSource2, "C:\temp\toto.txt", True)
            'lecture du fichier
            Dim lecture As StreamReader = New StreamReader(txtSource2, System.Text.Encoding.Default)
            Dim ecriture As StreamWriter = New StreamWriter("C:\temp\tata.txt")
            Dim lignes As New List(Of String)
            Dim meslignes As New ArrayList
            Dim sLine As String
 
 
 
 
            With lecture
                'POSITIONNER le flux au début du fichier 
                .BaseStream.Seek(0, SeekOrigin.Begin)
                'TANT QUE le lecteur a quelquechose à lire 
                While (.Peek > 0)
                    'LIRE une ligne du fichier et l'ajouter à meslignes
                    sLine = meslignes.Add(.ReadLine)
                    sLine = lecture.ReadLine()
 
                    'je récupère la ligne
                    If InStr(sLine, "Publication de transaction") Then
                        ecriture.WriteLine(sLine)
                    End If
 
                    'je récupere cette ligne qui fait suite à l'intitulé
                    If InStr(sLine, "Créer") Or InStr(sLine, "Modifier") Then
                        ecriture.WriteLine(sLine)
                    End If
 
                End While
            End With
 
            lecture.Close()
            ecriture.Close()
 
            Dim lecture2 As StreamReader = New StreamReader("C:\temp\tata.txt", System.Text.Encoding.Default)
            Dim ecriture2 As StreamWriter = New StreamWriter("C:\temp\tata2.txt")
 
 
            With lecture2
                'POSITIONNER le flux au début du fichier 
                .BaseStream.Seek(0, SeekOrigin.Begin)
                'TANT QUE le lecteur a quelquechose à lire 
                While (.Peek > 0)
                    'LIRE une ligne du fichier et l'ajouter à meslignes
                    sLine = meslignes.Add(.ReadLine)
 
                    sLine = lecture2.ReadLine()
 
                    'ici je met en forme ce que j'ai récupéré comme ligne
 
                    If InStr(sLine, "(Publication de transaction) DSIT-EH") Or InStr(sLine, "(Publication de transaction) DSIT-E Urbanisme") Or InStr(sLine, "(Publication de transaction) DMII") Or InStr(sLine, "(Publication de transaction) DSIT-EX") Or InStr(sLine, "(Publication de transaction) DSIT-E Stage") Or InStr(sLine, "(Publication de transaction) DSIT-EEG") Or InStr(sLine, "(Publication de transaction) DSIT-EM") Or InStr(sLine, "(Publication de transaction) DSIT-EC") Or InStr(sLine, "(Publication de transaction) DDGE") Or InStr(sLine, "(Publication de transaction) DSIT-ET") Or InStr(sLine, "(Publication de transaction) DSIT-EFG") Then
                        ecriture2.WriteLine("DSIT")
                    End If
 
                    If InStr(sLine, "(Publication de transaction) RHG-SI") Then
                        ecriture2.WriteLine("RHG-SI")
                    End If
 
                    If InStr(sLine, "Créer") Or InStr(sLine, "Modifier") Then
                        ecriture2.WriteLine(sLine)
                    End If
 
 
 
                End While
            End With
 
        lecture2.Close()
        ecriture2.Close()
 
 
        End If
 
    End Sub
End Class