Intégration Excel / C++

Slides:



Advertisements
Présentations similaires
Premier programme en C :
Advertisements

Les fonctions A quoi ça sert ?
Introduction Langage très répandu Noyau Linux VLC … Des avantages indéniables mais aussi des contraintes ! Ceci nest quun rapide tour.
Rappels C.
Introduction au langage C++
C++ 6ème cours Patrick Reuter maître de conférences
Appels de fonctions natives sous C#
Approfondissement du langage
C.
Principes de programmation (suite)
2ième Classe (Mercredi, 13 Octobre) C++ Intro CSI2572.
Regrouper des éléments de même type et pouvoir y accéder à laide dun identificateur et dun indice. Objectif des tableaux.
JavaBeans Réalise par: EL KHADRAOUY TARIK AOUTIL SAFOWAN.
Programmation en VBA Introduction au language Visual Basic for Applications dans le monde Excel.
Programmation en VBA Introduction au language Visual Basic for Applications dans le monde Excel.
LES SOUS-PROGRAMMES USTL Licence S.T.A. S3 A.P.I.2.
TRAITEMENT DE STRUCTURES
Les Classes les structures en C (struct) regroupent des variables : structuration de l'analyse mais problèmes de cohérence problèmes de sécurité d'accès.
Langage Oriente Objet Cours 2.
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Structures de données IFT-2000
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Conteneurs STL.
Sixième cours Les chaînes de caractères et le passage de paramètres par référence Passage de paramètres par référence String.h.
Points importants de la semaine Les tableaux. Rappel : les tableaux Quest-ce quun tableau ? Réponse : Un tableau est une série déléments de même type.
Points importants de la semaine Le préprocesseur. La conversion de types. Les fonctions.
Points importants de la semaine Les sous-programmes. Les paramètres.
Points importants de la semaine Les enregistrements.
Contrôle de types Les types en programmation Expressions de types Un contrôleur de types Equivalence de types Conversions de types Généricité.
IFT 6800 Atelier en Technologies d’information
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
Chapitre 9 Les sous-programmes.
COURS DE PROGRAMMATION ORIENTEE OBJET :
COURS DE PROGRAMMATION ORIENTEE OBJET :
Leçon 1 : notion dobjet IUP Génie Informatique Besançon Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Initiation aux bases de données et à la programmation événementielle
C++ : variables Déclaration de variables
Procédures et fonctions
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
La librairie assert.h.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Introduction au langage PHP Licence Pro Cours Internet / Intranet Utilité Historique Exemples Fonctions PHP Classes.
La notion de type revisitée en POO
7ième Classe (Mardi, 24 novembre) CSI2572. Devoir 3 ?
Argc et argv Utilisation des paramètres de la ligne de commande.
Cours 7 Classes locales Clonage Divers: tableaux.
Les modules. Modules Un module est un ensemble de définitions de constantes, de variables et de fonctions réutilisables de projet en projet. Le langage.
1 Structures des données. 2  Le tableau permettait de désigner sous un seul nom un ensemble de valeurs de même type, chacune d'entre elles étant repérée.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Les erreurs communes en Java.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
Tutorat en bio-informatique
Réaliser par: Sadok Amel Cheboui hassiba
Les classes présenté par: RAHMOUNE RIME / ZEKRI SELMA.
Les classes et les objets Les données finales class A { … private final int n = 20 ; // la valeur de n est définie dans sa déclaration … } class A { public.
TABLEAUX des POINTEURS TRAITEMENT DE STRUCTURES
ISBN Chapitre 10 L'implémentation des sous- programmes.
Cours LCS N°4 Présenté par Mr: LALLALI
 Formulaires HTML : traiter les entrées utilisateur
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Cours No13 Introduction à COM. Contenu du cours Qu’est-ce que COM Accéder à l’interface de Word à partir de VB Accéder à l’interface d’XL à partir de.
Les bases de l’algorithmique
QCM VBA.
Initiation aux bases de données et à la programmation événementielle
Exception Handling "Unfortunately, it's almost accepted practice to ignore error conditions, as if we're in a state of denial about errors." Bruce Eckel.
Conception de Programmes - IUT de Paris - 1ère année Les classes Introduction Déclaration d’une classe Utilisation d’une classe Définition des.
C++ BY AURÉLIEN MODULO MARION. PLAN DES TROIS PRÉSENTATIONS C++ avancé C++ orienté objet Bases de C++
Informatique 2A Langage C 5ème séance. Déroulement de la séance 5 1 ère partie Étude des chaînes de caractères 2 ème partie Les structures 3.
Transcription de la présentation:

Intégration Excel / C++ Intégration de code C++ et C dans Excel

Créer une DLL Pour créer une nouvelle librairie dynamique, il faut : Créer un projet C++, avec type DLL Inclure le projet dans une solution Pour accéder aux fonction de la DLL il faut connaître le nom sous lequel elles sont exportées : l’interface de la DLL. Excel ne peut accéder que à des fonction qui traitent des paramètres et retourne des valeurs de types reconnus. Excel ne peut pas accéder directement à des classes.

Vérifier l’interface d’une DLL avec Dependency walker Arborescence de dépendances Interface

Hello World en Excel/C++ Fichier HelloWorld.cpp #include <wtypes.h> #include <string.h> BSTR __stdcall cHello(void) { char *mess="Hello World"; BSTR ret=SysAllocStringByteLen(mess,strlen(mess)); return ret; }

Définition de l’interface Fichier HelloWorld.def LIBRARY HelloWorld EXPORTS cHello

Instruction Declare en VBA Le code C++ doit être compilé et distribué dans une librairie dynamique (DLL). On ne peut accéder que aux fonctions qui ont été exportées par le créateur de la DLL. Declare Function cHello Lib "HelloWorld.dll" () As String Function Hello() As String Hello = cHello() End Function

Passage de paramètres On peut passer des données entre VBA et C++. Si une variable est passée ByRef depuis VBA, alors en C++ le paramètre correspondant doit être déclaré comme pointeur. On peut passer un array de VBA vers C++ en passant par référence le premier élément d’un tableau de taille suffisante. On peut aussi utiliser le type Variant de VBA et y inclure un tableau.

Équivalence de Types VBA C++ Byte unsigned char Boolean [signed] short Integer [signed] [long] int Currency CY (type de <wtypes.h> Single float Double double Date DATE (type de <wtypes.h> String BSTR (type de <wtypes.h> Variant VARIANT (type de <oaidl.h>

Instruction Declare sous VBA Pour accéder à une fonction C++ dans VBA on utilise l’instruction Declare. Deux syntaxes: [Public|Private] Declare Sub name Lib “libname” [Alias “aliasname”][([arglist])] [Public|Private] Declare Function name Lib “libname” [Alias “aliasname”] [([arglist])] [As Type]

Interface sans fichier def On peut exporter des fonctions d’une DLL sans avoir recours à un fichier def. Il est impératif de précéder chaque fonction d’une directive __declspec(dllexport) Il est conseillé de débrancher la décoration C++ en utilisant la directive : extern "C"

Appel d’une DLL sans def depuis VBA Deux possibilitées: Repérer le nom décoré à l’aide de Dependecy Walker. Repérer l’ordinal. ' Fonction declaree par ordinal Declare Function Get_nprime Lib "excel_demo.dll" Alias "#2" _ (ByVal n&) As Integer ' subroutine declaree par nom Declare Sub Get_allprime Lib "excel_demo.dll" Alias "_all_prime@12" _ (ByVal n&, ByRef sz&, ByRef pr_list&)

Ordinal et nom décoré Nom décoré Ordinal