rapport de stage

Transcription

rapport de stage
Centre de Recherche et Développement en Horticulture
430, Boulevard Gouin
Saint-Jean-sur-Richelieu (Québec)
Canada
RAPPORT DE STAGE
AUTOMATISATION D’UNE ANALYSE SPECTRAL
MANIPULATION DE GRAPHIQUES
Stagiaire : Christophe GODART
Superviseur de stage : Denis CHARLEBOIS
Tuteur de stage : Sylvain BELAND
Page 2
Remerciements
Je tiens tout d’abord à remercier mon superviseur de stage, Monsieur Denis Charlebois,
chercheur au CRDH, pour sa présence, et son accompagnement tout au long du stage,
également pour sa constante bonne humeur ainsi que pour la confiance qu’il à pu
m’accorder.
Je souhaite en suite, remercier Monsieur Sylvain Beland, mon tuteur au Cégep, pour
avoir été présent tout au long du stage et d’avoir veiller à ce que celui-ci se déroule
dans les meilleures conditions.
Je remercie également l’ensemble des collègues du CRDH, qui m’ont accueilli, et qui
m’ont permis de découvrir de nombreuses choses dans la région.
Enfin je voudrais remercier les services des Relations Internationales de l’IUT A,
Madame Valérie BUCQUET, et du Cégep, Monsieur Jean-Sébastien COUSINEAU, sans
qui, mon stage n’aurait pas eu lieu.
Page 3
Résumé
Actuellement en DUT informatique, j’ai réalisé mon stage de fin d’études au Québec,
au sein du Centre de Recherche et de Développement en Horticulture (CRDH) de SaintJean-sur-Richelieu, dans l’équipe de Monsieur Denis Charlebois. Le but de ce stage
consiste à compléter un projet qui utilise Excel, pour récupérer des données issues de
certains appareils utilisés par les chercheurs. Ceci permettant un gain de temps
considérable et ainsi minimise les risques d’erreurs. Ce projet étant bien avancé
certaines fonctionnalités déjà, il reste néanmoins plusieurs parties à développer, par le
biais de macros qui nécessitent le VBA Excel comme langage de programmation.
Page 4
Table des matières
Remerciements ....................................................................................................................... 3
Résumé ................................................................................................................................... 4
Table des matières.................................................................................................................. 5
Introduction ............................................................................................................................ 6
Description général de l’entreprise ........................................................................................ 7
Centre de recherche et de développement en horticulture .............................................. 7
Domaines de recherche ...................................................................................................... 8
Faits, chiffres et établissement ........................................................................................... 9
Historique.......................................................................................................................... 10
Le projet ................................................................................................................................ 11
Sujet .................................................................................................................................. 11
Equipements et logiciels utilisés ....................................................................................... 11
Missions accomplies ............................................................................................................. 12
1.
Importation de plusieurs dossiers ............................................................................. 12
a. Contraintes à respecter ......................................................................................... 13
b. Développement ..................................................................................................... 13
c. Difficultés rencontrées .......................................................................................... 16
2.
Modifications des graphiques ................................................................................... 17
a. Contraintes à respecter ......................................................................................... 18
b. Développement ..................................................................................................... 18
c. Difficultés rencontrées .......................................................................................... 21
3.
Exportation vers Word .............................................................................................. 22
a. Contraintes à respecter ......................................................................................... 23
b. Développement..................................................................................................... 23
c. Difficultés rencontrées .......................................................................................... 25
4.
Conclusion ................................................................................................................. 26
Bilan technique et humain ................................................................................................... 27
Conclusion ............................................................................................................................ 28
Annexes ................................................................................................................................ 29
Page 5
Introduction
A la fin de ma deuxième année de DUT Informatique à l’IUT A de l’Université de
Lille 1, j’ai réalisé un stage en vue de la préparation de ce diplôme. J’ai eu
l’opportunité d’effectuer ce stage au Canada, dans la ville de Saint-Jean-Sur-Richelieu,
au Centre de Recherche et de Développement en Horticulture (CRDH). Ma mission en
tant que développeur VBA Excel, était d’automatiser la création de graphiques issues
de données importés, via des appareils utilisés pour déterminer la réflectance1 d’un
fruit ou d’un légume. Les appareils utilisés génèrent des fichiers de plusieurs milliers de
lignes (annexe1), rendant les analyses très compliqués à réaliser sans l’aide de
plusieurs macros Excel.
La solution choisie est de créer une macro Excel permettant d’analyser ces fichiers
texte, créer des graphiques, pour enfin les afficher dans un rapport de recherche
réalisé sur Word. Cette solution permet un gain de temps significatif et également une
assurance sur le résultat obtenu.
Dans une première partie, je présenterai l’entreprise dans laquelle j’ai été amené à
réaliser mon stage, et le projet qui m’a été confié. Ensuite, dans une deuxième partie
j’exposerai les détails techniques, les difficultés rencontrés et les solutions
développées. Enfin dans une troisième partie je ferai un bilan technique et humain,
afin d’expliquer ce que le stage a pu m’apporter.
1
Réflectance : rapport de l’intensité d’une onde incidente sur l’intensité de l’onde réfléchie
Page 6
Description général de l’entreprise
Centre de recherche et de développement en horticulture
Saint-Jean-sur-Richelieu (Québec)
Le Centre de recherche et de développement en horticulture (CRDH) fait partie du
réseau national de 19 centres de recherches exploités par Agriculture et
Agroalimentaire Canada (AAC). Le CRDH a été établi en 1912 et, depuis sa création, son
mandat a toujours été axé sur l'horticulture. Le Centre est positionné stratégiquement
pour étudier les systèmes de production et de protection de fruits et de légumes et fait
la promotion de l'utilisation de peu d'intrants, pour minimiser l'impact
environnemental et viser à améliorer la qualité des cultures avant et après la récolte.
C'est le seul centre qui possède du personnel spécialisé en ingénierie horticole et en
modélisation bioclimatique des organismes nuisibles et des cultures.
En raison de son emplacement géographique et de son expertise, le CRDH est bien
positionné pour étudier les systèmes de production et de protection des fruits et
légumes. Le Centre est un site participant du Programme des pesticides à usage limité,
qui vise à réduire l'impact sur l'environnement de l'industrie agricole et améliorer la
qualité des cultures avant et après les récoltes. Il s'agit de l'un des plus importants sites
expérimentaux pour les demandes d'homologation du Centre de la lutte
antiparasitaire dans le cadre du Programme des pesticides à usage limité, avec une
équipe de deux biologistes et leurs techniciens assignés. Ces recherches sont orientées
sur les besoins des industries canadienne et québécoise.
Les trois fermes expérimentales de CRDH représentent des zones pédologiques et
météorologiques clairement distinctes et chacune d'entre elles comporte une station
météorologique officielle d'Environnement Canada. Ces fermes sont situées à L'Acadie,
Sainte-Clotilde et Frelighsburg, au Québec.
Page 7
Domaines de recherche
Le Centre de recherche et de développement en horticulture (CRDH) se spécialise dans
la grande culture maraîchère et mène des recherches dans les secteurs de la
production, de la protection et de la conservation des produits horticoles.
Pratiques scientifiques de culture et de lutte antiparasitaire






Améliorer la précision dans le cadre de la pulvérisation de produits sur les cultures.
Application d'outils de télédétection afin d'utiliser les engrais de manière plus efficace.
Recherches axées sur des solutions de rechange aux pesticides chimiques, à l'aide de
produits de remplacement et de pesticides dérivés de matières naturelles.
Lutte contre les ravageurs des cultures à l'aide de prédateurs naturels et de
microorganismes.
Recherches sur des méthodes non chimiques (physiques ou mécaniques) de lutte
contre les parasites et les mauvaises herbes.
Développement de nouvelles stratégies de lutte contre les maladies des fruits et
légumes en champs.
Création, exploitation et prestation d'une valeur






Recherche sur de nouvelles technologies de gestion des cultures en champ et en serre.
Mise au point de systèmes prévisionnels en vue d'assurer la protection contre les
ravageurs.
Caractérisation du profil moléculaire d'espèces de Bacillaceae.
Découverte de méthodes améliorées de manipulation des fruits et des légumes et de
maintien de leur qualité après la récolte.
Étude des fruits et légumes dont les propriétés favorisent la santé au-delà de leur
valeur nutritionnelle fondamentale.
Étude de l'expression génétique et de la dynamique des populations du nématode
doré.
Page 8
Faits, chiffres et établissement




19 chercheurs et un effectif total de 120 employés.
L'emplacement principal est situé à Saint-Jean-sur-Richelieu (Québec).
Trois sous-stations de recherche sont situées à L'Acadie, à Frelighsburg et à SainteClotilde (Québec). Ces sites représentent une superficie totale de 246 hectares de
terres composées de sols d'argile, de sol limoneux-sablonneux et de sol organique.
Ressources : laboratoires, serres, chambres de croissance, salles d'élevage,
chambres froides et une salle de pulvérisation, tous dotés d'un équipement à la
fine pointe de la technologie.
Page 9
Historique
1874 : Fondation de l’Association des producteurs de fruits d’Abbotsford.
1894 : Fondation à Abbotsford de la Société de pomologie de cultures fruitières de la
province de Québec.
1929 : Inauguration du Service d’arrosage des vergers par le ministère provincial de
l’Agriculture conjointement avec la Société de pomologie.
1939 : Ouverture officielle du laboratoire situé au 182 boulevard Gouin à Saint-Jeansur-Richelieu.
1952 : Le laboratoire du Service des sciences s’installe dans ses nouveaux locaux qui
comprennent deux étages de laboratoires, bureaux et bibliothèque. Les activités du
laboratoire se divisent comme suit : section des insectes des fruits, section des insectes
des grandes cultures et section de botanique et de phytopathologie. Les chercheurs,
sous la direction de Monsieur A.A BEAULIEU collaborent avec le ministère provincial de
l’agriculture au comité de protection des plantes du Québec et à l’essai de nouveaux
pesticides et du matériel de pulvérisation.
1962 : Une réorganisation du ministère fédéral de l’Agriculture provoque la fusion du
Service des fermes expérimentales avec le Service des sciences ce qui entraine des
changements dans l’orientation de la recherche à St Jean. En plus des objectifs
traditionnels de recherche en protection des productions agricoles fruitières et
légumières, la production proprement dite et l’amélioration des cultures horticoles
s’ajoutent aux programmes de recherche.
1972 à 1980 : Expansion des travaux de recherche en production par l’implantation
d’un programme de grande envergure d’essais de différents cultivars en culture
fruitières et maraîchères. La station de recherches de Saint-Jean-sur-Richelieu s’installe
dans ses locaux actuels au 430 boul. Gouin à St-Jean : un immeuble moderne conçu
pour la recherche et doté de serres adjacentes accueille l’équipe de chercheurs et le
personnel de soutien.
Depuis 1912, l’orientation première de la station de recherché ne s’est pas détournée
des cultures fruitières et maraichères, et l’équipe scientifique et technique travaille
toujours en collaboration avec le gouvernement provincial et les associations
professionnelles de producteurs, de même qu’avec l’industrie et les universités.
Page 10
Le projet
Sujet
Certains appareils, calculant la réflectance d’un fruit et d’un légume, peuvent produire
de nombreux fichier texte (.txt) contenant eux même plusieurs milliers de lignes, ce qui
rend l’analyse de ces fichiers, impossible à faire sans l’aide d’un ordinateur.
Ce projet est composé de plusieurs parties :
-Importation des fichiers texte sur Excel
-Analyse de ces fichiers (moyenne, écart type, coefficient de variation)
-Création de graphiques
-Exportation sur Word
Plusieurs stagiaires ont déjà commencé celui-ci, ainsi les trois premières parties existe
déjà, mais peuvent être améliorés. Avant mon arrivée il est possible d’importer un seul
dossier à la fois, d’y faire les analyses et de générer les graphiques de ces données.
Pour faire de même sur un autre dossier, il faut relancer la macro.
Mon but est donc de compléter le projet, en modifiant certaines parties, pour rendre
le projet plus rapide, plus complet, et plus interactif.
Equipements et logiciels utilisés
En ce qui concerne les équipements utilisés, je dispose d’un ordinateur, sous
Windows XP.
Le projet est réalisé sur Excel, sous forme de macros, le langage est donc le VBA Excel.
Page 11
Missions accomplies
Tout au long de mon stage, je vais devoir reprendre toutes les parties du projet, afin de
les modifier. Je vais présenter chaque partie de mon travail dans l’ordre chronologique.
1. Importation de plusieurs dossiers
Lorsque j’ai découvert la macro, celle-ci demandait à l’utilisateur de choisir un dossier
contentant les fichiers de réflectance. Une fois cela fait, la macro procédait à
l’importation des fichiers texte.
Ma première mission a été d’ajouter la possibilité d’importer plusieurs dossiers et y
inclure les sous-dossiers si ceux-ci existent. Ne connaissant pas VBA, ni le projet en luimême, cette première partie m’a permis de connaître le déroulement de la macro,
d’un point de vue développeur, et de me familiariser avec le langage de
programmation.
Je ne m’étais jamais intéressé à la programmation sous Excel. Ne trouvant pas une très
bonne documentation sur internet, je me suis tourné vers un forum d’entraide
(www.developpez.net), qui m’a permis de vite me familiariser avec le langage, et donc
avec le projet qui m’a été confié.
Page 12
a. Contraintes à respecter
Voici les contraintes que je devais respecter :
-
-
La sélection de plusieurs dossiers ou sous-dossiers doit être faite de manière
pratique et rapide. L’utilisateur ne doit pas relancer la macro pour inclure les
sous-dossiers
La date de dernière modification doit apparaître lors de la sélection des sousdossiers.
b. Développement
Tout d’abord j’ai commencé par coder une fonction permettant de déterminer si un
dossier sélectionné contient de sous-dossiers. Pour cela j’ai ajouté le nom de ceux-ci à
une collection2 en incluant la date de dernière de modification.
For Each d In dossier.SubFolders
listDossier.Add d.name +“..” + Left(CStr(FileDateTime(Repertoire +“\”+ d.name)),10)
Next
Ceci donne une chaine de caractère du type :
ASD-indico1..12/12/2012
Ainsi je récupère tous les noms de sous-dossier et leur date de dernière modification,
si la collection est vide cela signifie que le dossier ne contient pas de sous-dossier. La
deuxième contrainte est donc respectée.
Une fois que j’ai cette collection je peux créer une interface graphique rendant
possible le choix des sous-dossiers à inclure.
Je choisi de faire une interface le plus visuelle possible afin de faciliter le choix de
l’utilisateur. J’inclus également une possibilité de tri pour se retrouver plus facilement
dans le cas où un dossier contiendrait un nombre important de sous-dossiers.
2
Collection : ensemble de variables regroupées
Page 13
Interface de choix des sous-dossiers
Page 14
Cette interface permet de sélectionner les sous-dossiers que l’on veut inclure dans
l’importation. Dans la liste « Dossier » sur la gauche, sont affichés tous les sousdossiers qui appartiennent au dossier que l’on a sélectionné précédemment. Les
boutons au centre (Ajouter, Retirer…) permettent d’interagir avec les listes afin de
choisir quels dossiers seront ajoutés. Lorsque l’on appui sur le bouton Ajouter cela
appelle une fonction :
Private Sub Ajouter(Source As String)
If Source <> ‘’ ‘’ Then
List2.AddItem Source
List1.RemoveItem(List1.ListIndex)
End if
End Sub
Et ensuite met à jour le nombre d’éléments dans la liste.
Les autres boutons fonctionnent sur le même principe. J’ai également ajouté un tri par
nom ou par date, de manière à faciliter la recherche d’un dossier dans le cas il y aurait
beaucoup de dossiers. J’ai choisi de faire ces tris avec un tri à bulle, en effet le nombre
de dossiers n’étant jamais très élevé le tri à bulle est suffisant, est se fait de manière
instantanée.
Le bouton Valider permet de terminer la sélection des dossiers. Si la liste
« Sélectionné » n’est pas vide, alors on remplit une collection avec les éléments de
celle-ci, ce qui permettra d’importer les dossiers désirés. Si cette liste ne comporte pas
d’élément, alors on redemande à l’utilisateur de sélectionner un dossier.
Page 15
c. Difficultés rencontrées
La première difficulté que j’ai rencontré a été de réutiliser le code déjà existant. En
effet étant au début du stage, je ne connais pas très bien tout le code qui a déjà était
réalisé. Pour inclure d’autres dossiers je dois utiliser le même procédé que les anciens
stagiaires ont utilisé. Etant donné que l’importation d’un dossier ne sait fait pas à
partir d’une fonction mais dans le déroulement principal de la macro, il m’est
impossible de simplement appeler une fonction sur chaque élément de la liste de sousdossiers à inclure.
Pour surmonter le problème j’ai décidé de boucler sur l’algorithme principal avec tous
les sous-dossiers sélectionnés. Voici l’algorithme utilisé :
1.
2.
3.
4.
Sélection d’un dossier
Si celui-ci contient des sous-dossiers -> affichage de l’interface graphique
Importation du dossier si celui-ci contient des fichiers texte
Si la collection contenant les sous-dossiers n’est pas vide on repart au début sans
permettre le choix d’un dossier puis on supprime l’élément de la collection.
Avec cette algorithme il n’est plus n’est plus nécessaire de relancer la macro pour
gérer plusieurs dossiers.
De la même manière il faut effectuer les analyses (moyenne, écart type, coefficient de
variation) sur chaque dossier que l’on a importé précédemment. Pour cela j’ai
procéder de la manière suivante :
For Each feuille In ActiveWorkbook.WorkSheets
Faire les analyses
Next
C’est-à-dire qu’on se place sur tous les onglets du document (un onglet correspond à
un dossier) et on fait la phase d’analyse, qui a été développé par un autre stagiaire.
Une fois que les analyses sont faites, on propose à l’utilisateur de créer des graphiques
de ces analyses.
Page 16
2. Modifications des graphiques
Cette partie du projet a été le point principal de mon stage, en effet n’étant pas
possible de déterminer l’allure de la courbe, il faut pouvoir être capable de modifier
les échelles, afin d’avoir un résultat plus compréhensible. Modifier les échelles d’un
graphique est faisable sous Excel, mais pour cela il faudrait arrêter la macro, Monsieur
CHARLEBOIS voulait donc une possibilité de les modifier au sein de la macro, ceci de
manière plus simple. Ces graphiques contiennent deux courbes, une pour les valeurs
moyennes de réflectance, et l’autre contenant les valeurs du coefficient de variation
pour chaque longueur d’onde (voir annexe)
Page 17
a. Contraintes à respecter
Les contraintes à respecter sont :
-La modification des échelles doit se faire de manière interactive et rapide.
-Possibilité d’appliquer les échelles choisit à tous les graphiques qui ont été crée
-Pouvoir réinitialiser les graphiques pour revenir aux échelles de départ
-Cacher un axe lorsqu’on ne désire pas afficher sa courbe associée
b. Développement
J’ai commencé par développer une interface graphique dans laquelle il est possible de
visualiser tous les noms de graphique ainsi que leur dossier associé, afin de mieux se
repérer.
Interface de menu graphique
Page 18
Dans la liste, apparaissent tous les graphiques crées précédemment par la macro. Le
bouton « Visualiser » permet de voir et de modifier un graphique sélectionné. Le reste
de cette interface sera expliqué dans la prochaine partie.
J’ai ensuite développé une interface graphique dans laquelle je pourrais rentrer dans
valeurs pour modifier les valeurs des axes du graphique.
Interface du changement d’échelles
Ensuite j’ai développé des fonctions permettant de modifier la valeur maximale et
minimale d’un axe :
ActiveChart.Axes(xlCategory).MinimumScale = longueurMini.Value
Ceci permet de modifier la valeur minimum de l’axe horizontal en donnant la valeur du
textbox3 associé dans l’interface graphique.
Il faut encore donner la possibilité de rendre l’interface graphique interactive avec le
graphique pour cela j’ai choisi d’inclure ces lignes de code dans une fonction nommée
« longueurMini_Change() »
Cette fonction est exécutée à chaque fois que la valeur de longueurMini est modifiée.
3
textbox : Zone de texte ou champ de saisie
Page 19
Il faut donc répéter l’opération pour les trois axes et il est possible de changer toute les
valeurs du graphique.
J’ai également donné la possibilité de cocher la case « Auto » ceci laisse Excel mettre
des valeurs qui sont censés permettre d’afficher la totalité des courbes, en utilisant le
code suivant :
ActiveChart.Axes(xlCategory).MinimumScaleIsAuto = True
Ceci permet donc de respecter la première contrainte, les changements sont
instantanés et de manière interactive.
Lorsque l’on décoche la checkbox4 à côté des noms des courbes Réflectance et
Coefficient de variation, la courbe associée n’apparait plus. Ceci peut être utile si on
s’intéresse uniquement à l’une des deux courbes. La désélection d’une checkbox
appelle la ligne de code suivante :
ActiveChart.SeriesCollection(1).Format.Visible = msoFalse
Ainsi, il ne reste qu’une seule courbe affichée à l’écran et donc un des deux axes n’est
plus utile il est donc intéressant de la camoufler rendant le graphique plus facile à
analyser.
ActiveChart.Axes(xlValue).TickLabelPosition = xlNone
Ceci répond à la quatrième contrainte.
Lorsque la fenêtre est initialisée j’ai choisi de sauvegarder les valeurs minimale et
maximale des trois axes, afin de rendre possible la réinitialisation du graphique si
jamais les modifications d’un utilisateur ne lui plait pas. Ce bouton « Réinitialiser »
permet donc de remettre les échelles comme lors de l’ouverture de graphiques, grâce
aux valeurs sauvegardées à l’initialisation.
4
checkbox : case à cocher
Page 20
Enfin le bouton « Appliquer partout » permet de modifier tous les graphiques du
document Excel et de leur appliquer les valeurs contenues dans les textbox présent sur
l’interface graphique.
c. Difficultés rencontrées
La première difficulté a été de trouver les fonctions permettant de modifier les axes
des graphiques. En effet, il ne suffit pas de demander des valeurs à un utilisateur, il
faut pouvoir en faire quelque chose.
Pour résoudre ce problème et bien d’autres durant mon stage, j’ai découvert une
fonctionnalité d’Excel, l’enregistreur de macro, il permet d’effectuer des opérations à
la main, et une fois terminé, il donne le code VBA qu’il a utilisé. Ceci m’a été très utile
pour trouver comment modifier les axes avec du code VBA. Il n’est pas facile de
différencier les axes :
ActiveChart.Axes(xlValues)
ActiveChart.Axes(xlCategory)
ActiveChart.Axes(xlValues, xlSecondary)
Cet enregistreur de macro m’a permis de mieux me repérer.
La deuxième difficulté, et de loin la plus grande, a été de gérer les erreurs. En effet en
voulant rendre la modification des échelles interactive avec l’utilisateur, cela a
compliqué les choses.
J’ai réussi à surmonter ce problème à l’aide de nombreux tests avec tous types de
valeurs (valeur négative, positive, nulle, alphabétique…). Etant donné que les valeurs
des axes sont modifiées à chaque fois qu’une valeur est changée, cela complique la
tâche. Il est donc nécessaire de faire des vérifications du type :
If IsNumeric(reflectanceMini.Value) And reflectanceMini.Value >=0 Then
Modifier valeur de l’axe
End if
Page 21
3. Exportation vers Word
Maintenant que la création et la modification de graphiques fonctionne, il faut pouvoir
ajouter ces graphiques dans les rapports sur Word. Cette partie est primordiale dans le
projet, en effet, le rapport de recherche est le « résultat » de la recherche, il faut donc
concevoir un moyen d’utiliser les graphiques générés par la macro, qui permettrait de
les utiliser de manière rapide tout en gardant la possibilité de les placer aux endroits
voulus.
Page 22
a. Contraintes à respecter
Voici les contraintes que je devais respecter :
-La taille de fichier ne doit pas augmenter de façon exponentielle lorsqu’on ajoute les
graphiques.
-Les graphiques doivent être placés à la page que l’utilisateur choisit.
-On peut mettre jusqu’à 6 graphiques sur une page.
b. Développement
J’ai décidé de réutiliser l’interface que j’avais déjà utilisé pour les graphiques :
De cette manière un utilisateur peut alterner entre modifier des graphiques et les
exporter vers Word de manière très simple. Cependant, étant donné que j’ai utilisé un
bouton bascule pour l’exportation, j’ai choisi que lorsqu’on appui sur ce bouton, cela
Page 23
entraine une modification de l’interface graphique, qui redevient comme
précédemment, lorsque que l’on a terminé.
Lorsque le bouton bascule « Vers Word » est activé, la multi sélection dans la liste est
activée également :
ListeGraphique.MultiSelect = fmMultiSelectMulti
Ceci permet de sélectionner le nombre de graphique que l’utilisateur désire exporter.
L’exportation nécessite forcément d’ouvrir Word ainsi que le document dans lequel les
graphiques iront se placer :
Set WordApp = CreateObject(‘’word.application’’)
Set WordDoc =
WordApp.Documents.open(Application.GetOpenFilename(‘’Fichier Word(*.doc)))
Pour respecter la première contrainte, et donc éviter que les documents ne fassent
plusieurs mégaoctets, j’ai décidé d’exporter les graphiques au format ‘’image’’ et non
au format ‘’graphique’’.
wordApp.Goto(What :=wdGoToPage,
name :=numeroPage)).InlineShapes.AddPicture
Cette fonction permet également de choisir à quelle page les graphique seront placer.
Ce qui résout les deux premières contraintes.
Lorsque l’on exporte les graphiques vers Word, il faut définir la taille de l’image, selon
le nombre de graphiques. Une partie de cette fonction est affichée en annexe, ainsi
qu’un exemple de document Word après l’exportation de 6 graphiques.
Page 24
c. Difficultés rencontrées
La principale difficulté a été de piloter Word à partir d’Excel. En effet l’enregistreur de
macro d’Excel ne tient pas compte du changement d’application, il a donc fallu trouver
d’autres moyens pour résoudre ce problème. Il m’a été nécessaire de tester de
nombreuses fonctions pour trouver comment placer les graphiques à une page précise
d’un document Word.
Lorsque j’ai commencé l’exportation, le document dépassait très vite plusieurs
mégaoctets pour un seul graphique, cela était bien sur obligatoire à modifier. J’ai donc
complétement changé d’idée en trouvant sur internet (www.developpez.net) un
moyen d’enregistrer un graphique au format image. Après divers tests je me suis
rendu compte que cette solution est bien plus efficace, malgré le fait de devoir
enregistrer l’image du graphique sur le disque dur, procéder à l’importation sur Word,
et ensuite supprimer les images du disque dur. Cette opération se fait instantanément
même lorsque l’on veut exporter plus de 10 graphiques d’un seul coup.
Page 25
4. Conclusion
Malgré un langage de programmation que je ne maitrisais pas, un projet déjà bien
entamé, j’ai pu faire avancer ce projet pour le mener à son terme. Ces trois mois de
stage ont été très enrichissant, j’ai appris le VBA Excel, un environnement de
développement à qui je n’avais jamais prêté attention. J’ai également pris en main un
projet de manière autonome, en respectant la demande de Monsieur CHARLEBOIS,
mais aussi en proposant certaines modifications que j’ai développé.
Durant ce stage j’ai pu mettre en œuvre la plupart de notions abordées lors de mon
apprentissage en DUT Informatique.
Page 26
Bilan technique et humain
La manière de travailler en entreprise change radicalement de celle à l’IUT. En effet, à
l’IUT lorsque je travaillais sur un projet, celui-ci était sur une durée assez courte, et il
ne représentait pas autant de travail que peuvent représenter les projets sur lesquels il
est possible de travailler en entreprise.
Ce stage m’a permis de réellement découvrir le monde du travail, il a fallu m’intégrer
dans l’entreprise et dans l’équipe de recherche. Etant seul à travailler sur le projet, il a
été nécessaire d’en connaitre l’intégralité afin de pouvoir avancer efficacement. Une
communication importante avec Monsieur CHARLEBOIS, qui est le client pour ce projet,
était primordiale, pour bien comprendre le besoin, mais également pour assimiler ce
qui était voulu au terme du projet.
Cela m’a également permis de développer sur les logiciels propriétaire de Microsoft et
de découvrir un nouveau langage de programmation, le VBA Excel. Les cours qui m’ont
été enseigné à l’IUT ont été très importants pour bien assimiler ce nouveau langage.
Page 27
Conclusion
Après l’apprentissage du VBA, j’ai pu compléter ce projet et le rendre plus interactif.
Celui-ci permet maintenant de modifier les graphiques, de les exporter dans un
document Word.
Au cours de ce stage, j’ai eu l’occasion d’apprendre un nouveau langage de
programmation, mais également de développer sur un environnement que je
n’utilisais que très rarement, Excel. J’ai également développé mes aptitudes à travailler
en autonomie, sur un projet que j’ai intégré après que plusieurs développeurs aient
déjà travaillé dessus. J’ai appris à travailler pour un client et donc à respecter ses
exigences.
Page 28
Annexes
Exemple de fichier de réflectance
Text conversion of header file \Projet sols\P. Vigneault PHOTOS ET SPECTRES Échantillons de
sols\P.Vignault Spectres sol humide 1 hre sol 01 a 10\SH 1h E01-1 00001.asd
------------------------------------------------------------The instrument number was 6454/2
New ASD spectrum file: Program version = 6.00 file version = 8.00
Spectrum saved: 03/09/2012 at 09:10:33
VNIR integration time : 68
VNIR channel 1 wavelength = 350 wavelength step = 1
There were 60 samples per data value
xmin = 350 xmax= 2500
ymin= -0.1 ymax= 1.25
The instrument digitizes spectral values to 16 bits
SWIR1 gain was 190 offset was 2109
SWIR2 gain was 85 offset was 2106
Join between VNIR and SWIR1 was 1000 nm
Join between SWIR1 and SWIR2 was 1830 nm
VNIR dark signal subtracted
60 dark measurements taken Fri Mar 09 09:03:54 2012
DCC value was 0
Data is not compared to a white reference
There was no foreoptic attached
Spectrum file is raw data with embedded reference
GPS-Latitude is S0
GPS-Longitude is E0
GPS-Altitude is 0
GPS-UTC is 00:00:00
Smart Detector
Serial# 0
Signal (A) 0.000E00
Dark (A) 0.000E00
Ref (A) 0.000E00
Status 0 - Uninitialized
Gain E-4
Averaging 0
Temp (C) 0.0
Humid (%) 0.0
Wavelength
SH 1h E01-1 00001.asd
350
1.54252801305576E-02
351
1.54910156269128E-02
352
1.62427606413198E-02
353
0.016517301418809
354
1.64047210957721E-02
355
1.61417128941788E-02
356
1.60596014166661E-02
357
1.65196977847879E-02
358
0.01758944660475
359
1.76747781741983E-02
360
1.63800125731973E-02
361
1.81022262465129E-02
362
1.86589740209758E-02
363
1.75551257084318E-02
364
1.80599641986729E-02
365
1.91869948091735E-02
366
1.93803206021956E-02
367
1.76635150470614E-02
368
1.79845805227805E-02
369
1.85596221141269E-02
370
1.83401622631475E-02
371
1.84520289479162E-02
372
0.01780126692817
373
0.017138507898947
374
1.79599832588071E-02
Ceci n’est que le début du fichier. Le fichier comporte 2150 mesures.
Page 29
Exemple de graphique
Page 30
Fonction exportation vers Word
Function exportWord (numPage as String, DocOK as Boolean)
On Error Resume Next
Set WordApp = GetObject(, "word.application")
If WordApp Is Nothing Then
Set WordApp = CreateObject("word.application")
WordApp.Visible = False
End
If Not DocOK Then
Set WordDoc = WordApp.Documents.Open(Application.GetOpenFilename("Fichier Word (*.doc),
*.doc"))
DocOK = True
nom = WordDoc.name
End If
nbGraph = NGraphe.Count
nbWord = WordDoc.Shapes.Coun
WordDoc.Bookmarks("\endofdoc").Select
If numpage <= WordDoc.BuiltinDocumentProperties("Number of Pages") Then 'And pageneed <=
WordDoc.BuiltinDocumentProperties("Number of Pages") Then
For Each ch In ThisWorkbook.Charts
For Each graph In NGraphe
If ch.name = graph And Not graphOK Then
nbWord = nbWord + 1
courant = courant
If courant = 7 Then 'cas ou il y a pas plus de 6 graphiques, on passe a la page suivante
numpage = numpage + 1
courant = 1
End If
WordApp.Selection.Goto(What:=wdGoToPage, name:=(numpage)).InlineShapes.AddPicture
Filename:= _
Page 31
savepath & "\" & ch.name & ".jpg", LinkToFile:=False, SaveWithDocument:=True
If nbGraph > 4 Then
'5 et plus
With WordDoc.InlineShapes(1)
.Height = 200 'redimensionne hauteur image
.Width = 230 'redimensionne largeur image
.ConvertToShape
End With
WordDoc.Shapes(nbWord).name = ch.name 'On renome l'image que l'on ajoute avec le
nom du graph
With WordDoc.Shapes(nbWord)
.Top = IIf(courant <= 2, 150, (IIf(courant <= 4, 350, 550))) 'place le graphique dans le
document
.Left = IIf(courant Mod 2 <> 0, 75, 315) 'operateur ternaire
.ZOrder 4
'l'image est au dessus du texte
End With
End If
End function
Page 32
Exemple de document Word
Page 33