none
Interface non enregistrée RRS feed

  • Question

  • Bonjour à tous,

    Après avoir recompilé mon programme, je me retrouve avec cette erreur :

    Impossible d'effectuer un cast d'un objet COM de type 'Microsoft.Office.Interop.Excel.ApplicationClass' 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 : Interface non enregistrée (Exception de HRESULT : 0x80040155).

    Je comprends que ça vient du "Microsoft.Office.Interop.Excel" mais ma DLL est bien dans mon projet, elle est bien ajoutée à mes Références. 

    Ce qui a changé, j'ai toujours mis la version 12 de ma DLL pour que le programme reste compatible avec des version plus anciennes de Excel. J'ai installé sur mon poste Office 2013 et du coup, quand j'ai recompilé, VS a pris la version 15 de ma DLL (je ne sais pas pourquoi il l'a changé tout seul) mais depuis, ça ne fonctionne plus. j'ai beau remettre mon ancienne DLL, j'ai toujours cette erreur. 

    Est-ce que ça parle à quelqu'un ?

    je précise que la fonction est un export de Datagrid vers Excel.

    Par avance merci.


    "Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF

    jeudi 20 novembre 2014 11:01

Réponses

  • Bonjour,

    Il semblerait que mon VS soit en x86 (il  ne m'a pas demandé mon avis quand je l'ai téléchargé). Est-ce que ça pourrait expliquer ce qu'il se passe ?
    VS est en x86 (il n'est malheureusement toujours pas en 64-bit), mais il permet de compiler des applications 32 et 64-bit !

    De même, je peux comprendre que du x64 n'est pas compatible x86 mais l'inverse n'est pas possible ?
    En fait ce n'est pas votre application qui pose problème, mais les composants COM (Office) que vous utilisez. Si ils sont installé en 32-bit, votre application doit fonctionner exclusivement 32-bit même si vous êtes sur un Windows 64-bit...

    Pour spécifier sur quel plateforme vous souhaitez compiler votre application, il faut aller dans les propriétés du projet qui représente votre exécutable, et choisir l'onglet "Générer" :

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure



    mardi 25 novembre 2014 01:31
    Modérateur

Toutes les réponses

  • Bonjour,

    Pouvez vous essayez de réenregistrer votre DLL via un REGSRV32 en ligne de commande.

    REGSVR32 Microsoft.Office.Interop.Excel.dll

    Ca devrait vous aider à compiler.

    Cordialement,

    Mathieu


    Mathieu Notin

    jeudi 20 novembre 2014 11:09
  • j'ai essayé mais il me dit que le module specifié est introuvable. quand je lui indique le chemin de ma DLL, il me dit que la DLL a été chargé mais le point d'entrée DllRegisterServer est introuvable.

    A l'execution du programme, j'ai toujours la meme erreur.

    Je précise que cette meme DLL fonctionne avec d'autres programmes.


    "Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF

    jeudi 20 novembre 2014 11:35
  • Bonjour,

    Votre application doit fonctionner sur la même architecture que l'architecture utilisé par votre Office.

    C'est à dire que si votre Office a été installé en 32-bit, il faut que votre application soit compilé et exécuté en 32-bit. Idem pour le 64-bit.

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    dimanche 23 novembre 2014 23:43
    Modérateur
  • Bonjour et merci Gilles pour votre réponse.

    En effet, je viens de passer mon appli en Any CPU et ça passe sur d'autres postes mais pas sur celui sur lequel l'application est développée.

    Alors je vais peut être dire une bêtise mais je ne demande pas, je ne saurai pas. 

    le PC a bien une architecture x64, Office est en x64 mais Visual Studio me dit que je suis en en Plateform x86.

    Il semblerait que mon VS soit en x86 (il  ne m'a pas demandé mon avis quand je l'ai téléchargé). Est-ce que ça pourrait expliquer ce qu'il se passe ?

    De même, je peux comprendre que du x64 n'est pas compatible x86 mais l'inverse n'est pas possible ?


    "Un bon technicien n'est pas un technicien qui pense tout savoir" Lallemand Sébastien MCITP EA Windows Server 2008 R2 Apprenti développeur C# EF

    lundi 24 novembre 2014 12:52
  • Bonjour,

    Il semblerait que mon VS soit en x86 (il  ne m'a pas demandé mon avis quand je l'ai téléchargé). Est-ce que ça pourrait expliquer ce qu'il se passe ?
    VS est en x86 (il n'est malheureusement toujours pas en 64-bit), mais il permet de compiler des applications 32 et 64-bit !

    De même, je peux comprendre que du x64 n'est pas compatible x86 mais l'inverse n'est pas possible ?
    En fait ce n'est pas votre application qui pose problème, mais les composants COM (Office) que vous utilisez. Si ils sont installé en 32-bit, votre application doit fonctionner exclusivement 32-bit même si vous êtes sur un Windows 64-bit...

    Pour spécifier sur quel plateforme vous souhaitez compiler votre application, il faut aller dans les propriétés du projet qui représente votre exécutable, et choisir l'onglet "Générer" :

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure



    mardi 25 novembre 2014 01:31
    Modérateur