Voilà j'ai fait une application de statistiques qui écrit des données dans un fichier Excel. Jusque là tout fonctionnait sauf que j'ai formaté mon PC et que maintenant il me trouve pleins d'erreurs.

Notamment il me trouver beaucoup de InnerException non gerée dans mon code alors qu'avant tout fonctionnait bien.

Donc je voulais savoir si vous aviez pas une solution, merci d'avance !

Voici le code :
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
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
 
Sub InscrireStatistiquesConcours()
        'Déclaration des variables
        Dim appExcel As Excel.Application 'Application Excel
        Dim FichierExcel As Excel.Workbook 'Classeur Excel
        Dim FeuilleExcel As Excel.Worksheet 'Feuille Excel
        Dim NbrEleves As Integer 'Nombre d'Elèves dans la Table
 
        'Ouverture de l'application
        appExcel = CreateObject("Excel.Application")
        'Ouverture d'un fichier Excel
        FichierExcel = appExcel.Workbooks.Open(Application.StartupPath & "\StatsEleve.xls")
        'FeuilleExcel correspond à la feuille selectionnée
        FeuilleExcel = FichierExcel.Worksheets(1) 'Worksheets permet de déterminer la feuille
 
        Dim NbEleves As New OleDbCommand("SELECT count(*) FROM eleve", OConnexion)
        Try
            OConnexion.Open()
            NbrEleves = NbEleves.ExecuteScalar
        Catch ex As Exception
 
        Finally
            OConnexion.Close()
        End Try
 
        'Affichage de l'Initialisation de la Progression
        BeginInvoke(New AfficherFenetreHandler(AddressOf AfficherFenetre))
        BeginInvoke(New InscrireDonneesHandler(AddressOf InscrireDonnees), 0, "Initialisation...", NbrEleves)
        Threading.Thread.Sleep(1000)
 
        Dim Eleves As New OleDbCommand("SELECT * FROM eleve", OConnexion)
        Dim dt As OleDbDataReader
        Try
            OConnexion.Open()
            dt = Eleves.ExecuteReader
            'Initialisation de l'écriture dans la feuille Excel (indication de la cellule de départ)
            Dim i As Integer = 4
            Dim valeur As Integer = 0
 
            While dt.Read
                'Affichage de la Progression
                valeur = valeur + 1
                BeginInvoke(New InscrireDonneesHandler(AddressOf InscrireDonnees), valeur, "Elève : " & dt.Item("nom") & Chr(32) & dt.Item("prenom"), NbrEleves)
                Threading.Thread.Sleep(1000)
 
                FeuilleExcel.Cells.Item(i, 1) = dt.Item("nom") & Chr(32) & dt.Item("prenom")
                'Vérification d'une intégration
                Dim Intégration As New OleDbCommand("SELECT count(*) FROM integrer WHERE numero_eleve=" & dt.Item(0), ConnexionSecours)
                ConnexionSecours.Open()
                If Intégration.ExecuteScalar <> 1 Then
                    'Détermination de l'Année en CPGE
                    Dim Annee() As String = Split(dt.Item(7))
                    Dim AnneeCPGE As Integer
                    AnneeCPGE = Date.UtcNow.Year - Convert.ToDouble(Annee(0))
                    Select Case AnneeCPGE
                        Case 0
                            FeuilleExcel.Cells.Item(i, 2) = "1/2" 'Inscription en CPGE
                        Case 1
                            FeuilleExcel.Cells.Item(i, 2) = "1/2" '1 An de CPGE
                        Case 2
                            FeuilleExcel.Cells.Item(i, 2) = "3/2" '2 Ans de CPGE
                        Case 3
                            FeuilleExcel.Cells.Item(i, 2) = "5/2" '3 Ans de CPGE
                    End Select
                Else
                    Intégration.CommandText = "SELECT annee FROM integrer WHERE numero_eleve=" & dt.Item(0)
                    Select Case Intégration.ExecuteScalar
                        Case 1
                            FeuilleExcel.Cells.Item(i, 2) = "1/2" '1 An de CPGE
                        Case 2
                            FeuilleExcel.Cells.Item(i, 2) = "3/2" '2 Ans de CPGE
                        Case 3
                            FeuilleExcel.Cells.Item(i, 2) = "5/2" '3 Ans de CPGE
                    End Select
                    Intégration.CommandText = "SELECT code_ecole FROM integrer WHERE numero_eleve=" & dt.Item(0)
                    FeuilleExcel.Cells.Item(i, 11) = Intégration.ExecuteScalar
                    'Vérification d'un Abandon
                    Dim Abandon As New OleDbCommand("SELECT count(*) FROM abandonner WHERE numero_eleve=" & dt.Item(0), ConnexionSecours)
                    If Abandon.ExecuteScalar <> 0 Then
                        FeuilleExcel.Cells.Item(i, 12) = "Oui"
                    Else
                        FeuilleExcel.Cells.Item(i, 12) = "Non"
                    End If
                End If
                ConnexionSecours.Close()
                'Détermination des Concours présentés
                Dim ConcoursPrésentés As New OleDbCommand("SELECT * FROM etre_presente_a WHERE numero_eleve=" & dt.Item(0), ConnexionData)
                Dim dtConcours As OleDbDataReader
 
                ConnexionData.Open()
                dtConcours = ConcoursPrésentés.ExecuteReader
                While dtConcours.Read
                    Dim SelectConcours As New OleDbCommand("SELECT CodeConcours FROM ecole WHERE Sigle='" & dtConcours.Item(1) & "'", ConnexionSecours)
                    ConnexionSecours.Open()
                    Select Case SelectConcours.ExecuteScalar
                        Case "Cent./Supélec"
                            FeuilleExcel.Cells.Item(i, 3) = "0"
                        Case "CCP"
                            FeuilleExcel.Cells.Item(i, 4) = "0"
                        Case "Mines/Ponts"
                            FeuilleExcel.Cells.Item(i, 5) = "0"
                        Case "e3a"
                            FeuilleExcel.Cells.Item(i, 6) = "0"
                        Case "Archimède"
                            FeuilleExcel.Cells.Item(i, 7) = "0"
                        Case "Sur Dossier"
                            FeuilleExcel.Cells.Item(i, 8) = "0"
                        Case "Sur Dossier UTC"
                            FeuilleExcel.Cells.Item(i, 9) = "0"
                        Case "Admission + Dossier"
                            FeuilleExcel.Cells.Item(i, 10) = "0"
                    End Select
                    ConnexionSecours.Close()
                End While
                dtConcours.Close()
                ConnexionData.Close()
                'Détermination des Concours présentés
                Dim ConcoursAdmissibles As New OleDbCommand("SELECT * FROM etre_admissible WHERE numero_eleve=" & dt.Item(0), ConnexionData)
 
                ConnexionData.Open()
                dtConcours = ConcoursAdmissibles.ExecuteReader
                While dtConcours.Read
                    Dim SelectConcours As New OleDbCommand("SELECT CodeConcours FROM ecole WHERE Sigle='" & dtConcours.Item(1) & "'", ConnexionSecours)
                    ConnexionSecours.Open()
                    Select Case SelectConcours.ExecuteScalar
                        Case "Cent./Supélec"
                            FeuilleExcel.Cells.Item(i, 3) = "1"
                        Case "CCP"
                            FeuilleExcel.Cells.Item(i, 4) = "1"
                        Case "Mines/Ponts"
                            FeuilleExcel.Cells.Item(i, 5) = "1"
                        Case "e3a"
                            FeuilleExcel.Cells.Item(i, 6) = "1"
                        Case "Archimède"
                            FeuilleExcel.Cells.Item(i, 7) = "1"
                        Case "Sur Dossier"
                            FeuilleExcel.Cells.Item(i, 8) = "1"
                        Case "Sur Dossier UTC"
                            FeuilleExcel.Cells.Item(i, 9) = "1"
                        Case "Admission + Dossier"
                            FeuilleExcel.Cells.Item(i, 10) = "1"
                    End Select
                    ConnexionSecours.Close()
                End While
                dtConcours.Close()
                ConnexionData.Close()
                'Détermination des Concours présentés
                Dim ConcoursAdmis As New OleDbCommand("SELECT * FROM etre_admis WHERE numero_eleve=" & dt.Item(0), ConnexionData)
 
                ConnexionData.Open()
                dtConcours = ConcoursAdmis.ExecuteReader
                While dtConcours.Read
                    Dim SelectConcours As New OleDbCommand("SELECT CodeConcours FROM ecole WHERE Sigle='" & dtConcours.Item(1) & "'", ConnexionSecours)
                    ConnexionSecours.Open()
                    Select Case SelectConcours.ExecuteScalar
                        Case "Cent./Supélec"
                            FeuilleExcel.Cells.Item(i, 3) = "2"
                        Case "CCP"
                            FeuilleExcel.Cells.Item(i, 4) = "2"
                        Case "Mines/Ponts"
                            FeuilleExcel.Cells.Item(i, 5) = "2"
                        Case "e3a"
                            FeuilleExcel.Cells.Item(i, 6) = "2"
                        Case "Archimède"
                            FeuilleExcel.Cells.Item(i, 7) = "2"
                        Case "Sur Dossier"
                            FeuilleExcel.Cells.Item(i, 8) = "2"
                        Case "Sur Dossier UTC"
                            FeuilleExcel.Cells.Item(i, 9) = "2"
                        Case "Admission + Dossier"
                            FeuilleExcel.Cells.Item(i, 10) = "2"
                    End Select
                    ConnexionSecours.Close()
                End While
                dtConcours.Close()
                ConnexionData.Close()
                'Détermination des Concours présentés
                Dim ConcoursIntegrer As New OleDbCommand("SELECT * FROM integrer WHERE numero_eleve=" & dt.Item(0), ConnexionData)
 
                ConnexionData.Open()
                dtConcours = ConcoursIntegrer.ExecuteReader
                While dtConcours.Read
                    Dim SelectConcours As New OleDbCommand("SELECT CodeConcours FROM ecole WHERE Sigle='" & dtConcours.Item(1) & "'", ConnexionSecours)
                    ConnexionSecours.Open()
                    Select Case SelectConcours.ExecuteScalar
                        Case "Cent./Supélec"
                            FeuilleExcel.Cells.Item(i, 3) = "3"
                        Case "CCP"
                            FeuilleExcel.Cells.Item(i, 4) = "3"
                        Case "Mines/Ponts"
                            FeuilleExcel.Cells.Item(i, 5) = "3"
                        Case "e3a"
                            FeuilleExcel.Cells.Item(i, 6) = "3"
                        Case "Archimède"
                            FeuilleExcel.Cells.Item(i, 7) = "3"
                        Case "Sur Dossier"
                            FeuilleExcel.Cells.Item(i, 8) = "3"
                        Case "Sur Dossier UTC"
                            FeuilleExcel.Cells.Item(i, 9) = "3"
                        Case "Admission + Dossier"
                            FeuilleExcel.Cells.Item(i, 10) = "3"
                    End Select
                    ConnexionSecours.Close()
                End While
                dtConcours.Close()
                ConnexionData.Close()
                i = i + 1
            End While
            dt.Close()
        Catch ex As Exception
            MessageBox.Show("La réalisation des Statistiques n'a pas pu s'effectuer" & Chr(13) & "Veuillez prévenir un administrateur", "Erreur Statistiques", MessageBoxButtons.OK, MessageBoxIcon.Information)
            MessageBox.Show(ex.ToString)
        Finally
            OConnexion.Close()
        End Try
 
        'Fermeture de la Progression
        BeginInvoke(New AfficherFenetreHandler(AddressOf FermerFenetre))
 
        FichierExcel.Close(True) 'Fermeture du classeur Excel
        appExcel.Application.Quit() 'Fermeture de l'application Excel
 
        'Information de la fin d'inscription des Statistiques
        MessageBox.Show("Les Statistiques des Elèves / Concours ont bien été effectuées", "Statistiques Effectuées", MessageBoxButtons.OK, MessageBoxIcon.Information)
 
        'Destruction du Processus
        Dim Processus() As Process = Process.GetProcesses()
        For x As Integer = 0 To UBound(Processus)
            If Processus(x).ProcessName.ToUpper() = "EXCEL" Then
                Processus(x).Kill()
            End If
        Next
    End Sub
C'est un peu long mais quand je résoud une erreur il m'en trouve d'autres après donc voilà.
(PS: j'en ai une au niveau du Threadind.Thread.Sleep(1000) qui quand je mets en commentaire me dévoile une autre erreur au niveau de While dt.Read)

Merci d'avance