Visual Basic et Excel

Transcription

Visual Basic et Excel
Visual Basic et Excel
(Résumé)
Le concept OLE (Object Linking and Embedded) existe depuis 1990 et a été implanté
par diverses technologies. Il consiste à permettre à un logiciel X tournant sous Windows
d'accéder à la librairie d'objets d'un autre logiciel Y et d'incorporer ces objets à son
application. Par exemple, en Word, on peut insérer un lien vers une feuille Excel en afficher
une partie du contenu dans un cadre placé sur une page. Lors de l'affichage ou de
l'impression de cette page, le contenu du cadre proviendra directement du fichier Excel. De
plus, si par la suite le fichier Excel est modifié, l'ouverture subséquente du document Word
incorporera automatiquement les nouvelles données.
En Visual Basic, ce concept était supporté par la technologie «OLE 2» dans la version
VB5 du logiciel par la technologie COM pour la version VB6 et par le FrameWork NET pour
la version VBNET. Pour le programmeur, cela représente la possibilité, à l'intérieur d'une
application, d'utiliser tout logiciel compatible (dont entre autres la suite Office) comme sousprogramme et d'utiliser ainsi les objets qui y sont développés. Par exemple, si on doit créer
une table de simulation sur un ensemble de données, ce qui demanderait des heures de
programmation très serrée, on peut tout simplement ouvrir une feuille Excel en arrière-plan
(c'est-à-dire dans la mémoire de l'ordinateur) y placer les données à analyser et les formules
que Excel offre et récupérer dans une variable tableau VB le contenu de la zone des
résultats produits automatiquement.
Dans le cadre du TP4, on utilise la facilité de mise en forme de Excel pour présenter
des résultats qui, encore là, demanderait des heures de travail de programmation pour
imprimer des rapports. Au lieu de programmer chacune des lignes du rapport, sa couleur de
fond ou de texte, les entêtes ou pieds de pages, les graphiques, etc., on fait tout ce travail
dans Excel en utilisant l'éditeur du logiciel, puis il n'y a plus qu'à placer par programmation
les données dans les bonnes cellules et le travail se fait «tout seul».
Références
Comme VB ne connait pas systématiquement TOUT les objets développés pour
TOUS les logiciels présents sur l'ordinateur, il est nécessaire de lui indiquer où trouver les
librairies (des fichiers DLL en général) contenant les classes d'objets qui nous intéressent.
La commande «Projet/Ajouter une références» permet de le faire. Comme Excel est
un logiciel «pré-NET» on trouvera son inscription (Microsoft Excel xx) dans la liste des objets
«COM» (onglet correspondant). xx représente ici la version du logiciel installé. Cette liste
regroupe les librairies qui ont été déclarées à Windows lors de l'installation des différents
logiciels et qui se retrouvent pour la plupart dans le dossier «System32» de Windows. Après
avoir sélectionné la librairie et avoir validé ce choix, la référence apparaitra dans la fenêtre
de l'explorateur de projets sous la rubrique «Références.
Mais plus important, toutes les classes des objets développées pour le logiciel seront
utilisables directement : lors de la déclaration d'une variable, ces classes seront intégrées à
la liste des types possibles et on pourra y affecter des variables comme
Dim UneVar As Excel.uneclasse
IFT 1975 / H05
Page 1
Excel et VB.
Fonction CreateObject
Définir une variable objet n'est pas, comme chacun le sait, créer un objet. Dans le cas
d'une application, il faut que celle-ci soit intégrée à Windows. VB offre deux fonctions pour
lancer une application «externe». La fonction CreateObject va servir pour créer une nouvelle
application (document Word, tableur Excel, présentation PowerPoint, etc) alors que
GetObject permettra de lancer une application à partir d'un document existant.
' Séquence permettant d'écrire "Bonjour" sur une nouvelle feuille
Dim UneApplic As Object
'On définit une variable Objet
UneApplic = CreateObject("Excel.Application")
'Objet créé.
Excel est «lancé» en mémoire mais il n'y a pas de classeur ouvert fenêtre vide).
Dim UnClasseur As Excel.WorkBook
UnClasseur = UneApplic.Add
'On définit une variable
'Un classeur «neuf» est créé.
Excel peut gérer plusieurs classeurs à la fois. Ici il y aura un seul classeur d'ajouté et la
variable «UnClasseur» y fait référence. Un nouveau classeur contient généralement 3
feuilles numérotées de 1 à 3.
Dim UneFeuille As Excel.WorkSheet
UneFeuille = UnClasseur.Sheets(1)
'On définit une variable
'qui «pointe» vers la feuille.
On peut donc dès lors utiliser chacune des cellules de la feuille au moyen de la propriété
«Cells(#ligne, #colonne)» qui définit l'ensemble des cellules.
UneFeuille.Cells(2, 2) = "Bonjour"1) 'Placé dans la cellule B2.
Pour l'instant, la feuille est uniquement en mémoire. On peut dès lors utiliser la feuille à
volonté et y utiliser toutes les fonctions et commandes dont elle dispose. Ensuite, on peut par
exemple sauvegarder le classeur feuille refermer la feuille et l'application :
UneFeuille.SaveAs("C:\Montest.xls")
UneApplic.Quit
Ou encore, on peut rendre visible la feuille et le classeur et laisser l'utilisateur sauvegarder et
refermer l'application :
UnClasseur.Application.Visible = True
Unefeuille = Nothing
UnClasseur = Nothing
'ou UneApplic.Visible = True
Fonction GetObject
Toutes les commandes précédentes s'appliquent aussi bien si l'on désire ouvrir une
application déjà créée. On utilise alors GetObject pour lancer l'application à partir du fichier
et tout se passe comme lorsque l'on double-clique sur le fichier : le logiciel correspondant est
lancé automatiquement et le fichier est ouvert. Sauf que le tout n'est pas visible à l'utilisateur.
Dim UnClasseur As Excel.WorkBook
'On définit la variable
UnClasseur = GetObject("chemin et nom d' nichier")
...
Pour le TP4, une fois le fichier ouvert il s'agit simplement de placer les informations
obtenues de la base, ligne par ligne, aux bons endroits. Le reste de la feuille se «emplit de
lui-même grâce aux formules qui s'y trouvent déjà.
IFT 1975 / H05
Page 2
Excel et VB.