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 :

Sauvegarde d'une datagridview


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de vtk37
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 116
    Points
    116
    Par défaut Sauvegarde d'une datagridview
    Salut à tous,

    je voudrait sauvegarder le contenu d'une datagridview j'ai donc trouvé un code en cherchant sur le net mais j'ai un soucis mais je ne comprend pas trop pourquoi étant novice en VB

    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
     Private Sub Save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Save.Click
            Dim xlApp As Excel.Application
            Dim xlBook As Excel.Workbook
            Dim xlSheet As Excel.Worksheet
            Dim x, y As Integer
     
            SaveFileDialog1.Filter = "Fichier Excel (.xls)|*.xls|Tous les fichiers|*.*"
            SaveFileDialog1.DefaultExt = "xls"
     
            xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
            xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
            xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)
     
            Dim nbrLigne As Integer = DataGridView1.Rows.Count - 1
            Dim nbrColon As Integer = DataGridView1.ColumnCount - 1
     
            For x = 0 To nbrColon
                ' ici on prends le titre des colonnes
                xlSheet.Cells(1, x + 1) = DataGridView1.Columns(x).Name
                ' on mets la première ligne en gras
                xlSheet.Rows(1).Font.Bold = True
     
                ' pour chaque colonne et chaque ligne on transfert les données      
                For y = 0 To nbrLigne
                    xlSheet.Cells(y + 2, x + 1) = DataGridView1.Item(y, x)
                Next
            Next
     
     
     
            SaveFileDialog1.ShowDialog()
            xlSheet.SaveAs(SaveFileDialog1.FileName)
            ' on quitte l'application et on détruit les objets
            xlApp.Quit()
            xlSheet = Nothing
            xlBook = Nothing
            xlApp = Nothing
     
     
     
     
        End Sub
    si dans le datagrid il y a que les titres et aucune données sa fonctionne bien mais des qu'il y a des lignes le programme s'arrete au niveau du premier Next et me dit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Une exception non gérée du type 'System.Runtime.InteropServices.COMException' s'est produite dans mscorlib.dll
     
    Informations supplémentaires*: Exception de HRESULT : 0x800A03E
    Si vous voyez pourquoi faite moi signe

  2. #2
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    Je crois que le problème n'est pas au niveau du DatagridView sa doit être au niveau du transfert dans le fichier Excel
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  3. #3
    Membre régulier Avatar de vtk37
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 116
    Points
    116
    Par défaut
    c'est à dire? est-ce que sa vient de mon programme ou de la configuration de excel?

    et pourquoi quand il n'y a que les titre dans la datagrid sa arrive bien à transférer ?

  4. #4
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    Je crois que sa vient de ton programme et je pourrais dire que c'est cette section
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For y = 0 To nbrLigne
                    xlSheet.Cells(y + 2, x + 1) = DataGridView1.Item(y, x)
                Next
    Essaye de faire une exécution pas a pas pour voir ou tu met ce bloc dans un try et récupérer le message d'erreur tu poste
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  5. #5
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    En plus tu a inversé l'ordre dans ton datagridview
    fait plutot ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                For y = 0 To nbrLigne
                    xlSheet.Cells(y + 2, x + 1) = DataGridView1.Item(x, y)
                Next
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  6. #6
    Membre régulier Avatar de vtk37
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 116
    Points
    116
    Par défaut
    meme en inversant l'ordre sa plante toujours

    sinon en faisant pas à pas sa m'ouvre "code machine" et le plantage se situe à la ligne c'est à dire entre le "xlSheet.Cells(y + 2, x + 1) = DataGridView1.Item(x, y)
    "

    et le "Next" ...

  7. #7
    Membre régulier Avatar de vtk37
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 116
    Points
    116
    Par défaut
    Lorsque je met cette ligne en commentaire j'ai plus de plantage mais bon j'aimerai bien savoir pourquoi elle pose probléme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(y + 2, x + 1) = DataGridView1.Item(x, y)

  8. #8
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    sinon en faisant pas à pas sa m'ouvre "code machine" et le plantage se situe à la ligne
    Code :

    000002ed mov esi,eax

    Met cette section dans un bloc Try Catch tu récupère le message d'erreur et tu poste
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  9. #9
    Membre régulier Avatar de vtk37
    Inscrit en
    Avril 2009
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : Avril 2009
    Messages : 159
    Points : 116
    Points
    116
    Par défaut
    je sais pas ce qu'est un bloc try Catch

    mais j'ai resolu mon probléme
    j'ai remplacé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(y + 2, x + 1) = DataGridView1.Item(x, y)
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(y + 2, x + 1) = DataGridView1.Rows(y).Cells(x).Value
    et sa fonctionne

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

Discussions similaires

  1. problème de sauvegarde d'une 2ème datagridview
    Par norddist dans le forum VB.NET
    Réponses: 5
    Dernier message: 03/09/2010, 16h04
  2. Réponses: 3
    Dernier message: 09/09/2004, 11h31
  3. [C#]Sauvegarde d'une selection multiple d'une listbox?
    Par onouiri dans le forum ASP.NET
    Réponses: 7
    Dernier message: 29/04/2004, 17h16
  4. Sauvegarde d'une image sous un autre format
    Par gandf dans le forum C++Builder
    Réponses: 4
    Dernier message: 24/02/2004, 09h50
  5. sauvegarde d'une base ailleurs qu'en local
    Par jbat dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 13/01/2004, 11h25

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