none
Comment exporter une datagridview (en VB2008express) vers un fichier Excel existant? RRS feed

  • Question

  • Bonjours à tous,

    Je débute dans visual basic,

    j'ai longuement cherché sur le net, mais dificil de trouver un tuto qui permet de faire cela,

    car le plus souvent il n'y a que que des tuto qui permet d'exporter vers un nouveau fichier Excel et non le fichier Excel que l'on a déja crée.

    Donc je voudrais exporter vers le fichier C:\Users\compaq\Desktop\projet_inventaire1\bon_de_commande.xlsx

    j'utilise Excel 2007 sur windows 7

    j'ai fini par trouver peut etre un code mais il me retourne une erreur de syntaxe:

    Erreur 1 Type 'Microsoft.Office.Interop.Excel.Application' non défini sur les 2 lignes de code que j'ai souligné.

    En vous remerciant d'avance, ci-joint le code:

     

     

    '============================= code pour l'exportation ===================

     

    'Dim excel As Application.excel

     

    Private Sub Exporter_vers_excel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Exporter_vers_excel.Click

     

    Dim Table_inventairDatagridView As DataGridView

     

    Dim excel As Microsoft.Office.Interop.Excel.Application

     

    Try

    excel =

    New Microsoft.Office.Interop.Excel.Application

     

    'excel = New Excel.Application

    excel.Workbooks.Open(

    "C:\Users\compaq\Desktop\projet_inventaire1\bon_de_commande.xlsx")

     

    Dim i As Integer, j As Integer

     

    Dim diff As Integer = 1

     

    ' if you want column header from dgv elese omit the block

     

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

     

    'For j = 0 To Table_inventairDataGridView.ColumnCount - 1

     

    'excel.Worksheets(1).cells(1, j + 1) = Table_inventairDataGridView.Columns(j).Name

     

    'Next

     

    'diff += 1

     

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

     

    For i = 1 To Table_inventairDatagridView.RowCount - 1

     

    If Table_inventairDatagridView.Rows(i).IsNewRow = False Then

     

    For j = 0 To Table_inventairDatagridView.ColumnCount - 1

    excel.Worksheets(1).cells(i + 22, j + 8) = Table_inventairDatagridView.Item(j, i).Value

    'i+22, starts from 22nd rows, and j+8, starts from 8th column

     

    Next

     

    End If

     

    Next

    excel.Worksheets(1).select()

    excel.ActiveWorkbook().Save()

    excel.Workbooks.Close()

    excel.Quit()

    excel =

    Nothing

     

    Catch ex As System.Runtime.InteropServices.COMException

    MessageBox.Show(

    "Error accessing Excel: " + ex.ToString())

     

    Catch ex As Exception

    MessageBox.Show(

    "Error: " + ex.ToString())

     

    End Try

     

     

     

    End Sub

    jeudi 2 septembre 2010 13:05

Réponses

  • Il semble que vous avez associé une méthode dont la signature n'est pas correcte pour gérer l'évenement click de votre bouton.

    La signature devrait être du type : 'Private Sub Exporter_vers_excel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Exporter_vers_excel.Click

    Dans les propriétés du bouton en mode design vous pouvez également vérifiez que l'évènement Click ( via l'onglet avec l'éclair ) est bien asssocié cette méthode.

    Si besoin ajouter un nouveau bouton dans votre form et double cliquer dessus pour voir le code qui est généré par défaut pas visual studio.

    Cordialement

    jeudi 2 septembre 2010 15:10
    Modérateur

Toutes les réponses

  • Bonjour,

    vous devez ajouter une référence vers la libraire Microsoft Excel x.0 Object Library dans votre projet (ajout reference/ onglet COM )

    Cordialement

    jeudi 2 septembre 2010 13:50
    Modérateur
  • Bonjour,

    vous devez ajouter une référence vers la libraire Microsoft Excel x.0 Object Library dans votre projet (ajout reference/ onglet COM )

    Cordialement

     

    merci super,

    j'ai ajouté la référence puis j'ai fais une correction car j'avais une erreur quand je lance l'application, voici la correction:

     

    Private Sub Exporter_vers_excel_Click(ByVal Table_inventairDatagridView As DataGridView, ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Exporter_vers_excel.Click

    mais j'ai un message d'erreur lorsque je lance l'aplication:

    Erreur 1 La méthode 'Private Sub Exporter_vers_excel_Click(Table_inventairDatagridView As System.Windows.Forms.DataGridView, sender As Object, e As System.EventArgs)' ne peut pas gérer l'événement 'Public Event Click(sender As Object, e As System.EventArgs)', car sa signature n'est pas compatible. C:\Users\compaq\Desktop\projet_inventaire1\projet_inventaire\projet_inventaire\Form1.vb 85 182 projet_inventaire

    j'ai bien essayé de corriger mais sans succès.

    bien à vous.

    jeudi 2 septembre 2010 14:56
  • Il semble que vous avez associé une méthode dont la signature n'est pas correcte pour gérer l'évenement click de votre bouton.

    La signature devrait être du type : 'Private Sub Exporter_vers_excel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Exporter_vers_excel.Click

    Dans les propriétés du bouton en mode design vous pouvez également vérifiez que l'évènement Click ( via l'onglet avec l'éclair ) est bien asssocié cette méthode.

    Si besoin ajouter un nouveau bouton dans votre form et double cliquer dessus pour voir le code qui est généré par défaut pas visual studio.

    Cordialement

    jeudi 2 septembre 2010 15:10
    Modérateur
  • Il semble que vous avez associé une méthode dont la signature n'est pas correcte pour gérer l'évenement click de votre bouton.

    La signature devrait être du type : 'Private Sub Exporter_vers_excel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Exporter_vers_excel.Click

    Dans les propriétés du bouton en mode design vous pouvez également vérifiez que l'évènement Click ( via l'onglet avec l'éclair ) est bien asssocié cette méthode.

    Si besoin ajouter un nouveau bouton dans votre form et double cliquer dessus pour voir le code qui est généré par défaut pas visual studio.

    Cordialement

    Suuuuuupppppppeeeeeeeerrrrrr  Eureka

    ça marche, oui vous avez raison, c'était ça.

    Encore un grand merci car ça fait 2 semaine que je cherche sur le net (français et anglais) et sur les forum spé____é français mais sans succés.

    d'abord j'ai trouvé ce morceau de code sur ce forum ensuite avec vous en 2 heures c'est réglé.

    Et bien ça méritrais un cadeau.

    si vous le souhaiter envoyez moi votre adresse sur (norddist@gmail.com) et je me ferai un plaisir de vous envoyer un cadeaux.

    j'y tiens.

     

    Bien à vous.

    jeudi 2 septembre 2010 16:44