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.NET] problème pour piloter une appli. excel 2003


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut [VB.NET] problème pour piloter une appli. excel 2003
    Bonjour,

    j'ai un souci concernant le pilotage d'une appli excel 2003 sous vb.net

    j'ai pourtant l' interop.Excel.dll (11.0)

    Mais dès que j'essaye d'ajouter un classeur, cela me provoque une erreur :

    Old Format or Invalid type,

    pourtant je la dernière dll dispo, même si excel est une version 11.6 (sp2)

    voici le code:

    'Déclaration des variables
    Dim appExcel As New Excel.Application 'Application Excel
    Dim wbExcel As Excel.Workbook 'Classeur Excel
    Dim wsExcel As New Excel.Worksheet 'Feuille Excel

    'Ouverture de l'application
    'appExcel = CreateObject("Excel.Application")

    If appExcel Is Nothing Then

    MsgBox("L'application ne se lance pas!")

    Else

    MsgBox("Objet créé")

    End If

    MsgBox(appExcel.Ready)

    wbExcel = appExcel.Workbooks.Add()


    Voila ca bloque a ce moment la, impossible de savoir d'où cela provient si quelqu'un a une suggestion... (je n'ai pas le choix je dois piloter excel 2003 et pas un autre).

    Merci d'avance

  2. #2
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut

  3. #3
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Essaie ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    appExcel.Workbooks.Add(Type.Missing) ;
    wbExcel = (Excel.WorkbookClass)appExcel.Workbooks[1] ;

  4. #4
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    Merci, pour ton aide mais cela ne m'a pas servi,

    le problème vient du fait qu'il y a un conflit entre excel et l'objet Application qui ne doit pas réussir a envoyer les ordres.

    Y aurait-il conflit à cause de SP2 ?

    est ce qu'il y a des mises à jour a faire ?
    ou me manque t -il une DLL.

    je suis ouï à toute suggestion, même si elles paraissent hors sujet on ne sait jamais...

    merci

  5. #5
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Est-ce que tu as fait un debug pas à pas afin de voir exactement quelle ligne déclenche ce message d'erreur :

  6. #6
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    La ligne qui créée cette erreur.. c'est la méthode WorkBooks.Add() , Add() pour tout autres objets (Sheets.add() ...)

    en réalité, dès que je 'Set' quelquechose ou que j'essaye de récupérer les objets d'une appli.µ

    end'autres termes apparament il n a un problème entre les méthodes de l'objet Application et les méthodes de l'application excel en elle même

  7. #7
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Citation Envoyé par Pynuch
    La ligne qui créée cette erreur.. c'est la méthode WorkBooks.Add() , Add() pour tout autres objets (Sheets.add() ...)
    En fait la méthode Add(object) n'est pas référencée sans argument.


    Tu dois dès lors lui passer Type.Missing en paramètre qui correspond à un Template dont tu n'as de toute évidence pas besoin.

    A plus

  8. #8
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    voici un moyen de rendre ton code compatible avec toutes les versions d'Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    la methode qui marche avec toutes les versions d'excel :
     
    Dim x As New Object
    x = CreateObject("excel.application")
    Dim classeur As Object
    Dim feuille As Object
    classeur = x.Workbooks.Open("C:\Machin\fichier.xls", False)
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

  9. #9
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    Citation Envoyé par Yorglaa
    voici un moyen de rendre ton code compatible avec toutes les versions d'Excel
    Oui, si ton classeur Excel existe déjà. Ce qui n'était pas le cas dans son précédent exemple.

  10. #10
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    Voici l'erreur produite


    type 'System.Runtime.InteropServices.COMException' occurred in ExcelProject.dll.
    Additional information: Old format or invalid type library.


    le souci c'est que chez microsoft ils disent que ca viendrait des paramètres régionaux.

    Mais je ne vois pas ce que les paramètres régionaux vienent faire, avec le fait que je ne puisse pas ajouter un classeur ou tout autre objet...

  11. #11
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    La méthode Add(Object) a un argument, vide par défaut :

    Object= Nothing, et cela dans le cas où l'on veut créer un objet non existant.

    Donc cela ne vient pas de l'argument (d'ailleurs j'ai quand même essayé par curiosité)

    merci quand même

  12. #12
    Membre du Club
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 55
    Points
    55
    Par défaut
    J'ai trouve le probleme il provenait de mes para;etres regionaux.

    Merci pour votre aide

  13. #13
    Membre confirmé Avatar de Kcirtap
    Inscrit en
    Juillet 2005
    Messages
    553
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 553
    Points : 523
    Points
    523
    Par défaut
    N'oublie pas le tag .


  14. #14
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Citation Envoyé par Kcirtap
    Citation Envoyé par Yorglaa
    voici un moyen de rendre ton code compatible avec toutes les versions d'Excel
    Oui, si ton classeur Excel existe déjà. Ce qui n'était pas le cas dans son précédent exemple.
    ok, alors comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        Dim XLSApp As New Object
        Dim XLSBook As Object
        Dim XLSSheet As Object
     
        XLSApp = CreateObject("Excel.Application")
        XLSBook = XLSApp.Workbooks.Add
        XLSSheet = XLSBook.Worksheets(1)
    Il est plus facile de voir les signes avant-coureurs après coup que l'inverse !

    Yorglaa

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 01/05/2010, 17h21
  2. problème pour lire une feuille excel a partir d'Access
    Par h_adil dans le forum VBA Access
    Réponses: 1
    Dernier message: 17/07/2008, 23h44
  3. Réponses: 1
    Dernier message: 09/11/2006, 12h39
  4. [VB.NET] Problème pour Marshaliser une API
    Par lamalice dans le forum Windows Forms
    Réponses: 2
    Dernier message: 04/03/2005, 10h01
  5. [VB.NET] Problème pour alimenter une listbox.
    Par gueguen23 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 17/01/2005, 14h05

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