Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
1865 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Utiliser des fonctions C# pour Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utiliser des fonctions C# pour Excel

n°1956565
faisantp
Posté le 10-01-2010 à 18:03:19  profilanswer
 

Bonjour, j'ai un classeur excel avec 3 colonnes de données et je dois faire des calculs complexe dessus. J'aimerais donc pouvoir utiliser des fonctions écrite en C# pour traiter les données. Mais je ne sais pas trop quelles méthodes sont les plus adaptées. Pour l'instant, j'ai créé un projet VS2008 qui me créé une librairie dll pour excel ensuite dans mon classeur excel j'arrive a importer la librairie correctement, mais j'ai aucune idée de la façon de passer les paramètres en VBA pour des fonctions appelée depuis excel. (des tableaux de double du côté c#). Que faire ? Je voudrais savoir aussi s'il est possible de s'affranchir complètement du VB avec VisualStudio et le C# ? On peut effectivement créer un projet C#/Excel, mais je n'arrive pas à accéder aux cellules et je ne trouve pas la moindre documentation.
 
Voilà des bouts de code sur des exemples simples :
 
côté c#

Code :
  1. public double somme(double[] tab)
  2.         {
  3.             double ret = 0;
  4.             foreach (double d in tab)
  5.             {
  6.                 ret += d;
  7.             }
  8.             return ret;
  9.         }


 
côté VB

Code :
  1. Private ppslib As ExcelInterface.Functions
  2. Sub Pricer()
  3.     Range("F4" ).Select
  4.     Call ppslib.somme(B4:B50 ???)
  5. End Sub


 
merci pour vos idées.

mood
Publicité
Posté le 10-01-2010 à 18:03:19  profilanswer
 

n°1956608
Fred82
Posté le 10-01-2010 à 20:27:48  profilanswer
 

Ce sujet revient souvent.
 
Tu as deux possibilités :
1) Utiliser la librairie Office Interop de Microsoft dont tu parles, qui assez mal conçue, et qui nécessite que Office soit installé sur le poste de tes utilisateurs (2007 est même requis suivant ce que tu prends). Dans ce cas, tu peux regarder ce tuto :
http://www.codeproject.com/KB/cs/S [...] ation.aspx
2) Utiliser une librairie gratuite qui ne demande pas de pré-requis, et qui est mieux conçue :
http://www.codeproject.com/KB/office/ExcelReader.aspx
 
Dans les deux-cas, tu n'a plus besoin d'utiliser du VBA, tu peux accéder et modifier chaque cellule de ton fichier Excel, en C#.


---------------
Vos smileys favoris sur HFR : Script Greasemonkey / Topic HFR officiel
n°1956623
faisantp
Posté le 10-01-2010 à 22:08:06  profilanswer
 

Merci, ces documents sont mieux que ceux que j'avais trouvé. Pourquoi la librairie interop est-elle si mal concue ? (Je veux dire en pratique quels sont les problèmes rencontrés, j'attends pas de réponse du genre parce que chez microsoft c'est des boulets )
Ensuite, pour l'instant mon premier problème, c'est le passage d'un tableau excel en paramètre VBA comme je montre dans les exemples. Tu sais comment faire ?
 
merci

n°1956678
Fred82
Posté le 11-01-2010 à 10:12:22  profilanswer
 

> "Pourquoi la librairie interop est-elle si mal concue ?"

 

En réalité, je n'ai jamais utilisé Interop Excel, mais par contre j'ai utilisé Interop Word, et c'était bien de la merde. Comme j'ai lu que Interop Excel était du même acabit, j'en conclus cela.

 

Interop Word, ce sont des méthodes assez complexes, mal documentées, dont les paramètres ne sont pas typés (tous de type object) ce qui complexifie la prise en main.

 

Pour utiliser les méthodes VBA depuis le C#, je ne sais pas comment faire, je te laisse chercher... Je te conseille de t'affranchir du VBA si tu peux !


Message édité par Fred82 le 11-01-2010 à 10:13:22

---------------
Vos smileys favoris sur HFR : Script Greasemonkey / Topic HFR officiel
n°1957221
faisantp
Posté le 12-01-2010 à 16:06:51  profilanswer
 

J'essaye de m'affranchir du VBA mais je n'y arrive pas. J'ai créé un projet Excel/C# sous visual studio, du coup je cherche un tutorial qui m'explique comment manipuler excel sans avoir a le lancer, puisque le projet lance déjà une instance d'excel. Quel est le code pour trouver la référence de l'instance d'excel, le workbook et surtout la worksheet ?

n°1957415
Fred82
Posté le 13-01-2010 à 10:25:51  profilanswer
 

Avec Excel 2007, on peut lancer plusieurs instances d'Excel, donc ça devrait marcher dans ton cas ! Pour les autres questions, l'exemple de code :
http://www.codeproject.com/KB/cs/S [...] ation.aspx
au paragraphe "Excel File creation Code".
C'est un exemple de création de fichier Excel, il faut l'adapter un peu pour qu'il ouvre un fichier existant.

 

Mais je te conseille d'utiliser l'autre librairie qui est plus simple à utiliser. Là déjà, sur l'exemple de code que je cite ci-dessus, je vois déjà des types object, des cast (objSheet = (Excel.Worksheet)objBook.Sheets["Sheet1"]; ), ça m'a l'air effectivement aussi prise de tête que la librairie Interop Word. A ta place, j'aurais déjà choisi.


Message édité par Fred82 le 13-01-2010 à 10:29:49

---------------
Vos smileys favoris sur HFR : Script Greasemonkey / Topic HFR officiel
n°1957481
faisantp
Posté le 13-01-2010 à 12:04:23  profilanswer
 

Non, c'est bon, j'ai trouvé ce qu'il me faut. En fait je suis pas s$ir de m'être fait bien comprendre, pour cela il faudrait que tu créés un projet excel/c# sous visual, ensuite on peut accéder aux feuilles en faisant simplement globals.feuilleX.range(...) et tout devient très simple.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  Utiliser des fonctions C# pour Excel

 

Sujets relatifs
[C#][DirectInput] Programmation d'un joystick[WORD] créer une macro excel créan un word
socket flux breakpoint C++TP de C et IPC
développement .net C# ou .net visual basic ??écrire en C des algorithmes de graphes !! Please HELP !!
excel : acquiter macro à l'ouverture[C++] Compteur de temps qui ne fait pas "pause"
[excel] Incrémenter une formule.Lien entre algorithme et language C
Plus de sujets relatifs à : Utiliser des fonctions C# pour Excel


Hit-Parade
Copyright © 1997-2012 Hardware.fr SARL / Groupe LDLC / LesNumeriques.com / Version anglaise du site: BeHardware