Bonjour à tous.
J'ai un bout de mon code qui m'affiche un défaut lors de son exécution.

Voici le code en question :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub Demarrage_Load(sender As Object, e As EventArgs) Handles MyBase.Load 'S'exécute lors du chargement de la fenêtre Demmarrage.'
        LitClasses(Nom_Fichier_Data) 'Exécute la procédure LitClasses.'
        LitParametres(Nom_Fichier_Param) 'Exécute la procédure LitParamètres.'
End Sub 'Fin de procédure.'
Code de démarrage de mon application.

La procédure LitClasses est la suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Sub LitClasses(ByVal FileNamedecrypt As String)
 
        If File.Exists(FileNamedecrypt) Then
            Données = LitDataXMLData(FileNamedecrypt) 'Exécute la fonction LitDataXMLData.'
        Else
            Données = New Data
            EcritDataXMLData(FileNamedecrypt, Données) 'Exécute la procédure EcritDataXMLData avec les paramètres FileNamedecrypt et Données.'
        End If
 
End Sub
Cette partie là fonctionne.

La fonction LitDataXMLData est la suivante :

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
Function LitDataXMLData(ByVal filename As String) As Data
 
        Try
            Using objStreamReader As New IO.StreamReader(filename)
                Try
                    Return DirectCast((New XmlSerializer(GetType(Data))).Deserialize(objStreamReader), Data)
                Catch ex As Exception
                    Erreur = True
                    MessageBox.Show("Echec de la lecture." & ex.Message)
                End Try
            End Using
        Catch ex As Exception
            Erreur = True
            MessageBox.Show("Fichier inaccessible." & ex.Message)
        End Try
        Return Nothing
 
End Function
Là aussi pas de problème.

La procédure EcritDataXMLData :

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
Sub EcritDataXMLData(ByVal filename As String, lesClasses As Data)
 
        Try
            Using objStreamWriter As StreamWriter = New StreamWriter(filename)
                Try
                    Dim xsClasses As New XmlSerializer(GetType(Data), New XmlRootAttribute("Data"))
                    xsClasses.Serialize(objStreamWriter, lesClasses)
                Catch ex As Exception
                    Erreur = True
                    MessageBox.Show("Echec de l'écriture." & ex.Message)
                End Try
            End Using
        Catch ex As Exception
            Erreur = True
            MessageBox.Show("Fichier inaccessible." & ex.Message)
        End Try
 
End Sub
Toute cette partie fonctionne.

Maintenant, la procédure LitParamètres (celle qui me plante le programme) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
Sub LitParametres(ByVal FileNamedecrypt As String)
 
        If File.Exists(FileNamedecrypt) Then 'If File.Exists(FileNamecrypt) Then
            Paramètres = LitDataXMLPropriétés(FileNamedecrypt)
        Else
            Paramètres = New Propriétés 'Créé un nouvel objet Propriétés de nom "Paramètres".'
            EcritDataXMLPropriétés(FileNamedecrypt, Paramètres) 
        End If
 
End Sub
Il faut savoir que :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Public Paramètres As Propriétés
et que :

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
<XmlRoot("Propriétés")>
Public Class Propriétés
    <XmlElement("Couleur")>
    Public Property Valeurs_RVB As New Couleurs
    <XmlAttribute("Activer_Modification_MDP")>
    Public Property Act_MDP As New Activ_MDP
    <XmlElement("Classe")>
    Public Property Classe As New List(Of Classes)
End Class
 
 
Public Class Couleurs
    <XmlAttribute("Rouge")>
    Public Property Rouge As Integer = 255
    <XmlAttribute("Vert")>
    Public Property Vert As Integer = 255
    <XmlAttribute("Bleu")>
    Public Property Bleu As Integer = 128
End Class
 
Public Class Activ_MDP
    <XmlAttribute("Valeur")>
    Public Property Autor_MDP As Boolean = False
End Class
 
Public Class Classes
    <XmlAttribute("Nom_Classe")>
    Public Property Nom_Classe As String = ""
    <XmlElement("Exercice")>
    Public Property Exercice As New List(Of Exercices)
End Class
 
Public Class Exercices
    <XmlAttribute("Titre")>
    Public Property Titre As String = ""
    <XmlAttribute("Catégorie")>
    Public Property Catégorie As String = ""
    <XmlAttribute("Règles")>
    Public Property Règles As String = ""
    <XmlElement("Ligne_Exercice")>
    Public Property Ligne_Exercice As New List(Of Lignes_Exos)
End Class
 
Public Class Lignes_Exos
    <XmlAttribute("Type_Réponse")>
    Public Property Type_Réponse As String = ""
    <XmlAttribute("Phrase_1")>
    Public Property Phrase_1 As String = ""
    <XmlAttribute("Réponse")>
    Public Property Réponse As String = ""
    <XmlElement("Choix_Mots")>
    Public Property Choix_Mots As New List(Of Choix_de_mots)
    <XmlAttribute("Phrase_2")>
    Public Property Phrase_2 As String = ""
End Class
 
Public Class Choix_de_mots
    <XmlAttribute("Mot")>
    Public Property Mots As String = ""
End Class
Pour ce qui est de la fonction LitDataXMLPropriétés et de la procédure EcritDataXMLPropriétés :

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
Function LitDataXMLPropriétés(ByVal filename As String) As Propriétés 'Créé la fonction lecture du fichier xml'
 
        Try 'Essaye le code suivant :'
            Using objStreamReader As New StreamReader(filename) 'Utilise le flux de données du fichier "filename"'
                Try 'Essaye le code suivant : '
                    Return DirectCast((New XmlSerializer(GetType(Propriétés))).Deserialize(objStreamReader), Propriétés) 'Sérialise le fichier xml'
                Catch ex As Exception 'Si l'essais échoue'
                    Erreur = True 'Met le booléen en valeur "vrai"' 
                    MessageBox.Show("Echec de la lecture." & ex.Message) 'Affiche un message d'erreur'
                End Try 'Fin de l'essais du code'
            End Using 'Coupe toutes ressources utilisées pour créer le flux.'
        Catch ex As Exception 'Si le fichier n'existe pas'
            Erreur = True 'Met le booléen en valeur "vrai"'
            MessageBox.Show("Fichier inaccessible." & ex.Message) 'Affiche un message contenant l'erreur.'
        End Try 'Fin de l'essais du code'
        Return Nothing
 
End Function
 
Sub EcritDataXMLPropriétés(ByVal filename As String, paramètres As Propriétés)
 
        Try
            Using objStreamWriter As StreamWriter = New StreamWriter(filename)
                Try
                    Dim xsPropriety As New XmlSerializer(GetType(Propriétés), New XmlRootAttribute("Propriétés"))
                    xsPropriety.Serialize(objStreamWriter, paramètres)
                Catch ex As Exception
                    Erreur = True
                    MessageBox.Show("Echec de l'écriture." & ex.Message)
                End Try
            End Using
        Catch ex As Exception
            Erreur = True
            MessageBox.Show("Fichier inaccessible." & ex.Message)
        End Try
 
End Sub
C'est donc lors de la lecture ou l'écriture de mon fichier de propriétés, que le logiciel plante et me dit qu'il ne peut lire, ni même écrire (ou créer) mon fichier...

J'ai beau tourner mon code dans tous les sens je ne trouve pas....

Désolé pour toute cette lecture et merci de votre aide par avance.