Bonjour à tous et merci de vous intéresser à mon sujet !

Je programme en VB.net sous Visual Basic 2010 Express. J'apprend grâce à un tutoriel sur internet, et j'en suis à un T.P où on doit créer une bibliothèque.

Bon, voilà mon problème code :

La classe principale :

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
Imports System.IO
Imports System.Xml.Serialization
Public Class Main
 
    Const NomFichier As String = "Films.xml"
 
    Public ListeFilms As List(Of Film)
    Dim Fichier As FileStream
 
    Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.LBL_SYNOPSIS.ScrollBars = ScrollBars.Vertical
        Me.LBL_AVIS_PERSONNEL.ScrollBars = ScrollBars.Vertical
 
        DeserialiserEtAfficher()
    End Sub
 
    Private Sub Main_FormClosing(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.FormClosing
        Serialiser()
    End Sub
 
    Sub DeserialiserEtAfficher()
        If File.Exists(NomFichier) Then 'si le fichier existe...
            Fichier = File.Open(NomFichier, FileMode.Open) ' on l'ouvre
            If Fichier.Length > 0 Then 'Si le fichier n'est pas vide...
                Dim Deserialiseur As New XmlSerializer(GetType(List(Of Film)))
                ListeFilms = Deserialiseur.Deserialize(Fichier) 'on désérialise
                ActualiserNomsFilms() 'et on actualise la ListBox
            Else 'Si le fichier est vide
                MsgBox("Le fichier '" & NomFichier & "' n'a pas été trouvé. Il va donc être créé.", 32, "Fichier introuvable") 'erreur fichier pas trouvé
                Fichier.Close()
                Fichier = File.Create(NomFichier) 'on crée le fichier
            End If
        ElseIf Not File.Exists(NomFichier) Then 'Si le fichier n'existe pas
            MsgBox("Le fichier '" & NomFichier & "' n'a pas été trouvé. Il va donc être créé.", 32, "Fichier introuvable") 'erreur fichier pas trouvé
            Fichier = File.Create(NomFichier) 'on crée le fichier
        End If
    End Sub
 
    Sub ActualiserNomsFilms()
        For i As Integer = 0 To ListeFilms.Count - 1 'i va êtreaugmenté de 1 à chaque tour
            Me.LB_LISTE_FILMS.Items.Add(ListeFilms.ElementAt(i).Titre) 'on ajoute à chaque tour l'élément qui a pour index i
        Next
    End Sub
 
    Sub Serialiser()
        If Not IsNothing(ListeFilms) Then 'Si il y a des films à enregistrer 'ListeFilms.Count <> 0 Then
            Fichier = File.Create(NomFichier) 'On remplace le fichier précedent par un nouveau, vide
            Dim Serialiseur As New XmlSerializer(GetType(List(Of Film)))
            Serialiseur.Serialize(Fichier, ListeFilms) 'On serialise
        Else 'Si il n'y a pas de films à enregistrer
            Fichier.Close()
            File.Delete(NomFichier) 'On supprime simplement le fichier
        End If
    End Sub
 
    Private Sub BT_RECHERCHE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_RECHERCHE.Click
        Dim Trouve As Boolean = False
        Me.LB_LISTE_FILMS.Items.Clear()
 
        If Not IsNothing(ListeFilms) Then
            For Each FilmActuel As Film In ListeFilms
                If Me.TXT_TITRE.Text <> "" Then
                    If FilmActuel.Titre.Contains(Me.TXT_TITRE.Text) Then
                        Me.LB_LISTE_FILMS.Items.Add(FilmActuel)
                        Trouve = True
                    End If
                End If
 
                If Me.TXT_ACTEURS.Text <> "" Then
                    If FilmActuel.Acteurs.Contains(Me.TXT_TITRE.Text) Then
                        Me.LB_LISTE_FILMS.Items.Add(FilmActuel)
                        Trouve = True
                    End If
                End If
 
                If Me.TXT_REALISATEUR.Text <> "" Then
                    If FilmActuel.Realisateur.Contains(Me.TXT_TITRE.Text) Then
                        Me.LB_LISTE_FILMS.Items.Add(FilmActuel)
                    End If
                End If
 
                If Me.TXT_GENRE.Text <> "" Then
                    If FilmActuel.Genre1.Contains(Me.TXT_TITRE.Text) Or FilmActuel.Genre2.Contains(Me.TXT_TITRE.Text) Then
                        Me.LB_LISTE_FILMS.Items.Add(FilmActuel)
                    End If
                End If
 
                If Me.TXT_ANNEE.Text <> "" Then
                    If FilmActuel.Annee.Contains(Me.TXT_TITRE.Text) Then
                        Me.LB_LISTE_FILMS.Items.Add(FilmActuel)
                    End If
                End If
            Next
        End If
 
        If IsNothing(Me.LB_LISTE_FILMS.Items) Then
            MsgBox("Rien trouvé !", 32, "Rien trouvé !")
        End If
    End Sub
 
    Private Sub BT_EFFACER_RECHERCHE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_EFFACER_RECHERCHE.Click
        Me.TXT_TITRE.Text = ""
        Me.TXT_REALISATEUR.Text = ""
        Me.TXT_GENRE.Text = ""
        Me.TXT_ANNEE.Text = ""
        Me.TXT_ACTEURS.Text = ""
    End Sub
 
    Private Sub BT_NOUVELLE_FICHE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_NOUVELLE_FICHE.Click
        EditionFilms.Show()
 
    End Sub
End Class
La classe Film :
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
<Serializable()>
Public Class Film
    Private _Titre As String
    Private _Annee As Date
    Private _Realisateur As String
    Private _Genre1 As String
    Private _Genre2 As String
    Private _Acteurs As String
    Private _Synopsis
    Private _RemarquePerso
    Private _NotePerso
 
    Public Sub New()
 
    End Sub
 
    Public Sub New(ByVal Titre As String, ByVal Annee As Date, ByVal Realisateur As String, ByVal Genre1 As String, ByVal Genre2 As String, ByVal Acteurs As String, ByVal Synopsis As String, ByVal RemarquePerso As String, ByVal NotePerso As Integer)
        _Titre = Titre
        _Annee = Annee
        _Realisateur = Realisateur
        _Genre1 = Genre1
        _Genre2 = Genre2
        _Acteurs = Acteurs
        _Synopsis = Synopsis
        _RemarquePerso = RemarquePerso
        _NotePerso = NotePerso
    End Sub
 
 
    Public Sub Update(ByVal Titre As String, ByVal Annee As Date, ByVal Realisateur As String, ByVal Genre1 As String, ByVal Genre2 As String, ByVal Acteurs As String, ByVal Synopsis As String, ByVal RemarquePerso As String, ByVal NotePerso As Integer)
        _Titre = Titre
        _Annee = Annee
        _Realisateur = Realisateur
        _Genre1 = Genre1
        _Genre2 = Genre2
        _Acteurs = Acteurs
        _Synopsis = Synopsis
        _RemarquePerso = RemarquePerso
        _NotePerso = NotePerso
    End Sub
 
    Public Property Titre
        Get
            Return _Titre
        End Get
        Set(ByVal value)
            _Titre = value
        End Set
    End Property
 
    Public Property Annee
        Get
            Return _Annee
        End Get
        Set(ByVal value)
            _Annee = value
        End Set
    End Property
 
    Public Property Realisateur
        Get
            Return _Realisateur
        End Get
        Set(ByVal value)
            _Realisateur = value
        End Set
    End Property
 
    Public Property Genre1
        Get
            Return _Genre1
        End Get
        Set(ByVal value)
            _Genre1 = value
        End Set
    End Property
 
    Public Property Genre2
        Get
            Return _Genre2
        End Get
        Set(ByVal value)
            _Genre2 = value
        End Set
    End Property
 
    Public Property Acteurs
        Get
            Return _Acteurs
        End Get
        Set(ByVal value)
            _Acteurs = value
        End Set
    End Property
End Class
La classe où ça pose problème (création d'une nouvelle fiche)

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
Public Class EditionFilms
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Me.TXT_SYNOPSIS.ScrollBars = True
        'Me.TXT_AVIS_PERSONNEL.ScrollBars = True
        Me.TXT_TITRE.Text = "[Titre]"
    End Sub
 
    Private Sub BT_SAVE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BT_SAVE.Click
        If Me.TXT_TITRE.Text = "" Then
            MsgBox("Le champ 'Titre' est incorrect.", 32, "Champ incorrect")
        Else
            Dim MonFilm As New Film(Me.TXT_TITRE.Text, Me.DT_DATE_SORTIE.Value, Me.TXT_REALISATEUR.Text, Me.TXT_GENRE1.Text, Me.TXT_GENRE2.Text, Me.TXT_ACTEURS.Text, Me.TXT_SYNOPSIS.Text, Me.TXT_AVIS_PERSONNEL.Text, Me.NUM_NOTE.Value)
            Main.ListeFilms.Add(MonFilm)
            Me.Close()
        End If
    End Sub
End Class
L'erreur est la suivante :

"La référence d'objet n'est pas définie à une instance d'un objet."

Elle survient à la ligne 14 de la dernière classe, la classe EditionFilms

Oui, je sais tout plein de sujets, forums, etc... ont étés créés à ce sujet-là, mais je n'ai jamais rien trouvé qui ressemble à mon erreur

Par la même occasion, c'est la première fois que je publie du code VB.net sur les forums, donc si vous avez quoi que ce soit à me dire à propos dudit code, n'hésitez pas !

Merci bien !

Syrl

EDIT : j'en profite pour demander ce que signifie un terme que je n'ai pas bien compris : instancier, et une instance (c'est aussi pour ça que je n'ai pas compris l'erreur)