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 :

[EXCEL] Lire Ecrire et lancer des macros d'un fichier Excel


Sujet :

C#

  1. #1
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut [EXCEL] Lire Ecrire et lancer des macros d'un fichier Excel
    Bonjour,

    J'ai un gros fichier Excel et j'aimerais interagir avec lui depuis mon application qui est en C# WinForm.

    J'ai besoin d'écrire dans des cellules du fichier, puis lancer des macros, et enfin lire des cellules.

    Je ne sais pas si l'utilisateur aura Excel d'installé, donc on oublie les Interop.

    Je viens de trouver quelques documentation sur NPIO, mais pour le moment je ne trouve pas d'information sur le lancement des macros, donc j'ai peur de ne pas être sur la bonne voie.

    Quand je recherche l'ouverture de fichier xlsm en C# pour le moment je ne trouve que des dll payante, mais je vais continuer à chercher. Il compare leur solution avec NPIO, mais sans aborder le sujet des macros dans leur exemples.

    Si vous avez des idées, merci.

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 752
    Points : 5 457
    Points
    5 457
    Par défaut
    Si ton fichier est au format XLSX (ou XLSM s'il contient des macros) tu n'a effectivement pas besoin d'avoir Excel installé pour lire et écrire dans des cellules.
    Tu peux passer par OpenXML qui est gratuitement fournie par Microsoft mais il va falloir te pencher sur la documentation car elle est complexe.
    Tu peux également utiliser ClosedXML qui encapsule et simplifie l'utilisation de OpenXML.

    Mais tu ne pourras pas exécuter la macro sans Excel.
    La macro, c'est du code VBA et il faut Excel pour l'interpréter et l'exécuter.

    Mais dans ton raisonnement tu évoques le fait d'écrire avant d'exécuter la macro et à la fin relire.
    J'en déduis que dans un premier temps tu places des données dans une feuille Excel.
    Puis que la macro fait un traitement à partir de ces données et modifie certaines cellules.
    Et qu'une fois la macro exécutée, tu veux récupérer ce qu'a modifié la macro.

    Dans ce cas, tu peux coder en .Net ce que fait le code VBA.
    Plus besoin de passer par un fichier intermédiaire.

  3. #3
    Membre averti Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    929
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 929
    Points : 312
    Points
    312
    Par défaut
    Citation Envoyé par popo Voir le message
    Si ton fichier est au format XLSX (ou XLSM s'il contient des macros) tu n'a effectivement pas besoin d'avoir Excel installé pour lire et écrire dans des cellules.
    Tu peux passer par OpenXML qui est gratuitement fournie par Microsoft mais il va falloir te pencher sur la documentation car elle est complexe.
    Tu peux également utiliser ClosedXML qui encapsule et simplifie l'utilisation de OpenXML.
    .
    Merci pour ces informations.

    Citation Envoyé par popo Voir le message
    Mais tu ne pourras pas exécuter la macro sans Excel.
    La macro, c'est du code VBA et il faut Excel pour l'interpréter et l'exécuter.
    .
    Effectivement, c'est vrai, j'avais pas pensé a cela, je vous expliqueen dessous, car c'est lié.

    Citation Envoyé par popo Voir le message
    Mais dans ton raisonnement tu évoques le fait d'écrire avant d'exécuter la macro et à la fin relire.
    J'en déduis que dans un premier temps tu places des données dans une feuille Excel.
    Puis que la macro fait un traitement à partir de ces données et modifie certaines cellules.
    Et qu'une fois la macro exécutée, tu veux récupérer ce qu'a modifié la macro.

    Dans ce cas, tu peux coder en .Net ce que fait le code VBA.
    Plus besoin de passer par un fichier intermédiaire.
    Vous avez parfaitement raison à un détail près, que je n'ai pas expliqué et qui est mon souci principal dont je n'est pas trouvé de réponse depuis plusieurs mois.

    En fait j'ai codé l'intégralité d'excel déjà chaque formule = une methode, une classe = un onglet etc pour etre au plus proche du fichier excel très s complexe avec multitude de formule à rallonge. Mais les macro ne sont pas de simple ligne de code VBA, car en faite cela sert à lancer des solver. 6 en tout, il y en a un 7eme, mais bien plus simple que j'ai résolu en 2 boucles for.

    Les Solver que j'ai codé aussi en C# avec microsoft solver foundation, mais il n'est plus maintenu par microsoft depuis un bon moment et je n'ai pas trouvé d'autre solver gratuit avec tuto. Le souci des payants c'est que ceux que j'ai trouvé sont renouvelable tout les ans a des prix fou alors que j'en aurai "jamais" besoin ailleurs, ce n'est que pour un logiciel pour un client.

    Je suis malgré tout arriver à faire fonctionner mes solvers, mais il me trouve pas tout à fait la même chose que celui d'excel. D'où ma question pour éventuellement comparer et prendre le meilleurs résultat.


    Mais votre intervention m'a rappelé à l'ordre et m'a ouvert les yeux, effectivement dans tous les cas pour ouvrir les solver d'excel ou du moins lancer la macro qui va les ouvrir, il faut qu'Excel soit installé, cela parait évident. Ce n'est pas un simple fichier excel avec du vba, mais il y a la dll du solver qui est là, idiot que je suis.

    Après le souci avec Interop, à chaque fois que je l'ai utilisé dans mon ancien taf, j'ai trouvé cela vraiment très lent.

    Merci en tout cas cela m'a ouvert les yeux sur un truc évident pourtant, la fatigue et l'âge 😭, ont va dire sa..

Discussions similaires

  1. Réponses: 6
    Dernier message: 24/02/2012, 14h25
  2. [XL-2007] lancer des macro avec commandB
    Par tompom3108 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 21/12/2011, 11h21
  3. [XL-2003] lancer des macros à la sélection de feuilles
    Par AstridT dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 24/05/2011, 18h29
  4. [XL-2003] Lancer des macros dans un userform
    Par PetitePatate dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/05/2010, 17h40
  5. [Excel] Lancer des macros VB
    Par soeursourire dans le forum MATLAB
    Réponses: 4
    Dernier message: 20/11/2008, 17h27

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