IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[VB 2005] Problème Excel dans VB


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Par défaut [VB 2005] Problème Excel dans VB
    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

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2006
    Messages : 127
    Par défaut
    Desolé j'ai trouvé mon erreur mais cela va quand même me servir pour demander si vous savez comment intercepter les erreurs d'exécution InnerException ?

    PS: l'Erreur était une division par zéro !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [SQL SERVER 2005]problème requête dans un trigger
    Par Kropernic dans le forum Développement
    Réponses: 14
    Dernier message: 02/03/2010, 18h20
  2. Problème Import de données Excel dans Access
    Par francoisd dans le forum Access
    Réponses: 1
    Dernier message: 08/09/2006, 17h46
  3. problème d'importation excel dans access
    Par Badboy62cfp dans le forum Access
    Réponses: 6
    Dernier message: 09/05/2006, 16h17
  4. problème pour importer données excel dans Access
    Par sarah67 dans le forum Access
    Réponses: 8
    Dernier message: 20/02/2006, 08h17
  5. Réponses: 7
    Dernier message: 23/11/2005, 18h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo