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

C# Discussion :

Gérer une macro VBA dans un projet C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut Gérer une macro VBA dans un projet C#
    Bonjour à tous,

    Petit nouveau sur ce forum, je suis relativement débutant en C# étant donné que je l'ai découvert cette année en cours.

    Dans un projet, j'ai une macro en VBA contenue dans un fichier excel qu'on m'a fourni que je dois faire tourner à l'ouverture de mon projet C#. Cette macro mouline (traitement de données classique) et le résultat du traitement doit être envoyé dans un table faire pour dans la page principale do projet C#

    J'ai essayé de suivre plusieurs tutoriels , notamment http://msdn.microsoft.com/fr-fr/library/bb608613.aspx et http://msdn.microsoft.com/fr-fr/library/bb608604.aspx sans succès..

    SI quelqu'un a déjà été confronté au problème de faire tourner du code VBA dans un projet C# et de récupérer la sortie du script VBA pour l'injecter dans l'interface graphique C#, ça m'aiderai énormément.

    Merci d'avance de votre aide,

    Bien cordialement,
    Kaijin.

  2. #2
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Ces liens concernent le processus inverse : appeler du code .Net depuis VBA.

    Te concernant c'est de l'automation qu'il te faut, ça te permettra de piloter une instance d'Excel : http://support.microsoft.com/kb/302084/fr
    Il me semble que la méthode que tu devras utiliser pour exécuter la macro est Run exposée par l'objet Application.

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut
    Bonjour Pragmateek, bonjour le forum.

    Avant tout merci pour votre réponse.

    J'ai déjà eu l'occasion l'année dernière de faire de l'automation pour piloter Excel depuis Access, ce n'est pas si loin. Je vais sur le lien que vous m'avez envoyé, fais quelques test, et reviens vers vous si j'ai d'autres questions qui viennent.

    Encore merci de votre aide, je pense être sur la bonne voie.

    Bien à vous,
    Kaijin.

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut
    Re bonjour,

    Le lien que vous m'avez fourni m'a permis d'arriver à mes fins pour les macros Excel.
    Problème, j'ai découvert que la macro Excel qu'on m'a fourni ne peut fonctionner que si les fichiers cible de la macro était au préalable remplis par une autre macro, cette fois sous ACCESS.

    Inspiré de ce que j'ai vu, j'ai donc réalisé ceci:

    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
     
    using Access = Microsoft.Office.Interop.Access;
     
    namespace WpfApplication3
    {
            public MainWindow()
            {
                // Start a new instance of Access for Automation:
                Access._Application oAccess = new Access.Application();
     
                // Open a database in exclusive mode:
                oAccess.OpenAccessProject(
                   "C:\\Users\\15824_000\\Documents\\Supinfo B2\\stage centrale\\capitool mars\\Base de données.mdb");
            }
    }
    Problème, dans l'exécution de la simple ouverture du fichier Access, j'ai la plus déroutante des erreurs que j'ai pu voir jusqu'ici:
    An exception of type 'System.Runtime.InteropServices.COMException' occurred in WpfApplication3.exe but was not handled in user code

    Additional information: Désolé... Cette version d’Access ne prend plus en charge les projets de données Access.

    J'utilise Microsoft Visual Studio ultimate 2013 version 12.0.21005.1

    Auriez-vous une idée du pourquoi du comment?
    Dois-je installer visual studion 2010 ou une version encore antérieure pour dépasser cette erreur?
    Ou au contraire dois-je installer un pack office encore plus récent que celui que j'ai à l'heure actuelle, c'est à dire le pack Office 2013?
    Ou bien y a t-il une solution pour contourner totalement ce problème, en gardant le pack office 2013 et visual studio 2013 (option que je préfèrerai, celà permettra à l'application de continuer à tourner même si l'entreprise décide de changer de pack office pour aller vers du plus récent.)

    Merci d'avance de votre aide.

    Cordialement,
    Kaijin

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Sûrement que ce n'est pas la bonne méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Open a database in exclusive mode:
    oAccess.OpenCurrentDatabase("C:\\Users\\15824_000\\Documents\\Supinfo B2\\stage centrale\\capitool mars\\Base de données.mdb");

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut
    L'appel de cette méthode ne provoque pas d'erreurs, l'interface graphique réalisée en xaml s'affiche correctement.
    Pour autant, access ne se lance pas. J'ai vérifié le chemin, il est correct.
    Auriez-vous une idée d'où pourrais provenir ce problème? Peut-être dois-je avoir access déjà lancé pour pouvoir appeler OpenCurrentDatabase?

    Merci encore.
    Kaijin

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/04/2014, 15h04
  2. Executer une macro vba depuis un projet vb.net ?
    Par spookyz dans le forum VB.NET
    Réponses: 3
    Dernier message: 18/12/2010, 10h00
  3. Réponses: 10
    Dernier message: 18/04/2007, 17h17
  4. [VBA-E] Lancement d'une macro située dans un autre fichier
    Par sat478 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 07/09/2006, 16h48
  5. [VBA] utiliser une macro contenue dans un autre classeur
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 01/02/2006, 18h46

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