Private Structure field Dim name As String Dim value As String End Structure Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim memo As String = String.Format( _ "[FACTURATION]{0}" & _ "Prénom = Paul{0}" & _ "Nom = Bedout{0}" & _ "Société ={0}" & _ "{0}" & _ "Adresse = 120 rue de l'Orient{0}" & _ "{0}" & _ "Adresse2 ={0}" & _ "{0}" & _ "Ville = Paris{0}" & _ "{0}" & _ "Code postal = 55555{0}" & _ "{0}" & _ "Etat ={0}" & _ "{0}" & _ "Pays = FR=France{0}" & _ "{0}" & _ "Téléphone = 88888888{0}" & _ "{0}" & _ "Fax ={0}" & _ "{0}" & _ "Email = trucmusch@cegetel.net", Environment.NewLine) Dim lines() As String = memo.Split(Environment.NewLine.ToCharArray) Dim fields As New List(Of field) Dim f As field ''METHODE 1 => on prend TOUS LES CHAMPS !!! (même les vides) 'For Each s As String In lines ' If s.Contains("=") Then ' f = New field ' f.name = s.Substring(0, s.IndexOf("="c) - 1) ' If s.Length > (s.IndexOf("="c) + 1) Then ' f.value = s.Substring(s.IndexOf("="c) + 2) ' Else ' f.value = "NULL" ' End If ' fields.Add(f) ' f = Nothing ' End If 'Next 'METHODE 2 => on ne prend QUE les champs non NULL For Each s As String In lines If s.Contains("=") Then f = New field f.name = s.Substring(0, s.IndexOf("="c) - 1) If s.Length > (s.IndexOf("="c) + 1) Then f.value = s.Substring(s.IndexOf("="c) + 2) fields.Add(f) End If f = Nothing End If Next 'VERIFICATION Dim mess = String.Empty For Each f In fields mess &= "[" & f.name & "] " & f.value & Environment.NewLine Next MessageBox.Show(mess) End Sub