vegastar69
Messages postés36Date d'inscriptiondimanche 15 avril 2012StatutMembreDernière intervention11 mai 2012
-
26 avril 2012 à 18:00
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
29 avril 2012 à 17:54
Bonsoir,
Je vous explique mon problème:
J'ai un tableau Excel où sont référencées certaines informations et notamment deux critères nommé "MA" et "SA".
Je veux créer un autre tableau Excel et récupérer ces deux critères en les classant par ordre décroissant.
Voilà un exemple de ce que j'aimerai obtenir (le tableau devra être sur un autre fichier à part):
Je réussi à le faire directement sur Excel avec la fonction: NB.SI(plage;critère) pour récupérer chaque critère MA.
NB.SI.ENS(plage_critères1; critère1; [plage_critères2; critères2]…) pour récupérer chaque critère SA en fonction du critère MA.
Mais je souhaiterai tout automatisé en le faisant en code VB.NET sur mon application.
D'un côté je veux compter chaque MA un à un, et de l'autre je veux compter chaque SA associé à chaque MA.
Excel a une fonction qui s'appelle le filtre élaboré qui permet de filtrer les données selon des critères choisis par l'utilisateur. L'utilisateur a aussi le choix d'afficher les résultats à partir de l'endroit d'origine ou de les afficher à un endroit différent.
Tu peux piloter Excel par automation avec VB.net. Si tu ne veux pas utiliser la voie du pilotage, tu vas passer une éternité a tout reprogrammer et a déboguer. Cela va coûter une fortune en temps à ton employeur, juste pour réinventer la roue.
Ceci dit, si tu veux absolument faire de l'Excel sans Excel:
1) On peut obtenir des données d'un classeur Excel d'une manière semblable à l'acquisition de données d'une base de de données. (Une chaîne de connexion et des requêtes SQL pour remplir des datatables. Un BindingSource ou un Dataview pour trier et faire les calculs, puis un DataGridView pour voir les résultats.)
2) Ceci dit, pour créer un nouveau classeur Excel sans avoir Excel (Excel 2007 et 2010) on peut utiliser Open XML. Il y a un SDK sur le site de microsoft.
À la base Automation c'est l'abréviation de OLE Automation. OLE étant la technologie qui permet l'insertion d'objets, le glisser-déposer, la liaison d'objets etc.
Dans le cas qui nous occupe c'est d'utilser Excel et VBA à partir d'une autre application qui peut être VB.net, Caiguisé (C#), VbScript, VB6 et bien d'autres.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 28 avril 2012 à 21:17
Bonjour,
D'accord je vois, je pense me dirigé vers cet option qui me parait plus logique pour travailler sur des tableaux Excel.
Donc dans mon cas je souhaite avoir un bouton dans mon interface vb.net qui exécute mon tableau excel.
je crois que tu n'as pas compris le rôle de l'automation :
Il n'est pas d' "exécuter", mais de "piloter".
Il implique :
1) la création des objets à "piloter" (Excel, Classeur, feuille excel)
2) une connaissance suffisante de VBA/Excel (le "pilotage" ne t'en dispense nullement. Il te permet seulement d'appliquer aux objets créés les mêmes méthodes, instructions, fonctions, etc ... que celles que tu appliquerait en VBA directement).
En conséquence :
- ou tu sais déjà écrire le code VBA faisant ce que tu veux et montre-le ===>> on te dira comment l'inclure dans ton "pilotage"
- ou tu ne le sais pas et c'est alors, avant même de parler de "pilotage" depuis telle ou telle autre application, un problème VBA/Excel (autre section de ce forum) à résoudre d'abord.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 29 avril 2012 à 17:49
Je te conseille alors de traiter ce problème VBA d'abord !
Il ne serait pas idiot, pour y parvenir, d'ouvrir dans la section : Langages dérivés > VBA une discussion à part entière, sans même faire allusion à VB.Net et à un pilotage. Juste VBA et rien d'autre.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 29 avril 2012 à 17:54
Voilà !
Et une fois ce code VBA connu et maîtrisé, il te sera loisible de revenir dans la présente discussion si tu rencontres une difficulté pour t'en servir en "pilotage" depuis VB.Net.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ