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

Macros et VBA Excel Discussion :

Table[#ALL] et automation


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Par défaut Table[#ALL] et automation
    Bonjour,

    Le code vba suivant fonctionne très bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox Range("MyTable[#ALL]").Address
    alors que le code C# me lève une exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                Application excel = new Application();
                var table1 = excel.Range["MyTable"]; // ok
                var table2 = excel.Range["MyTable[#ALL]"]; //ko :-( lève une excetion
    Je n'arrive pas à comprendre pourquoi.
    Quelqu'un a une idée de comment faire cela ?

    Pour info, en C# j'ai référencé :
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14\Microsoft.Office.Interop.Excel.dll

    Merci d'avance de vos réponses...

    Cordialement

    Sybaris

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Je pense que tu auras plutôt une réponse sur un forum C#.

    PS. Note qu'en VBA,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox Range("MyTable").Address
    fonctionne aussi très bien.

  3. #3
    Invité
    Invité(e)
    Par défaut Bonjour,
    dans ton première exemple,VBA, tu fais référence à un objet vb excel. ce qui est conforme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MsgBox Range("MyTable[#ALL]").Address
    dans le deuxième tu fais une nouvelle instance d'excel sauf que tu utilise Application qui est ambiguë entre C# Application et Excel Application.
    de plus cette nouvelle instance ne pointe pas vers ton application Excel mais une autre instance n'ayant pas de fichier ouvert!
    il faut soit pointer sur une session ouverte soit ouvrir ton fichier. si ton fichier est ouvert il faut récupérer la session comme dans C# il n'existe pas de méthode GetObect nous devons la créer
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
     Microsoft.Office.Interop.Excel.Application Excel = (Microsoft.Office.Interop.Excel.Application)Marshal.GetActiveObject("Excel.Application");
    comme nous utilisons la méthode Marshal.GetActiveObject nous la définirons dans les déclarations.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using System.Runtime.InteropServices;
    autre possibilité
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    using ExcelAplication=Microsoft.Office.Interop.Excel;
    ExcelAplication.Application Excel = (ExcelAplication.Application)Marshal.GetActiveObject("Excel.Application");
    Dernière modification par Invité ; 05/05/2014 à 12h25.

  4. #4
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2008
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2008
    Messages : 118
    Par défaut Bonjour,
    Tout d'abord merci pour ces réponses.

    Hélas, l'utilisation de GetActiveObject ne solutionne pas mon problème.

    En effet, dans l'exemple C# que je donnais, j'ai omis de dire que j'ouvrais le fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                Application excel = new Application();
                excel.Workbooks.Open(filename, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows);
                var table1 = excel.Range["MyTable"]; // ok
                var table2 = excel.Range["MyTable[#ALL]"]; //ko :-( lève une exception
    J'ai essayé aussi d'ouvrir manuellement le fichier, puis de faire le GetActiveObject pour récupérer l'instance d'application Excel. Je récupère bien l'instance COM de l'application excel, mais j'ai le même résultat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                Application excel = (Application)Marshal.GetActiveObject("Excel.Application");
                var table1 = excel.Range["MyTable"]; // ok
                var table2 = excel.Range["MyTable[#ALL]"]; //ko :-( lève une exception
    Ma problématique est vraiment focalisée sur l'interprétation du Range avec les table
    De même excel.Range["MyTable[#HEADERS]"]; lève une exception en C# contrairement au vba...

    Si vous avez des idées...

    Cordialement

    Sybaris

Discussions similaires

  1. [AC-2010] Runtime et tables liées : erreur Automation
    Par perflo dans le forum Runtime
    Réponses: 2
    Dernier message: 17/04/2011, 18h06
  2. [AC-2003] Exportation de plusieurs tables vers UN fichier excel par automation
    Par MatAir dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/06/2010, 22h43
  3. [Automation]Export d'une table vers excel : Erreur
    Par DamKre dans le forum VBA Access
    Réponses: 4
    Dernier message: 14/04/2007, 10h38
  4. Show All Tables
    Par faressam dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/04/2007, 21h37
  5. Réponses: 2
    Dernier message: 06/08/2004, 15h02

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