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

VB.NET Discussion :

Ecrire dans un fichier Excel


Sujet :

VB.NET

  1. #1
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut Ecrire dans un fichier Excel
    Bonjour à tous,

    J'ai suivi le tuto http://faqvbnet.developpez.com/?page...dgrid_to_excel afin de pouvoir remplir un fichier Excel

    Si je fais ça,

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     Dim xlApp As Excel.Application
     Dim xlBook As Excel.Workbook
     Dim xlSheet As Excel.Worksheet
     
     xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
     xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
     xlSheet = CType(xlBook.Worksheets(1), Excel.Worksheet)
     
     xlSheet.Cells(1, 1) = 13

    ça marche correctement, mais si je rajoute une boucle toute bête telle que

    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For j As Integer = 1 To 13
         xlSheet.Cells(0, j).Value2 = 1
     Next

    j'ai un message d'erreur COMException

    Exception de HRESULT : 0x800A03EC
    J'ai aussi essayé avec un .Cells(0,j) = 1, la même erreur est levée...

    Quelqu'un aurait-il une idée d'où cela peut-il venir ?
    Je précise que j'ai importé Interop.Office.Excel v11 et que sur mon poste, il s'agit de Excel 2003...

    Par avance, MERCI

    @+

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    695
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 695
    Par défaut
    Bonsoir,
    la case 0 n'existe pas sur une page excel.
    Les lignes (ou colonnes) commencent à 1.
    La library 11 est la bonne pour excel 2003, je crois.

  3. #3
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut excel,index
    bonjour
    comme l'as dit tomlev,les index dans excel commence toujours à 1(pas comme dans vb.net ou il commence à zero).
    attention quand on surfe entre com et .net............
    bon code

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    Bonjours a tous,

    Afin d'envoyé le contenu d'un DataGridView dans un fichier excel, j'ai utilisé le meme code que koyot3 qui fonctionne.

    Mon probleme c'est que je voudrais que les données de mon DataGridView soit envoyé dans un fichier excel deja existant et choisi par l'utilisateur au lieu de crée un nouveau classeur.

    J'ai regarder plusieurs tuto sur internet mais j'ai reussi a trouvé comment faire.
    J'avais pensé utilisé GetObject()

    Mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim app As New Excel.Application
    Dim Wbook As Excel.Workbook
    Dim Wsheet As Excel.Worksheet
    
    app = CType(GetObject("D:\Users\Alexandre\Desktop\specialite\" &Me.listepays.Text  &".xlsx"),Excel.Application)      
      Wbook = CType(excel.Workbooks.Add, Excel.Workbook)
            Wsheet = CType(xlsBook.Worksheets(1), Excel.Worksheet)
    
        .....

    mais des que je lance mon script je reçoit une erreur (en gras sur mon code) avec l'exception suivante :

    Impossible d'effectuer un cast d'un objet COM de type 'System.__ComObject' en type d'interface 'Microsoft.Office.Interop.Excel.Application'. Cette opération a échoué, car l'appel QueryInterface sur le composant COM pour l'interface avec l'IID '{000208D5-0000-0000-C000-000000000046}' a échoué en raison de l'erreur suivante : Cette interface n’est pas prise en charge (Exception de HRESULT : 0x80004002 (E_NOINTERFACE)).
    Je n'arrive pas a trouver d'ou vient le probleme Si quelqu'un aurait une idée si vous plais

    Merci a tous

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    695
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 695
    Par défaut
    Bonjour,
    à tester, en adaptant l'import et le chemin du fichier excel, bien-sûr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Imports xls = Microsoft.Office.Interop.Excel
    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
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Dim xlApp As New xls.Application
            Dim xlBook As xls.Workbook
            Dim xlSheet As xls.Worksheet
     
            'xlApp = CType(CreateObject("Excel.Application"), xls.Application)
            xlBook = xlApp.Workbooks.Open(Application.StartupPath & "\Classeur1.xlsx")
            xlSheet = CType(xlBook.Worksheets(1), xls.Worksheet)
     
            For j As Integer = 1 To 13
                Dim castRange As xls.Range = CType(xlSheet.Cells(1, j), xls.Range)
                castRange.Value = j
            Next
     
            xlApp.Visible = True
        End Sub

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    Bonjours

    j'ai essayé de resoudre mon probleme par different moyen j'ai essayé en adaptant le code de chrismonoye ou en essayant d'utiliser des file.open ...

    Mais mon erreur persiste =(

  7. #7
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut ecrire dans fichier excel
    bonjour
    supprime ce cast inutile ,en interop.excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'corrige cette ligne (cast inutile)
    'xlSheet = CType(xlBook.Worksheets(1), xls.Worksheet)
    'remplace par :
    xlSheet =xlBook.Worksheets(1)
    'initialise l'interface range avant d'entrer dans la boucle
    Dim castRange As xls.Range =nothing
     For j As Integer = 1 To 13
               'pas besoin de caster un objet excel à autre objet excel
               castRange = xlSheet.Cells(1, j)
               castRange.Value = j
            Next
    bon code............

  8. #8
    Membre éclairé Avatar de koyot3
    Inscrit en
    Avril 2007
    Messages
    693
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 693
    Par défaut
    Citation Envoyé par chrismonoye Voir le message
    Bonsoir,
    la case 0 n'existe pas sur une page excel.
    Les lignes (ou colonnes) commencent à 1.
    La library 11 est la bonne pour excel 2003, je crois.

    merci

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 34
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    bonjour
    supprime ce cast inutile ,en interop.excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    'corrige cette ligne (cast inutile)
    'xlSheet = CType(xlBook.Worksheets(1), xls.Worksheet)
    'remplace par :
    xlSheet =xlBook.Worksheets(1)
    'initialise l'interface range avant d'entrer dans la boucle
    Dim castRange As xls.Range =nothing
     For j As Integer = 1 To 13
               'pas besoin de caster un objet excel à autre objet excel
               castRange = xlSheet.Cells(1, j)
               castRange.Value = j
            Next
    bon code............
    Oui c'est bon sa marche Merci BEAUCOUP a toi est a chrismonoye pour votre aide

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

Discussions similaires

  1. ecrire dans un fichier excel
    Par micka180 dans le forum VBScript
    Réponses: 3
    Dernier message: 01/08/2007, 15h23
  2. [C#] Comment écrire dans un fichier Excel ?
    Par chorokari dans le forum C#
    Réponses: 8
    Dernier message: 09/02/2007, 09h17
  3. comment ecrire dans un fichier excel
    Par dietrich dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 15/01/2007, 12h46
  4. [C#] Comment écrire dans un fichier Excel ?
    Par FoxDeltaSierra dans le forum ASP.NET
    Réponses: 2
    Dernier message: 07/05/2006, 15h29
  5. [VB]Ecrire dans un fichier excell
    Par Empty_body dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 07/02/2006, 12h55

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