Contrôle d'Excel par MATLAB via Automation - Généralités

Apprendre à interfacer MATLAB et Excel par la programmation

Cet article est une introduction au contrôle d'Excel par MATLAB via Automation. Il fait partie d'une série d'articles dont vous trouverez la liste complète sur cette page.

Le premier chapitre de cet article introduira le besoin d'interfaçage ainsi que les différentes techniques disponibles. Le deuxième chapitre présentera les outils utilisés pour l'interfaçage via Automation. Pour finir, le quatrième chapitre listera des ressources utiles pour le développeur.

Votre avis et vos suggestions sur cet article m'intéressent !
Alors après votre lecture, n'hésitez pas : 17 commentaires Donner une note à l'article (5)

Article lu   fois.

L'auteur

Profil ProSite personnelPage personelle de Jérôme Briot (Dut)

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

I-A. Pourquoi interfacer MATLAB avec Excel ?

Bien que MATLAB et Excel soient similaires sur certains points, ils peuvent également devenir complémentaires.

Il peut être utile de stocker des résultats de calculs MATLAB dans une feuille Excel. Ceci permet l'exploitation ultérieure des résultats sur des postes où MATLAB n'est pas installé, car la suite Microsoft Office est plus répandue. Ceci permet également l'exploitation des résultats par des utilisateurs ne maîtrisant pas la programmation sous MATLAB.

Dans l'autre sens, d'Excel vers MATLAB, il peut être utile de lire des données provenant d'Excel dans le cas d'appareils de mesure ou de machines de test générant des fichiers résultats sous format Excel.

I-B. Techniques d'interfaçage

La solution la plus simple pour passer des données entre MATLAB et Excel est d'utiliser des fichiers intermédiaires de type texte. Ces fichiers sont générés ou lus avec des fonctions comme dlmread, dlmwrite, csvread ou csvwrite. Cette solution présente néanmoins trois inconvénients. Le premier est qu'il est parfois nécessaire d'importer manuellement ces fichiers sous Excel ou MATLAB (avec importdata ou l'outil uiimport). Le second inconvénient est que la cohabitation de données numériques et sous forme de chaînes de caractères peut poser des problèmes à MATLAB. Enfin le dernier inconvénient est qu'il est impossible de gérer la mise en forme des données envoyées à Excel depuis MATLAB.

Une autre solution consiste à utiliser les fonctions MATLAB xlsread et xlswrite pour lire des données depuis Excel ou écrire des données vers Excel. Cette méthode est plus souple que la précédente car elle ne nécessite pas de fichiers intermédiaires mais surtout, car elle permet de transférer à la fois des données numériques et des chaînes de caractères. C'est la méthode classiquement employée sous MATLAB.

Il existe une dernière méthode très souple qui fait appel à Automation. Comme nous allons le voir tout le long de cette série d'articles, elle permet de contrôler totalement l'écriture ou la lecture de données dans les fichiers Excel à partir de MATLAB. En contrepartie de sa souplesse, elle demande de s'intéresser au langage de programmation VBA, propre aux applications de la suite Microsoft Office.

Par souci d'honnêteté, il faut préciser que les fonctions xlsread et xlswrite utilisent elles aussi la méthode à base d'Automation. Malheureusement, les possibilités offertes par ces deux fonctions ne sont pas très évoluées. Une comparaison sera effectuée dans les articles Écriture de données et mise en forme et Lecture de données de cette série d'articles.

Pour être complet, il existe les Toolbox Spreadsheet Link EX et MATLAB Builder EX dont nous ne parlerons pas ici.

II. Outils utilisés

Si un exemple donné dans cette série d'articles ne fonctionnait pas sur votre machine, merci d'en informer l'auteur via la discussion du forum MATLAB suivante : 17 commentaires Donner une note à l'article (5)

Pensez à préciser vos versions de MATLAB, d'Excel et de Windows en précisant à chaque fois si vous utilisez la version 32 ou 64 bits de ces outils.

II-A. Microsoft Windows et Automation

La connexion entre MATLAB et Excel est établie via un serveur Automation. Microsoft est propriétaire de cette technologie et par conséquent, les méthodes présentées dans cette série d'articles ne fonctionnent donc que sous Windows.

La connexion se résume en une ligne de commande et fonctionne quelle que soit la version de Windows utilisée (XP, Vista ou 7).

L'auteur utilise pour sa part Windows 7 (64 bits).

II-B. MATLAB

Le code nécessaire pour le contrôle d'Excel utilise la syntaxe de base de MATLAB.

Les codes utilisés dans cette série d'articles fonctionnent donc avec les versions récentes de MATLAB tout comme avec les anciennes versions (R12, R13, R14).

L'auteur utilise pour sa part MATLAB R2009a.

II-C. Microsoft Excel

Excel fait partie de la suite Microsoft Office qui a subi de profondes évolutions ces dernières années.

La plupart des techniques utilisées dans cet article devraient fonctionner avec les versions 2003, 2007 et 2010 d'Excel que ce soit en 32 bits ou en 64 bits.

Les spécificités ou les limitations dues aux différentes versions d'Excel seront si possible précisées au fur et à mesure.

L'auteur utilise pour sa part Excel 2010 (32 bits).

II-D. Le langage VBA

Voici une présentation succincte des concepts et de la terminologie associés au langage Visual Basic for Application (VBA).

La syntaxe des lignes de code qui seront présentées tout au long de cette série d'articles s'inspire du langage de programmation VBA. C'est le langage utilisé avec les applications de la suite Microsoft Office (Word, Excel, PowerPoint…).

Le VBA est un langage de programmation orientée objet (POO). Nous emploierons dès lors fréquemment les termes « objet », « propriété » et « méthode » dans la suite de cet article.

On remarque l'utilisation classique en POO du point comme séparateur entre le nom des objets et le nom des actions à effectuer par exemple:

 
Sélectionnez
Excel.Workbooks.Add

Pour qualifier Excel, on parle d'application (au même titre que pour Word, PowerPoint…). L'objet Application est donc naturellement le père de tous les autres objets.

Les objets peuvent contenir d'autres objets. Certains objets appelés « collection » contiennent des objets d'un même type.

III. Où trouver de l'aide

III-A. Documentation Excel

On accède à l'aide générale d'Excel en cliquant sur Image non disponible dans la barre de menus.

Pour accéder aux outils spécifiques aux développeurs, il faut sélectionner « Référence du développeur » dans le menu Rechercher comme indiqué sur la capture d'écran suivante sous Excel 2010:

Image non disponible

Les informations essentielles se trouvent dans la section « Référence du développeur Excel 2010 » de la table des matières. Les sous-sections « Concepts » et « Référence du modèle objet Excel » sont les plus utiles.

La sous-section « Concepts » contient des informations générales sur la syntaxe et sur les procédures VBA.

La sous-section « Référence du modèle objet Excel » contient les informations détaillées de chaque objet avec leurs propriétés et les méthodes associées. Elle contient également la liste des énumérations VBA.

La documentation générale en ligne pour les développeurs Office se trouve à cette adresse : Office client development.

Selon votre version d'Excel, vous trouverez la documentation correspondante en ligne à ces adresses:

Rendez-vous ensuite dans la section « Developer Reference » ou « Reference ».

Comme pour la version hors-ligne, les sous-sections les plus utiles sont  :

  • « Concepts » : généralités sur les objets en VBA ;
  • « How Do I... » : trucs et astuces en VBA ;
  • « References » : références des objets.

Des exemples sont également disponibles sur la page VBA pour les développeurs Excel du centre pour développeurs Office de Microsoft.

III-B. Documentation MATLAB

Dans la documentation MATLAB, vous trouverez les informations utiles dans les sections suivantes:

  • MATLAB > User's Guide > External Interfaces > MATLAB COM Client Support ;
  • MATLAB > Functions > External Interfaces > Component Object Model and ActiveX.

Pour les dernières versions de MATLAB, vous trouverez les mêmes informations dans la section suivante:

  • MATLAB > Advanced Software Development > External Programming Language Interfaces > COM Interface > COM Objects.

Pour finir, ces informations sont également disponibles en ligne : Work in MATLAB® with COM components and ActiveX® controls

III-C. Developpez.com

Vous trouverez de nombreuses ressources dans les rubriques MATLAB et Excel de Developpez.com

Les forums MATLAB et Macros VBA Excel de Developpez.com contiennent également de nombreux exemples et vous pourrez bien entendu y poser vos questions.

IV. Exploiter l'enregistrement de macros Excel

Une technique simple pour s'initier à la syntaxe VBA consiste à créer une macro manuellement sous Excel. Il ensuite possible d'en analyser le contenu et de se reporter à la documentation Excel.

Tout d'abord, assurez-vous que le menu Développeur soit disponible :

Image non disponible

Ouvrez le sous-menu correspondant puis cliquez sur « Enregistrer une macro » :

Image non disponible

Vous pouvez changer le nom de la macro ou cliquer simplement sur OK pour conserver le nom Macro 1 dans la fenêtre suivante :

Image non disponible

Effectuez toutes les actions que vous souhaitez sur la feuille Excel puis cliquez sur Arrêt de l'enregistrement quand vous avez terminé :

Image non disponible

Cliquez ensuite sur Macros :

Image non disponible

Sélectionnez le nom de la macro que vous avez renseigné précédemment et cliquez sur Modifier dans la fenêtre suivante :

Image non disponible

L'IDE VBA s'ouvrira avec le contenu de votre macro.

Il ne reste plus qu'à en tirer ce qui vous intéresse.

L'enregistreur de macro est présenté en détails dans le tutoriel : Excel et l'enregistreur de macro - Enregistrer les actions répétitives dans un fichier Excel

V. Conclusion

Nous avons donc vu dans cet article que le besoin d'interfaçage entre MATLAB et Excel est bien réel. Plusieurs techniques sont disponibles mais la plus flexible reste la méthode via Automation.

Cette technique oblige à travailler sous Windows et nécessite de se former au langage VBA de la suite Microsoft Office.

Pour compléter les informations données dans cette série d'articles, vous trouverez des aides complémentaires, soit en ligne sur les sites de Microsoft ou de MathWorks, soit directement dans l'aide d'Excel et de MATLAB.

Vous pourrez également vous appuyer sur les ressources mises à disposition sur Developpez.com.

Vous pouvez maintenant poursuivre votre lecture par l'article intitulé Contrôle d'Excel par MATLAB via Automation - Connexion qui présente les premières commandes MATLAB permettant d'établir le lien entre ces deux logiciels.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Copyright © 2013-2014 Jerome Briot. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.