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 :

[VBNET]Problème d'accès à Excel


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 42
    Points : 46
    Points
    46
    Par défaut [VBNET]Problème d'accès à Excel
    Bonjour,

    J'utilise en ce moment VB 2005 Express Beta 2. Lorsque j'active l'option Strict, les liaisons tardives sont interdites.

    Avec VB6 et VB 2005, j'accédais à Excel comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim DocExcel as Object
    Set DocExcel = CreateObject("Excel.Application")
    Je fais dorénavant appel à Excel comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim DocExcel As Excel.Application
    DocExcel = CType(CreateObject("Excel.application"), Excel.Application)
    Mais en faisant appel comme ceci, ça ne fonctionne plus, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DocExcel.DisplayAlerts = False
    génère une erreur lors de l'exécution :

    Le serveur a généré une exception. (Exception de HRESULT : 0x80010105 (RPC_E_SERVERFAULT))
    Maintenant la question qui tue : pourquoi ça ne marche pas ?

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Tu devrais peut être utiliser la PIA microsoft.office.interop.excel.dll
    pour faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim docExcel As Microsoft.Office.Interop.Excel.Application
    '...
    docExcel = New Microsoft.Office.Interop.Excel.Application()
    'etc...

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    Salut,
    avec Excel, l'erreur HRESULT est très souvent un problème de "Globalisation" (culture-info).
    en général, si tu dois faire une appli multi-environnement culturel, tu peux t'en sortir "trappant" la culture locale (courante), puis en forçant la culture courante à en-US pour faire tes opérations, puis en remettant ta culture locale à sa valeur originale.
    Comme ceci :
    - capture de la valeur courante et mise en en-US
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Dim oldLocale As System.Globalization.CultureInfo
     
    ' récupère et stocke le type local actuel et défini temporairement le type local 
        ' comme "en-US"
        Private Sub SetTempLocale()
            oldLocale = System.Threading.Thread.CurrentThread.CurrentCulture
            System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")
        End Sub
    - puis remise à la culture originale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub BackToOldLocale()
            System.Threading.Thread.CurrentThread.CurrentCulture = oldLocale
        End Sub
    la seule chose à faire attention avec ça est que si affiche des dates, elles peuvent s'fficher en mode US, c'est à dire MM-DD-YYYY, donc tu devra peut-être te faire une petit fonction "moulinette" qui te reconstruise la date en DD-MM-YYYY

    bonne chance !

  4. #4
    Membre du Club
    Inscrit en
    Mai 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 42
    Points : 46
    Points
    46
    Par défaut
    Merci pour vos réponses. :o

    En fait, je me servais d'Excel 97 et donc de la référence Microsoft Excel 8.0 Object Library, et celle-ci ne fonctionne sous VB 2005 qu'en utilisant une liaison tardive.

    Je suis passé sous Excel 2003 avec la référence Microsoft Excel 11.0 Object Library, et là j'accède à Excel comme l'a décrit neguib et ça marche !!!

    En fait, je migre des programmes de VB6 à VB.Net car à mon boulot, on est toujours sous Windows NT & Excel 97, mais Windows XP pointe enfin le bout de son nez avec bien sûr une autre version d'Office.

    Merci encore pour vos réponses.

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

Discussions similaires

  1. [2012] Problème d'accès à un cube à partir d'Excel 2013
    Par annedeblois dans le forum SSAS
    Réponses: 1
    Dernier message: 24/07/2014, 18h13
  2. Problème d'accès dll VBA/Excel
    Par corky813 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/05/2012, 21h11
  3. Problème d'accès à un fichier excel
    Par ezsoft dans le forum ASP.NET
    Réponses: 8
    Dernier message: 23/06/2009, 18h45
  4. Problème d'accès Excel pour Import
    Par Mohammmed dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 04/08/2007, 10h47
  5. Réponses: 4
    Dernier message: 15/03/2006, 12h33

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