Bonjour,

Débutant total en VB (j'ai écrit mes première ligne Mardi), j'essaye de faire un formulaire avec divers renseignements (nom, prénom, tel, mail, etc...). J'insère ces données dans un tableau de structure.

J'aimerai pouvoir écrire ces données dans un fichier et les lire à partir de ce fichier.

Pour l'instant, j'arrive à écrire mes données dans un fichier lors d'un form_closing, mais après plus d'une demi journée de recherche, je n'arrive pas a savoir comment faire pour lire ces donnés (sachant que j'ai séparé chaque donnée par un ";" et chaque structure par un retour à la ligne) pour les réinsérer dans le tableau de structure lors d'un form_load.

Voici déjà ce que j'ai écrit :

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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
Imports System.IO
Imports System.Text.RegularExpressions
 
Public Class Form1
 
    Const PATHFICHIER As String = "save.txt"
    Dim compteur_insertion As Integer = 0
 
    Structure Personne
        Dim Matricule As String
        Dim Identifiant As String
        Dim Nom As String
        Dim Prenom As String
        Dim Telephone As String
        Dim Mail As String
    End Structure
 
    Dim StructPersonne(1000) As Personne
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        While File.ReadAllLines(PATHFICHIER) = vbCrLf
            MsgBox("Coucou", 4097, "coucou")
        End While
    End Sub
 
    Private Sub BT_ECRIRE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_ECRIRE.Click
        Me.LBL_ERR.Visible = False
        Me.LBL_ERR_MATRICULE.Visible = False
        Me.LBL_ERR_NOM.Visible = False
        Me.LBL_ERR_PRENOM.Visible = False
        Me.LBL_ERR_MAIL.Visible = False
        If Verification() And Verif_Matricule() And Verif_Nom() And Verif_Prenom() And Verif_Mail() Then
            StructPersonne(compteur_insertion).Matricule = TXT_MATRICULE.Text
            StructPersonne(compteur_insertion).Identifiant = TXT_IDENTIFIANT.Text
            StructPersonne(compteur_insertion).Nom = TXT_NOM.Text
            StructPersonne(compteur_insertion).Prenom = TXT_PRENOM.Text
            StructPersonne(compteur_insertion).Telephone = TXT_TEL.Text
            StructPersonne(compteur_insertion).Mail = TXT_MAIL.Text
            'On vide les textbox
            Me.TXT_MATRICULE.Text = ""
            Me.TXT_IDENTIFIANT.Text = ""
            Me.TXT_NOM.Text = ""
            Me.TXT_PRENOM.Text = ""
            Me.TXT_TEL.Text = ""
            Me.TXT_MAIL.Text = ""
            compteur_insertion += 1
        Else
            If Not Verification() Then
                Me.LBL_ERR.Visible = True
            End If
            If Not Verif_Matricule() Then
                Me.LBL_ERR_MATRICULE.Visible = True
            End If
            If Not Verif_Nom() Then
                Me.LBL_ERR_NOM.Visible = True
            End If
            If Not Verif_Prenom() Then
                Me.LBL_ERR_PRENOM.Visible = True
            End If
            If Not Verif_Mail() Then
                Me.LBL_ERR_MAIL.Visible = True
            End If
        End If
    End Sub
 
    ''' <summary>
    ''' Fonction qui vérifie que tout les champs sont bien rempli
    ''' </summary>
    ''' <returns>return un boolean true si tout les champs sont rempli et False si au moins un champs est vide</returns>
    ''' <remarks></remarks>
    Function Verification() As Boolean
        Dim Bon As Boolean = True
        If Me.TXT_MATRICULE.Text = "" Then
            Bon = False
        End If
        If Me.TXT_IDENTIFIANT.Text = "" Then
            Bon = False
        End If
        If Me.TXT_NOM.Text = "" Then
            Bon = False
        End If
        If Me.TXT_PRENOM.Text = "" Then
            Bon = False
        End If
        If Me.TXT_TEL.Text = "" Then
            Bon = False
        End If
        If Me.TXT_MAIL.Text = "" Then
            Bon = False
        End If
        Return Bon
    End Function
 
    ''' <summary>
    ''' Fonction qui vérifie le format du numéro de téléphone
    ''' </summary>
    ''' <returns>Return False si numéro pas conforme au format choisi</returns>
    ''' <remarks></remarks>
    Function Verif_Matricule() As Boolean
        Dim pattern As String = "^\d{4}$"
        Dim Bon As Boolean = True
        If Regex.IsMatch(TXT_MATRICULE.Text, pattern) Then
            Bon = True
        Else
            Bon = False
        End If
        Return Bon
    End Function
 
    ''' <summary>
    ''' Fonction qui vérifie le format du Nom
    ''' </summary>
    ''' <returns>Return False si le nom n'est pas composé de lettre uniquement (maj ou min)</returns>
    ''' <remarks></remarks>
    Function Verif_Nom() As Boolean
        Dim pattern As String = "^[a-zA-Z ]{2,}$"
        Dim Bon As Boolean = True
        If Regex.IsMatch(TXT_NOM.Text, pattern) Then
            Bon = True
        Else
            Bon = False
        End If
        Return Bon
    End Function
 
    ''' <summary>
    ''' Fonction qui vérifie le format du Prenom
    ''' </summary>
    ''' <returns>Return False si le Prenom n'est pas composé de lettre uniquement (maj ou min)</returns>
    ''' <remarks></remarks>
    Function Verif_Prenom() As Boolean
        Dim pattern As String = "^[a-zA-Z]{2,}$"
        Dim Bon As Boolean = True
        If Regex.IsMatch(TXT_PRENOM.Text, pattern) Then
            Bon = True
        Else
            Bon = False
        End If
        Return Bon
    End Function
 
    ''' <summary>
    ''' Fonction qui vérifie le format de l'adresse mail
    ''' </summary>
    ''' <returns>Return False si l'adresse mail n'est pas correcte</returns>
    ''' <remarks></remarks>
    Function Verif_Mail() As Boolean
        Dim pattern As String = "^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$"
        Dim Bon As Boolean = True
        If Regex.IsMatch(TXT_MAIL.Text, pattern) Then
            Bon = True
        Else
            Bon = False
        End If
        Return Bon
    End Function
 
    Private Sub Form1_closing(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Closing
        'On écrit
        Dim compteur_ecriture As Integer
        For compteur_ecriture = 0 To compteur_insertion - 1
            File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Matricule)
            File.AppendAllText(PATHFICHIER, ";")
            File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Identifiant)
            File.AppendAllText(PATHFICHIER, ";")
            File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Nom)
            File.AppendAllText(PATHFICHIER, ";")
            File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Prenom)
            File.AppendAllText(PATHFICHIER, ";")
            File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Telephone)
            File.AppendAllText(PATHFICHIER, ";")
            File.AppendAllText(PATHFICHIER, Me.StructPersonne(compteur_ecriture).Mail)
            File.AppendAllText(PATHFICHIER, ";")
            File.AppendAllText(PATHFICHIER, vbCrLf)
        Next
    End Sub
End Class