Mise en place d`un SGBD pour la saisie de données des états
Transcription
Mise en place d`un SGBD pour la saisie de données des états
ROLLINGER Romain Master Territoire, Patrimoine et Environnement Spécialité Système d’Information Géographique et gestion de l’espace Mise en place d’un SGBD pour la saisie de données des états des lieux, des diagnostics et des interventions des éléments des milieux naturels Maîtres de stage : Rémy MARTIN, Directeur Département Système d’Information Géographique Sylvain WILLIG, Directeur Département Biodiversité et Gestion des milieux 2011 1 Sommaire Remerciements ........................................................................................................................... 6 Introduction ................................................................................................................................ 8 I – Le bureau d’étude ASCONIT Consultants ......................................................................... 10 I.1 – L’organisme ................................................................................................................. 10 I.1.1 – La situation............................................................................................................ 10 I.1.2 – Asconit Consultants de manière générale ............................................................. 11 I.2 – Le département D4 de façon plus détaillé .................................................................... 15 I.2.1 – Le savoir-faire du service...................................................................................... 15 I.2.2 – Les missions du service ........................................................................................ 16 I.3 – Présentation du projet de gestion de base de données ................................................. 17 I.3.1 – Le cadre du projet ................................................................................................. 17 I.3.2 – Les attentes du stage et la gestion de projet .......................................................... 18 II – L’outil de saisie, de traitement et de restitution des données terrain ................................. 22 II.1 – Le travail préliminaire ................................................................................................ 22 II.1.1 – La sélection de l’existant ..................................................................................... 23 II.1.2 – Les données à intégrer ......................................................................................... 26 II.1.3 – Choix des outils ................................................................................................... 35 II.1.4 – L’interface graphique de l’outil ........................................................................... 37 II.2 – La phase de conception du nouvel outil ..................................................................... 47 II.2.1 – La méthode MERISE ........................................................................................... 47 II.2.2 – La conception de la base de données ................................................................... 51 2 II.3 – La partie développement............................................................................................. 63 II.3.1 – La création de l’interface graphique : les formulaires ......................................... 63 II.3.2 – La programmation des formulaires de manière générale .................................... 65 II.3.3 – La programmation de codes plus spécifiques sur les formulaires ....................... 74 II.3.4 – La programmation sur les Etats : l’affichage des photographies ......................... 82 III – Les outils de production automatique de cartes ............................................................... 86 III.1 – Les besoins ................................................................................................................ 86 III.1.1 – Le processus de création actuel .......................................................................... 86 III.1.2 – Mon objectif ....................................................................................................... 88 III.2 – La partie développement ........................................................................................... 88 III.2.1 – Choix du langage de programmation ................................................................. 88 III.2.2 – Les outils ............................................................................................................ 89 Conclusion ................................................................................................................................ 92 Lexique ..................................................................................................................................... 94 Références ................................................................................................................................ 96 Table des illustrations............................................................................................................... 98 Annexes .................................................................................................................................. 102 Annexe 1 : Planning de stage ............................................................................................. 103 Annexe 2 : Modèle Conceptuel et Physique de Données ................................................... 104 Annexe 3 : Guide d’utilisation ........................................................................................... 106 Annexe 4 : Guide d’administration .................................................................................... 130 3 4 5 REMERCIEMENTS Au terme de ce stage, au sein du service D4 du bureau d’études ASCONIT Consultants à Lyon, je voudrais remercier en premier lieu Rémy MARTIN, Directeur du département « Système d’Information Géographique » et maître de stage, de m’avoir accueilli dans son équipe et de la confiance qu’il m’a accordée afin de réaliser mon stage ; activité professionnelle nécessaire à la validation de mon master professionnel. Ses conseils, sa disponibilité et l’attention qu’il a su me porter tout au long de ces six mois m’ont permis de réaliser ce stage dans de très bonnes conditions. Je tiens également à exprimer ma gratitude à Sylvain WILLIG, Directeur du département « Biodiversité et Gestion des milieux » ingénieur écologue et SIG, pour avoir suivi l’évolution de ce projet, dont il est à l’origine, malgré sa localisation (Nancy) et son emploi du temps chargé, afin de m’orienter dans la marche à suivre. Pareillement, je souhaiterais remercier Florence BARANGE et Céline THYRIOT, les deux géomaticiennes du service SIG sur Lyon pour m’avoir aidé dans l’orientation de la conception de l’outil SIG, même si celui-ci n’a pu être développé. Je voudrais aussi exprimer ma reconnaissance envers les autres membres du bureau : Sylvie TORTILLIER, Néna HENDRICK, Cédric BORNUAT et Étienne GUILLOY pour leur accessibilité et leur bonne humeur. Plus généralement je remercie toutes les personnes qui ont participé à mon intégration, et qui ont contribué, de près ou de loin, au bon déroulement de ce stage. 6 7 INTRODUCTION Ce compte rendu d’activités professionnelles s’inscrit dans le cadre d’un stage étudiant effectué en fin d’année du Master professionnel « Territoire, Patrimoine, Environnement – Spécialité : Système d’Information Géographique et gestion de l’espace », dispensé à l’Université Jean Monnet de Saint Etienne en partenariat avec l’ENISE (École Nationale d’Ingénieurs de Saint Etienne). Le stage, d’une durée de six mois, fait partie intégrante du deuxième semestre et n’est autre qu’une application de la formation reçue dans une mise en situation professionnelle. Il a pour but, non seulement l’approfondissement des connaissances enseignées et l’utilisation des outils informatiques, mais il permet aussi de nous rendre autonomes et de nous intégrer dans la vie active. Réalisé au sein du bureau d’études ASCONIT Consultants de Lyon, ce stage a porté sur la problématique de l’Élaboration d’outils pour la gestion des données des études de milieux naturels. Bureau d’études indépendant, spécialisé en aménagement du territoire, environnement, gestion des ressources aquatiques et système d’information, ASCONIT met ses compétences au service de la gestion durable des ressources et des milieux. Le SIG permet ici de réaliser toute production cartographique mais aussi des outils métiers pour faciliter et augmenter la productivité. C’est dans ce cadre que je suis intervenu pendant la durée du stage. Le contenu du présent compte-rendu d’activités professionnelles est divisé en trois parties. La première nous présentera la société dans laquelle j’ai évoluée à travers ses origines, sa structure et ses missions. La partie centrale de ce rapport est ensuite abordée en trois points. L’un portant sur tout le travail préliminaire que le projet nécessitait. Un deuxième traitant la phase de conception du stage avec la refonte et l’amélioration de l’outil de saisie des données terrain et de leur synthèse. Le troisième point détaille évidemment le processus de développement, qui permet l’automatisation d’un grand nombre d’opérations pour les utilisateurs. La troisième partie abordera une partie du stage qui n’a pas pu être concrétisé mais dont la réflexion avait déjà débuté. Ce rapport de stage, traitant d’un projet précisément défini, présentera tout au long des différentes phases abordées : les raisons du travail demandé, les méthodologies appliquées pour la réalisation de ces différentes étapes, mais aussi les résultats obtenus avec si possible une analyse critique de ces derniers. 8 9 I – LE BUREAU D’ETUDE ASCONIT CONSULTANTS I.1 – L’ORGANISME I.1.1 – LA SITUATION Mon stage s’est déroulé dans la région Rhône-Alpes, deuxième région de France en superficie et en population, au siège du bureau d’études ASCONIT Consultants. Bien que le siège soit à Lyon, cette société a un champ d’action qui s’étend sur tout le pays mais également à l’international grâce aux agences qui la constituent et à la renommé qu’elle a su acquérir avec l’expérience des différentes études réalisées. Figure 1: Carte de situation [Plaquette ASCONIT Consultants –Mieux nous connaître, Décembre 2008] 10 I.1.2 – ASCONIT CONSULTANTS DE MANIERE GENERALE Créée comme Société par Actions Simplifiées le 8 Juin 2001, ce bureau d’études en Environnement est spécialisé dans la gestion de la ressource en eaux et milieux aquatiques (hydrobiologie et hydrogéologie), l’aménagement et le développement durable des territoires ainsi qu’en systèmes d’information (SGBD, SIG, NTIC [Nouvelles Technologies de l’Information et de la Communication]) dédiés à ces métiers. Cette société indépendante se compose de plus de 130 personnes réparties sur 9 sites en France métropolitaine (Lyon, SaintEtienne, Clermont-Ferrand, Nancy, Paris, Nantes, Toulouse, Boulogne-sur-Gesse et Perpignan) et 6 agences à l’international (Guadeloupe, Martinique, Tunisie, Réunion, Vietnam et Chine). Au niveau de leurs qualifications, la plupart des employés d’ASCONIT Consultants sont soit Ingénieurs agronomes, hydrogéologues ou chimistes soit Universitaires en biologie, écologie, géographie ou économie. Les agents, suivant leur domaine de compétence, sont répartis dans les 9 départements qui composent la société : - DA/D0 : Département Administratif et Financier C’est tout naturellement dans cette unité qu’on trouve la comptabilité. Celle-ci régit la comptabilité générale, celle dédiée aux clients/fournisseurs ainsi que les frais de mission et les facturations. C’est également dans ce département que sont gérés les aspects financiers des études d’ASCONIT Consultants, comme les appels d’offres et la gestion des études, la logistique qui s’occupe de la maintenance, du parc véhicule, de la téléphonie, des déplacement et de la reprographie. Tout ce qui est du domaine de la qualité est également traité dans ce service (procédures qualité, gestion de production et sécurité, dossiers d’accréditation et certification, communication interne et externe). - D1 : Aménagement, Environnement et Développement Durable Il regroupe les personnes compétentes pour résoudre les problématiques liées à l’aménagement et au développement d’un territoire, tout en intégrant les composantes environnementales. C’est dans cette sphère que sont réalisés les documents comme le SCOT, 11 l’Agenda 21 ou encore des profils environnementaux pour les clients. Les études d’impacts des aménagements et des infrastructures ainsi que la prévention des risques, naturels ou technologiques, font partie intégrante du travail qui est réalisé au sein de cette unité. - D2 : Hydrobiologie, Expertise des eaux superficielles Les études relatives aux rivières, fleuves, canaux, lacs et zones humides sont le quotidien de ce service, à commencer par les études de la qualité des milieux et habitats (avec identification et connaissance des préférences écologiques des espèces végétales et animales présentes). Des prélèvements et mesures in situ de la qualité de l’eau et des sédiments dans le cadre de réseaux de contrôle, de surveillance et d’observatoires peuvent aussi être effectués. Travaillant sur les cours d’eau il est logique que ce département s’emploie aussi à déterminer des débits biologiques minimum, caractériser la qualité des eaux superficielles (par calculs, interprétations ou diagnostics). Il est à noter que la mise en place d’études d’impacts d’aménagement ou de dossiers réglementaires portant sur la loi sur l’eau ne leur est pas inconnue non plus. - D3 : Hydrogéologie, Expertise des eaux souterraines L’attention se porte ici sur la qualité et la quantité de l’eau souterraine sur des zones précises ou à l’échelle d’un territoire. Elle se traduit par des suivis réguliers de ces eaux (sites d’alimentation en eau potable, sites potentiellement pollués, réseaux RCS [Réseau de Contrôle de Surveillance], RCO [Réseau de Contrôles Optionnel] et départementaux) et par des études diverses nécessaires à la définition des périmètres de protection des captages d’eau potable et de délimitation des bassins d’alimentation des captages. Le service réalise également le volet hydrogéologique des études d’impacts. - D4 : Système d’Information Géographique Ce service est un peu atypique dans la société. En effet les collaborateurs de ce département ont une double compétence : système d’information et métier. Ils ont également la particularité de travailler en prestation de service interne à ASCONIT Consultants, pour les 12 études gérées par d’autres départements et en externe pour leurs clients sur différentes thématiques : Cartographie, SIG, Web, Base de données, Informatique générale. C’est dans ce département que j’ai travaillé durant ces 6 derniers mois sur un outil interne. - D5 : Energies, Milieux et Territoires Avec ses partenaires, ASCONIT Consultants tente de résoudre les problématiques liées aux énergies via des évaluations de potentiels énergétiques et de territoires, et par des prescriptions d’aménagement pour le développement de sites de production d’énergie. Le service accompagne aussi les collectivités locales dans l’aide à la concertation et à la décision pour le développement des énergies renouvelables. Tout cela passe donc par des études réglementaires et des études d’impacts sur les milieux et les territoires des installations énergétiques, sans oublier les études concernant la vulnérabilité aux risques, avant toute insertion dans leur environnement naturel et humain de réseaux de transport d’énergie - D6 : Milieux littoraux et marins Les études réalisées par ce département, concernent le suivi de la qualité des eaux, la réalisation de diagnostics environnementaux, l’évaluation d’impacts, tels que ceux des aménagements littoraux ou encore des rejets en milieu marin (urbains, industriels, eaux de ruissellement). Ce service intervient aussi dans la restauration des milieux naturels/dégradés et la gestion intégrée des zones côtières. - D7 : International & DOM-TOM Ce département mobilise une équipe transversale qui représente la société à l’étranger et dans les DOM-TOM afin de permettre des évaluations de politiques publiques, de programmes et de projets de coopération. Du fait de sa décentralisation, cette cellule renforce la coopération internationale pour le développement par l’assistance aux collectivités pour la conception, la mise en œuvre et l’évaluation de projets, d’évènements ou de mission d’accompagnement. Cette unité réalise aussi des études socio-économiques et des études de marché environnementales. Certains agents ayant les compétences techniques des autres 13 départements, D7 peut tout aussi bien participer au suivi-qualité des milieux naturels et mettre en place des dispositifs d’observation des changements climatiques et des problématiques énergétiques. - D8 : Biodiversité et Gestion des milieux Récemment créé (courant Février 2011), ce département a été dissocié de D1 et de D2, pour décharger les services d’une partie de la masse de travail à traiter, au-vu de l’augmentation importante des activités de ce domaine et pour permettre une meilleure coordination et lisibilité des domaines concernés au sein de la société. Il a pour vocation la définition concertée, la mise en œuvre et le suivi de stratégies de protections des espèces, de préservation, de gestion et de restauration des milieux. Les principales missions qui lui sont confiées concernent : - La prise en compte de la biodiversité dans l’aménagement du territoire, - La valorisation et gestion des territoires de manière durable, - La communication, sensibilisation et formation au sujet de la biodiversité, - Les inventaires et diagnostics écologiques de milieux, - Les expertises et inventaires faune/flore/habitats (dossiers réglementaires : études d’impact, délimitation de zones humides, dossier d’incidence Natura 2000…), - Les inventaires de zones humides, - Les études préalables et programmes d’actions de restauration/entretien de cours d’eau, - Les études globales hydrauliques et environnementales, - La maîtrise d’œuvre complète des travaux de restauration écologique, - L’évaluation globale de programmes d’actions. Ces différents départements ne sont pas forcément représentés sur tous les sites de la société en France métropolitaine. Par contre les membres d’un même département sont pour la plupart dispatcher dans plusieurs agences. 14 Pour récapituler, ASCONIT Consultants est une société de services indépendante dans le domaine de l’aménagement du territoire et de l’environnement, avec un intérêt particulier pour les milieux aquatiques. Les compétences pluridisciplinaires des salariés de ce bureau d’études (plus de 130 personnes) permettent de réaliser les missions des 9 départements qui composent l’entreprise. À l’heure actuelle cette société par actions simplifiée compte un capital de plus de 80 000 € avec un chiffre d’affaire en 2010 supérieur à 10 000 000 €. I.2 – LE DEPARTEMENT D4 DE FAÇON PLUS DETAILLE I.2.1 – LE SAVOIR-FAIRE DU SERVICE Ce service possède toutes les compétences qu’un Géomaticien peut être amené à utiliser : - La cartographie (DAO) est utilisée dans le cadre des cartes de communication, les plaquettes et les atlas thématiques ou géographiques. La société utilise des logiciels divers, propriétaires ou libres : Adobe Illustrator, Adobe Photoshop, Mappublisher, Gimp et Inskscape. - Le SIG est utilisé dans les phases de conceptualisation, d’acquisition, d’administration, de gestion et d’exploitation des données géographiques. Il sert bien évidemment pour réaliser des analyses spatiales et multicritères, des visualisations en trois dimensions et de la télédétection. De par la variété du travail et les exigences des clients, ASCONIT travaille sur un large panel de logiciel SIG : ArcGIS, MapInfo, Géoconcept, SAGA, GRASS, PostGIS, Idrisi, Envi, Landsef… - Le web est lui aussi utilisé pour la conceptualisation, le développement, la gestion et l’administration de sites web et permet dans un deuxième temps de réaliser des cartes dynamiques (Webmapping). Pour les mettre en place les agents du service programment en HTML, XML, PHP, CSS2, SQL et Javascript et peuvent être amenés 15 à exploiter des outils comme Google Maps, Google Earth, OpenLayers, Mapserver, CartoWeb… - En rapport avec les deux thématiques précédentes, le service est aussi compétent en bases de données, qui sont mises en relation avec des SIG et des sites internet. Elles sont aussi exploitées pour développer des Systèmes de Gestion de Base de Données (SGBD), à partir de la méthode MERISE, de type Access, Oracle, PostgreSQL ou encore MySQL et développer également des Interfaces dans des applications métiers. - Les connaissances des langages de développement VisualBasic (Access, Excel, ArcGIS), Python et Mapbasic en informatique générale permettent, quant à elles, la gestion du parc informatique du groupe ASCONIT, tout comme le développement de macros et de scripts pour des outils. I.2.2 – LES MISSIONS DU SERVICE Ce département a triple vocation chez ASCONIT Consultants. Il est tout d’abord un appui technique important dans de nombreuses études pilotées par les autres départements en assurant toutes les prestations informatiques, notamment cartographiques. Il réalise ainsi des cartes et des atlas, manipule les données géographiques en réalisant les phases de numérisation, d’analyse spatiale et multicritères, d’analyse d’images, de photo-interprétation…) et met en place des bases de données dans les études que peuvent réaliser les autres départements. Ce service développe ensuite ses propres activités en France et à l’international sur des aspects essentiellement techniques en géomatique, mais toujours dans les domaines de compétence de la société, à savoir l’aménagement, l’environnement et la ressource des milieux aquatiques : mise en place et gestion d’un SIG, applications métiers, méthodes d’analyse spatiale, modélisation 3D, formation sur les concepts en géomatique. Enfin D4 réalise les prestations internes. Elles peuvent porter sur la gestion du parc informatique, ou, comme c’est le cas dans le cadre de mon stage, sur le développement d’outils internes, l’élaboration et la mise en œuvre de méthodes de travail et d’analyse 16 apportant certaines solutions. Nous verrons en quoi cela consiste dans le cadre du stage dans la suite du rapport. C’est pourquoi le département D4 est composé de salariés aux profils variés mais qui ont tous une culture informatique ou SIG assez forte, à travers leur formation universitaire ou leur expérience dans le monde professionnel. De plus, la double compétence « environnement/SIG » permet à cette équipe d’intervenir à différentes phases sur les études confiées à la société, comme nous allons le voir à travers les compétences du service dans la partie précédente (I.2.2 – LES MISSIONS DU SERVICE). I.3 – PRESENTATION DU PROJET DE GESTION DE BASE DE DONNEES I.3.1 – LE CADRE DU PROJET L’objectif du stage était d’améliorer et de formaliser les outils existants, d’automatiser les opérations de saisie, de traitement et de restitution des données mais aussi de productions cartographiques sur des études spécifiques à la gestion de milieux naturels : cours d’eau, espaces naturels. La vocation de ces outils à améliorer est de permettre l’élaboration de l’état des lieux, du diagnostic et du programme d’actions des différents types de milieux en tenant compte de leurs spécificités propres. Pour réaliser ce projet, un travail en binôme avec une stagiaire écologue devait être fait au départ : - Elle, menant une réflexion méthodologique au niveau thématique : données sur lesquelles l’outil serait développé (bilan-synthèse des méthodes de diagnostics). - Moi, adaptant cette méthodologie sous un angle technique : solutions permises par les outils et les logiciels adaptés, tout en tenant compte de certaines contraintes imposées. Or Dans le cadre de mon travail, je ne commençais pas à partir de rien puisque des outils internes existaient déjà. Ceux-ci, permettaient une base de réflexion sur les fonctionnalités à 17 renouveler, celles à améliorer et celles à mettre en place, avant une conceptualisation et un développement de l’outil d’automatisation des procédures de traitements/restitution à créer. I.3.2 – LES ATTENTES DU STAGE ET LA GESTION DE PROJET Dès mon arrivée dans les locaux d’ASCONIT Consultants, une réunion a été organisée pour préciser les attentes du stage que j’allais effectuer sur la mise en place d’outils, axé sur le thème de la restauration de cours d’eau. Il en est ressorti que le stage se divisait en deux parties. - L’une consacrée à la construction d’un outil de saisie automatique de certaines informations récurrentes sur des entités géographiques, permettant par la suite, leur traitement et leur restitution. - Une deuxième partie dédiée à la mise en place de fonctionnalités permettant la production automatique de cartes faisant apparaître les informations levées sur le terrain grâce à l’outil précédent. Le premier volet du stage, grâce à une base de données, devait être une description exhaustive des données relevées, toutes relatives aux éléments de cours d’eau. Pour une meilleure analyse de ces informations, les cours d’eau qui font l’objet d’une restauration sont segmentés en tronçons, eux-mêmes divisés en secteurs. Ces derniers sont déterminés en fonction de l’homogénéité des paramètres qui caractérise le linéaire du cours d’eau. C’est pourquoi, de manière générale, les données sont levées à l’échelle du secteur. 18 Sur le fond, l’outil à réaliser, devait se baser sur les modèles existants, adaptés pour les cours d’eau, et être optimisé pour des entités liées au terrestre, à l’image des zones humides. Toutefois, seuls les critères récurrents pour Asconit seraient repris dans un premier temps, sous réserve de validation par Sylvain WILLIG, directeur du département D8 Biodiversité et Gestion des milieux. Dans la forme, il fallait que ce soit un formulaire dans lequel les informations seraient renseignées à travers de la saisie, à limiter au maximum, et des menus déroulants qui proposeraient un certain nombre de choix suivant le paramètre. Tout devait être mis en place pour faciliter la saisie des informations sur le terrain pour les utilisateurs. Concernant les résultats statistiques des données enregistrées lors de la prospection, il fallait mettre en place une interface permettant de réaliser les requêtes appropriées. Au niveau des plateformes logicielles, Asconit semblait privilégier Access de Microsoft Office, car le bureau d’étude possède plusieurs licences du logiciel, mais restait ouvert à des solutions plutôt Open Source. Le deuxième volet du stage devait porter sur un développement du logiciel ArcGIS pour permettre d’automatiser l’atlas cartographique à l’échelle du 1/10 000 ème et les vignettes (mini-cartes synthétiques de description à l’échelle du bassin versant), tous deux produit à partir des informations levées en prospection. Seules les couches SIG des cours d’eau et des bassins versants sont fournies au Géomaticien pour réaliser les cartes demandées. Les autres couches devraient être créées et associées aux tables homologues dans la base de données. 19 Dès le début du projet, un planning a été mis au point pour le bon déroulement de ce dernier afin que les différentes parties du stage puissent être abordées et mises au point. Cela permettait de situer l’avancement du planning par rapport à ce qui avait été prévu. Malheureusement, quelques aléas sont survenus tout au long du projet menant à un glissement du planning (problèmes de communication, temps de réponse et de validation, difficultés techniques rencontrées...). Le retard accumulé rendait la programmation trop juste, il a été décidé mi-juillet de mettre l’accent sur le SGBD, soit le premier volet du stage, de manière à être totalement opérationnel à la fin du stage. Figure 2: Planning de stage (Annexe 1 : Planning de stage) 20 21 II – L’OUTIL DE SAISIE, DE TRAITEMENT ET DE RESTITUTION DES DONNEES TERRAIN II.1 – LE TRAVAIL PRELIMINAIRE La vocation de cet outil est de permettre l’élaboration de l’état des lieux, du diagnostic et du programme d’action des différents types de milieux en tenant compte de leurs spécificités propres. Or, plusieurs outils ont déjà été développés dans cette optique par ou pour les personnes allant sur le terrain afin d’optimiser le recueil d’informations en un minimum de temps possible, dans un souci d’efficacité et de productivité. Il n’y avait donc pas d’outil unique, mais plusieurs outils similaires. En raison d’une masse de travail importante dans les agences, ces dernières n’ont pas pu prendre le temps de se pencher sur le développement d’un outil unique qui répondrait aux attentes des différents utilisateurs à travers les neufs agences en France métropolitaines. C’est pourquoi le bureau d’étude se retrouvait avec plusieurs Systèmes de Gestion de Base de Données (SGBD), créés souvent dans l’urgence pour satisfaire un projet particulier. Bien que fonctionnels, ces outils n’étaient pas « bien architecturés » (d’un point de vue base de données), ce qui ne facilitait pas toujours les traitements qui s’en suivaient, dont fait partie la production cartographique, traitée en troisième partie de ce rapport. C’est pourquoi dans le cadre de mon stage, il m’a été demandé d’analyser les outils existants (structures de la base et données utilisées) pour en réaliser un nouveau, mieux construit, qui réponde aux attentes de chacun et qui faciliterait plus encore la saisie des données terrain et leur synthèse, mais aussi la production cartographique qui en découle, pour les cartes redondantes. L’objectif de ce remodelage est donc d’être plus efficace et productif, mais aussi d’améliorer la qualité des rendus par l’intégration des attentes d’un maximum d’opérateurs au niveau national. Cette homogénéisation devrait également favoriser le retour et le partage d’expériences entre différents chargés d’études et chefs de projet impliqués. 22 II.1.1 – LA SELECTION DE L’EXISTANT Comme nous venons de le voir en introduction de cette partie, plusieurs bases de données existent au sein de cette société. Certaines datent des débuts d’ASCONIT tandis que d’autres n’ont que quelques mois avant ma venue, ce qui représente au total 8 ans de bases de données. C’est pourquoi deux tris ont été effectués afin de ne garder que les plus pertinentes : - Un premier tri a été effectué par Sylvain WILLIG (Directeur du Département Biodiversité et Gestion des milieux) pour ne garder que les bases traitant les cours d’eau. Ces bases de données restantes devaient me permettre de me faire une idée des informations essentielles, dominantes à prendre en compte dans l’outil qu’il me fallait créer et de la manière dont elles devaient être saisies. - Le deuxième tri, celui-ci réalisé par Rémy MARTIN (Directeur du Département Système d’Information Géographique), portait sur des outils présentant une certaine structuration entre les différentes données et qui s’appuyaient toutes sur la méthode MERISE, une des méthodes de conception de base de données. Cette deuxième sélection devait me servir de base pour la conception du nouvel outil une fois les données à prendre en compte validées. Un premier constat peut alors être fait : toutes les bases de données ont été produites sous Microsoft Office Access 2003 ou 2007. On peut donc penser que les personnes ayant développées ces applications connaissent les langages de programmation associés et seraient capables de mettre à jour le futur outil s’il devait être développé avec le logiciel Microsoft Office Access. Ensuite, en ouvrant ces bases de données, on peut observer les relations qui existent entre les tables en cliquant sur la commande Relations de l’onglet Outils de base de données. Cela nous permet d’avoir un aperçu des données et de savoir comment elles ont étés structurées entre elles. Les bases de données résultant du premier tri mettent en valeur une table Secteur ou Tronçon sur laquelle s’articulent différentes entités, dont certaines qui reviennent sur la majorité des modèles : lit mineur, lit majeur, berge, ripisylve et ouvrage. Il faut donc comprendre ici que ces entités caractérisent les secteurs, comme on peut le constater sur la figure suivante. 23 Figure 3: Exemple de données et de leurs relations à travers trois bases de données existantes [ASCONIT] 24 Pour bien comprendre l’interaction qu’il y a entre les tables, il faut expliquer les différentes échelles d’une étude sur les milieux aquatiques. Il faut savoir qu’une étude porte souvent sur un bassin versant (BV). Ce dernier comprend plusieurs cours d’eau (CE). Or ces cours d’eau sont caractérisés par une multitude de facteurs multicritères comme le lit mineur, le lit majeur, les berges et les ripisylves sur chacune des rives du cours d’eau. Il se trouve que les cours d’eau ne sont pas homogènes sur l’ensemble de leur linéaire, c’est pourquoi ils sont découpés en tronçons, suivant des zones hydrauliques de la BD CARTHAGE, puis divisés en secteur sur le terrain, en fonction du gabarit ou relativement à la localisation d’un ouvrage. Secteurs et Tronçon peuvent toutefois être confondus dans certaines méthodologies. Figure 4: Schéma de rivière type [site internet de la campagne "La Rivière m’a dit…"] C’est pourquoi dans toutes les bases de données fournies par Sylvain WILLIG, les tables représentant les différentes entités s’articulent autour de la table Secteur, ou Tronçon lorsque celle-ci n’existe pas. 25 II.1.2 – LES DONNEES A INTEGRER II.1.2.A – ANALYSE DES DONNEES EXISTANTES Mais pour savoir quels facteurs devaient être intégrés dans la future base de données, il me fallait dans un premier temps analyser et inventorier les données existantes du premier tri. Ce premier travail, bien que long et fastidieux, m’a permis de me familiariser avec les informations que doivent lever les chargés d’études sur le terrain. En effet, le seul parcours des bases de données fournies, permet de faire ressortir les informations les plus importantes dans la mesure où elles sont présentes sur toutes ou une majorité des bases de données sélectionnées par Sylvain WILLIG., comme on peut aussi le constater au travers de la Figure 3. Pour avoir une idée des tables pertinentes, de celles qui pourraient le devenir et de celles à ajouter dans la future base de données, je devais répertorier les données de chacune de ces bases existantes, les analyser et réaliser des comparatifs avec les données équivalentes des autres bases de données. C’est pourquoi, j’ai réalisé dans un premier temps un dictionnaire des données pour reporter l’intégralité des champs présents dans les trois bases analysées. Tous les champs de chacune des tables des différentes bases ont été saisis sur un fichier Excel en prenant soin de préciser : - Le nom exact du champ, qui est le plus souvent explicite sur la nature de la donnée qu’il caractérise. Exemple : le nom d’un champ LARGRIP pour définir le paramètre relatif à la largeur de la ripisylve. - La description du champ, au cas où le nom du champ ne serait pas clair sur la nature des données enregistrées, et pour permettre une comparaison postérieure de champs similaires issus des autres bases de données. - Le type de donnée à renseigner. Cela permet de savoir s’il s’agit d’un champ de type Texte, Numérique, NuméroAuto, de type Date/Heure, Oui/Non (case à cocher) ou autre… - La longueur / Le format du champ, qui permet d’apporter une précision au type de donnée en nous donnant une information sur la taille du champ. Cette colonne du dictionnaire de données nous renseigne donc sur le nombre de caractères autorisés 26 pour le champ lorsqu’il s’agit d’un champ de type Texte, ou sur le format du champ Numérique (entier, réel ou décimal). - La nature du champ, à savoir s’il s’agit d’une donnée élémentaire, issue d’un calcul ou bien encore d’un traitement SIG - La liste de choix associée au champ, lorsque celle-ci existe. Auquel cas, on en déduit que le champ se traduit dans les formulaires, ou les feuilles de données, par des listes déroulantes. Ce renseignement nous permet de nous faire une idée des informations qui sont attendues lors de la saisie sur le terrain. - Le nom exact de la table dont est issu le champ, de manière à pouvoir authentifier le champ lors de la comparaison avec ses pairs. - Le nom exact de la base dont est tiré le champ, de manière à pouvoir authentifier le champ lors de la comparaison avec ses pairs. Figure 5: Extrait du dictionnaire de données créé 27 Pas moins de 1106 champs (à travers les trois bases de données étudiées) ont été inscrits dans le dictionnaire des données existantes. Ce travail, bien que fastidieux, était nécessaire pour plusieurs raisons. D’une part il me permettait de me faire une idée plus précise encore des paramètres que les chargés d’études ont à lever de manière régulière ou systématique lors des prospections et ainsi de me familiariser avec eux. Le fait de les reporter autant de fois qu’ils apparaissaient dans les bases me donnait la possibilité d’évaluer grossièrement leur importance suivant la redondance de leur report dans le fichier Excel. D’autre part, du fait du nombre important de données, l’établissement de ce registre offrait de nouvelles possibilités. Excel permet notamment de faire des calculs lorsqu’il s’agit d’information numérique, mais le logiciel peut aussi réaliser des opérations de tri et de filtrage en fonction de certains paramètres. Ce sont ces traitements qui nous intéressaient particulièrement pour établir un document synthétique des paramètres existants à reconduire dans l’outil à mettre en place suivant leur importance (présence du paramètre dans les différentes bases) et de leur pertinence. Ces traitements sont rendues possibles grâce à la fonction Trier (Onglet Accueil / Edition / Trier et Filtrer) qui fait apparaître en coin de chaque entête de colonne la flèche caractéristique d’un menu déroulant, permettant ainsi de réaliser des filtres textuels, en l’occurrence les filtres textuels Est égal à… et Contient… 28 Figure 6: Filtres textuels dans Microsoft Office Excel 2007 À partir de là, on peut alors comparer des champs de même description contenus dans différentes tables, d’une même base ou d’une autre. Figure 7: Résultat du filtre textuel visible en Figure 4 Il est alors facile de savoir si les champs répertoriés sont présents dans la plupart des bases de données, si les informations sont représentées de la même manière (saisie ou liste de choix, champ numérique ou texte, appartenance à une table analogue dans les autres bases etc…) et établir un fichier de synthèse des informations. Comme le mot d’ordre était de limiter au maximum la saisie dans l’outil à créer, les paramètres représentés différemment suivant les bases ont été synthétisés à partir de ceux munis d’une liste de choix. 29 La synthèse s’est faite dans une nouvelle feuille de données à partir de plusieurs constituants : - La description du champ, afin d’identifier le paramètre. - La liste de choix associé au champ, lorsque celle-ci existe. - Le nombre de bases dans lesquelles le champ est présent, de manière à pouvoir hiérarchiser le champ et définir ainsi… - La pertinence du champ à entrer dans la future base de données d’après mon appréciation. - L’entité du cours d’eau que le champ concerne (secteur, lit mineur, berge…) Figure 8: Fichier de synthèse des informations contenues dans le dictionnaire des données existantes Grâce à ce travail, il en est ressorti une première sélection de critères, soit près d’une centaine de champs qui a fait l’objet d’une première validation. En effet, les bases ont présenté un grand nombre de données, cependant, il ne fallait pas oublier que l’outil devait permettre la lever d’informations qu’il fallait ensuite cartographier. C’est pourquoi après ce premier calibrage, ce fut au tour des données représentées sur des atlas cartographiques type de l’état des lieux, des diagnostics et des actions de faire l’objet d’une validation afin d’être intégrées. Toutefois le travail fut beaucoup moins pénible du fait que la plupart des informations symbolisées sont issues des bases de données et ont déjà été examinées. 30 Au final, plus d’une centaine de paramètres à lever ont été retenu caractérisant plus d’une dizaine d’entités réparties en deux catégories : - les entités linéaires, éléments d’un secteur de cours d’eau : lit mineur, lit majeur, berge, ripisylve et action, - les autres entités, ponctuelles et zonales : ouvrage, encombre, déchet, rejet, pompage, zone humide et action. Parallèlement, une stagiaire écologue devait s’entretenir avec les utilisateurs de l’outil et définir les paramètres relatifs aux éléments d’un secteur à lever sur le terrain en croisant les différentes méthodologies plus ou moins standardisées de différents opérateurs publics (Agence de l’Eau, ONEMA…) et les besoins particuliers d’un maximum d’opérateurs d’ASCONIT. Ainsi nos sélections respectives concernant les éléments de cours d’eau (lit mineur, lit majeur, berge et ripisylve) ont pu être confrontées afin d’en ressortir une méthodologie pour lever les différents paramètres de ces entités linéaires. Les entités associées n’ayant pas été abordées par la stagiaire écologue, j’ai du à m’entretenir directement avec les utilisateurs pour connaître leurs besoins sur ces données. II.1.2.B – ENTRETIENS AVEC LES UTILISATEURS DE L’OUTIL Ayant tiré le maximum d’informations des bases existantes, je devais ensuite m’entretenir avec les utilisateurs de l’outil de toutes les agences métropolitaines d’ASCONIT suivant leurs disponibilités. Ces entrevues avaient plusieurs objectifs : Le premier était de parcourir ensemble les paramètres validés précédemment afin de faire le point. Cette étape était importante car elle permettait aux utilisateurs de me faire part de leurs remarques sur les données déjà répertoriées, mais aussi d’ajouter d’autres paramètres nécessaires à leurs études qui n’avaient jamais été pris en compte, ou de façon mal adaptée à leurs besoins. La deuxième finalité de ces entretiens portait sur l’outil à proprement parler. Les discussions traitaient ici de l’interface graphique que devrait arborer le programme ainsi que de son 31 fonctionnement, suivant les expériences des utilisateurs sur les outils précédents. Ce deuxième point sera repris dans la partie suivante. Pour en revenir au premier objectif, concernant la validation des données, tous les utilisateurs sont tombés d’accord pour dire que les paramètres des entités du secteur avaient bien tous été pris en compte. Par contre ce n’était pas le cas de toutes les entités ponctuelles et zonales qui avaient été retenues. Il existait différentes manières de lever ces entités dans les outils existants. Certaines bases n’avaient qu’une table générique pour lever les divers objets ponctuels et zonaux alors que d’autres avaient une table par entité avec des champs différents pour chaque objet. Les utilisateurs eux aussi étaient partagés sur l’acquisition de ces données. Une partie des utilisateurs préférait le levé d’entités via la table générique, plus pratique pour lever un grand nombre d’éléments, tandis que l’autre optait pour une approche par entité, permettant un levé plus spécifique et détaillé de l’objet. Or l’outil se devait de posséder le plus d’informations à lever possible, c’est pourquoi le levé par entité fut validé en distinguant : les travaux hydrauliques, les encombres, les rejets, les déchets, les piétinements, les pompages, les buses, les plans d’eau et les zones humides, en plus des ouvrages. Cette table, un peu particulière car importante, a toujours été une table à part entière. Bien qu’elle ait évolué pour s’adapter aux besoins de chacun à travers le temps, elle suscitait encore beaucoup d’intérêt de la part des utilisateurs qui souhaitaient la perfectionner toujours plus. Déjà bien complète, voire même trop pour certains utilisateurs qui ne renseignaient pas cette entité à ce niveau de détail, elle restait imparfaite. Après avoir entendu tous les utilisateurs et avoir débattu sur les changements et les ajouts des données à effectuer, les modifications à apporter ont été prises en compte. Certains renseignements ont également été totalement repensés pour éviter au maximum aux utilisateurs d’enregistrer des valeurs à partir de listes déroulantes jugées trop suggestives. 32 Suite à cela un dictionnaire des données du nouvel outil a été mis en place afin de valider les informations à exploiter, bien qu’il doive être amené à évoluer avec la programmation, suivant les difficultés. Figure 9: Extrait du dictionnaire de données de l'outil mis en place 33 Remarques : À l’image de la Figure 7, on observe que la plupart des champs des différentes tables ont un champ homologue dans une table de listing. À première vue, on pourrait penser à une duplication des données, cependant il n’en est rien. En effet, en étudiant les bases qui possèdent une table « listing », on observe que ces dernières possèdent des champs équivalents aux champs de type « liste déroulante » des autres tables de la base. Cela s’explique par le fait que les listes déroulantes des champs des diverses tables de la base font appel aux valeurs contenues dans leur champ homologue des enregistrements de la table « listing » via une requête. Ainsi l’ajout d’une nouvelle valeur dans un champ de la table « listing » permet de mettre à jour de manière automatique toutes les listes déroulantes des champs des autres tables qui lui sont associés. Ces explications sont étayées par la figure suivante et permettent une meilleure compréhension. Figure 10: Lien existant entre le champ d'une table et son homologue dans une table de listes 34 II.1.3 – CHOIX DES OUTILS II.1.3.A – L’OUTIL DE DEVELOPPEMENT Après avoir passé du temps à tester différents outils libres de SGBD (Système de Gestion de Base de Données) et le logiciel propriétaire Access 2007 de Microsoft Office, nous nous sommes orientés sur un développement de l’outil sur le logiciel de Microsoft pour plusieurs raisons. Tout d’abord ASCONIT Consultants possède un certain nombre de licences de ce programme en version 2003 et 2007. Le développement de la base sur ce support permettrait de rentabiliser leur achat. D’autant plus que la société bénéficie de toute l’assistance dont elle peut avoir besoin pour construire des bases de données sur ce produit, au sein de son Département D4 notamment. Ensuite, Access ne trouve pas vraiment d’équivalence dans le domaine des logiciels libres. Bien que le logiciel Base d’Open Office s’en rapproche fortement pour ce qui est de la base de données, il ne permet pas encore de configurer des liens complexes entre les tables ou de construire des interfaces utilisateurs de type formulaire continu, comme utilisé dans notre projet. Il en va de même pour les SGBD MySQL et PostGreSQL : ces outils Open Source sont très populaires pour l’aspect base de données, mais ils n’offrent pas les mêmes vérifications de données ou de requêtes qu’offre Access, ni d’interface utilisateur, ce qui nécessite d’en créer une via un autre outil libre, à l’image de GAMBAS ou via une programmation PHP par exemple. Toutefois, il existe des logiciels libres tels que Kexi Project ou Glom qui allient les fonctionnalités base de données à des fonctionnalités d’interface utilisateur. Mais que ce soit d’un côté ou de l’autre aucun de ces outils n’offre un environnement de SGBD aussi complet que celui d’Access, qui plus est en relation directe avec une interface utilisateur aussi aisément développable, grâce à une programmation facile et rapide sous Access et/ou Visual Basic for Applications. De plus, une partie des utilisateurs ont appris au fil des années à programmer dans ces langages pour améliorer leur outil de saisie de manière à répondre à leurs besoins. Programmer le nouvel outil sous Access et Visual Basic for Applications permettrait après 35 mon départ de mettre à jour plus facilement la base si les utilisateurs et administrateurs connaissent déjà le logiciel de création. N’oublions pas non plus que la base de données est censée être reliée ensuite au SIG pour réaliser les atlas cartographiques. Or ce lien se fait très simplement et sans aucun problème de compatibilité (ouverture des tables en mode natif sous ArcGIS notamment). Mais l’une des raisons principales qui a motivé le choix de ce logiciel est la suivante. L’outil pourrait être amené à être externalisé pour les clients des études sur lesquelles le programme sera utilisé. En effet les clients possèdent tous une suite bureautique, pour la plupart Microsoft Office. Il est donc plus facile de fournir un produit que le client pourra utiliser directement. En plus, pour ceux qui n’auraient pas Microsoft Office Access, la compilation de l’outil, incluant un runtime (gratuit) leur donnerait la possibilité d’utiliser l’outil s’ils le souhaitent sans avoir à acheter le logiciel ou à installer un autre programme pour faire fonctionner l’outil fourni. II.1.3.B – L’OUTIL DE CONCEPTION Toutefois avant de pouvoir développer l’outil demandé sous Microsoft Office Access 2007, il faut d’abord concevoir la base de données sur laquelle il sera construit. Afin de mettre en place les éléments qui la caractérisent, j’ai choisi d’utiliser l’outil Open Source DBDesigner. Ce logiciel a l’avantage de permettre une conception visuelle des bases de données, ce qui le rend plus intuitif. Avec ce programme, il est possible de réaliser directement un Modèle Conceptuel de Données (MCD) pour décrire sous forme schématique les données à traiter (soit les différentes entités avec leurs paramètres ainsi que les relations qui peuvent exister entre elles). Le MPD peut lui aussi être créé instantanément si le système de stockage de chaque paramètre a été renseigné. De plus DBDesigner possède un module de script qui lui permet de traduire en langage SQL différents éléments de la base créée dans le logiciel. Le fichier obtenu liste les différentes tables, leurs champs, le type de données (texte, numérique…) avec le nombre de caractères maximal autorisés ainsi que les clés (primaires et étrangère de chaque table), sans oublier les cardinalité. L’importation de ce fichier dans Access permet une création immédiate des données créées sous DBDesigner, argument de taille qui a favorisé la sélection de cet outil. 36 II.1.4 – L’INTERFACE GRAPHIQUE DE L’OUTIL II.1.4.A – ENTRETIENS AVEC LES UTILISATEURS DE L’OUTIL Pour ce qui concerne l’interface graphique, plusieurs modèles existaient pour la saisie des informations : - des modes de saisie sur un unique formulaire, regroupant l’ensemble des informations à lever ; classées par entité avec un code couleur (bleu pour le lit mineur, vert pour la ripisylve…). Cette méthode avait l’avantage pour l’utilisateur de pouvoir saisir tous les paramètres les uns à la suite des autres. Cependant, étant donné la quantité importante d’éléments à saisir, des barres de défilements horizontales ou/et verticales (couramment appelées scrolls) apparaissent sur le formulaire pour accéder à ceux qui ne seraient pas visibles à l’écran du fait de la taille imposante du formulaire. Les informations étant rentrées sur le terrain, les utilisateurs sont obligés d’utiliser le pad de leur laptop (ordinateur portable) pour accéder aux scrolls, ce qui restreint l’intérêt pratique du formulaire unique. Figure 11: Mode de saisie sur formulaire unique 37 - des modes de saisies basés sur un système d’onglets, où chaque onglet représente une entité qu’il faut caractériser. Cette solution permet de corriger le désagrément des scrolls dans la méthode de levé précédente. Le fait de limiter les données à une entité par onglet permet de visualiser l’ensemble des critères la caractérisant sur une même page, visible en intégralité sur les écrans, y compris ceux des ordinateurs portables les plus petits utilisés pour des levés terrain. Bien que cette approche apporte une meilleure visibilité des données, elle est aussi la source d’un défaut jugé majeur par les utilisateurs. En effet lors d’une saisie sur le terrain, les opérateurs n’ont pas de souris pour passer facilement d’un onglet à l’autre et pointer le curseur sur le premier paramètre à lever ce qui entraîne une gêne pour la saisie et une perte de temps/productivité. Figure 12: Mode de saisie sur formulaire à onglets C’est pourquoi il fallait trouver une interface graphique pour la saisie qui permettrait de concilier les avantages de ces méthodes (facilité de la saisie, vue d’ensemble des différents critères) tout en bannissant leurs aspects négatifs (barres de défilement, utilisation forcée du pad). 38 Néanmoins, l’outil ne se constitue pas uniquement de la partie saisie. Les utilisateurs ont aussi besoin de pouvoir modifier (écriture et lecture) et consulter (lecture seule) des données déterminées. Par conséquent un questionnaire a été mis en place pour interroger séparément chaque utilisateur de l’outil sur ses besoins (qu’est-ce que l’outil doit-il lui permettre de réaliser ?) et ses préférences (comment peut-il le réaliser ?), tout en tenant compte de l’aspect facile et pratique des différentes manipulations que l’utilisateur aura à effectuer. Figure 13: Questionnaire définissant les besoins utilisateurs Suite à cette dizaine d’entretiens d’une durée moyenne de 45 minutes, il est ressorti les résultats suivant : Description du terrain - Les opérateurs ne font aucun pré-traitement avant de partir pour la prospection si ce n’est parfois le découpage des tronçons du cours d’eau sur des fonds de carte papier. - Les points levés au GPS correspondent aux entités ponctuelles et zonales. À chaque point levé correspondent une à deux photos suivant l’importance de l’objet. 39 - La saisie multi-utilisateur n’a jusqu’à présent été utilisée que par deux chargés d’études et ne semble pas intéresser les autres dans la mesure où chaque opérateur a son étude. La prospection des informations sur le terrain étant faite le plus souvent par un seul binôme par étude, composé du chargé d’affaire et d’un stagiaire. - Seuls les calculs de synthèse sont réalisés par les utilisateurs, et souvent pour partie via Microsoft Office Excel et non directement dans Microsoft Office Access. Les autres opérations de post-traitement, liées à la cartographie, sont réalisées soit par les opérateurs eux-mêmes, soit par le Département SIG d’ASCONIT (D4). L’interface de l’outil - Sur certains outils, l’interface générale se divisait en quatre modules : o un module permettant d’accéder à un formulaire de saisie vierge, pour enregistrer les données d’un nouvel objet (secteur, ouvrage ou autre). o un module permettant d’accéder à un formulaire pour modifier des informations relatives à des objets déjà saisis préalablement. o Un module permettant de consulter/d’imprimer ces données. o Un module d’exportation des données vers un fichier Microsoft Office Excel, variable d’une base de données à l’autre permettant de réaliser des requêtes statistiques, requêtes de synthèse, à différentes échelles de l’étude. - Sur d’autres, l’interface ne possède pas tous les modules ou les possède mais pas sur tous les objets. - Pour les derniers, cette interface est inexistante. Les utilisateurs n’ont qu’un formulaire de saisie qui leur permet d’enregistrer les différentes informations des paramètres rencontrés, les opérations de post-traitement étant exécutées directement à partir du menu de navigation des objets Access. Ces outils sont ceux des utilisateurs qui possèdent au moins les bases de Microsoft Office Access. Ce sont d’ailleurs ces mêmes utilisateurs qui ont amélioré leurs outils de base au fur et à mesure de leurs besoins. L’outil devant être le plus complet possible, il se devait de permettre l’exécution de ces différentes fonctionnalités. 40 Le futur formulaire de saisie - Présentation du formulaire de saisie sous la forme d’un formulaire par onglets, où chaque page représente un objet. Afin de faciliter la saisie des informations sur les mini-PC de terrain, des raccourcis claviers ont été suggérés pour passer d’un onglet à l’autre, amélioration inédite par rapport aux versions précédentes. - Pour les entités Lit majeur, Berge et Ripisylve, les informations de rive, en rive gauche et en rive droite, doivent être saisies, l’une après l’autre, paramètre par paramètre. - La touche tabulation doit permettre de passer du paramètre saisi au paramètre suivant. En d’autres termes la tabulation doit être organisée pour passer d’un champ à un autre dans le bon ordre, en priorité pour chacune des rives pour un même paramètre. - Certaines informations ne doivent être saisies qu’une fois, puis automatiser dans les autres champs où cette information est nécessaire. Le choix de certaines valeurs dans les listes déroulantes de paramètres doit ainsi entraîner des valeurs par défaut bien précises dans d’autres paramètres spécifiques. II.1.4.B – PROPOSITION D’ASPECTS GRAPHIQUES DE L’OUTIL Pour savoir si je répondrais graphiquement aux attentes des utilisateurs de l’outil, je devais leur présenter ce que je comptais mettre en place pour l’aspect visuel, au moins conceptuellement, à propos de l’interface, mais surtout du formulaire de saisie. Pour ce faire, j’ai utilisé le logiciel Microsoft Expression Blend 3, dans sa version d’évaluation d’un mois. J’ai utilisé ce logiciel car il me permettait de réaliser rapidement un prototype de l’outil tel que je le voyais. En effet à partir de ce programme je pouvais exposer aux usagers mes idées de conceptions de l’outil avec ses fonctionnalités, tout en tenant compte de la résolution des mini-PC (7 et 9 pouces) et leur montrer quel rendu cela donnerait en cas d’utilisation de l’outil lors d’un levé de terrain. Plusieurs versions de l’outil ont été proposées. Même si les interfaces permettant d’accéder aux différentes fonctions présentaient la même forme dans les différentes versions, la différence se faisait surtout au niveau du formulaire de saisie. 41 Figure 14: Interface générale et modules qui en découlent Pour être plus précis, les onglets Lit mineur, Lit majeur et Berge étaient identiques d’une version à l’autre. Les consignes de levé de ces entités étaient très précises, je savais donc exactement comment les représenter. Figure 15: Formulaire de saisie (onglet Lit majeur) 42 La saisie de ces éléments ne varie pas car il n’y a qu’un objet par secteur. De ce fait un formulaire unique pour les entités citées semblait être la solution la plus adaptée avec, pour chaque paramètre, l’information à renseigner en rive gauche, puis l’information en rive droite. L’onglet Ripisylve, quant à lui, serait également entré dans cette catégorie, mais il a une particularité. En effet, il existe deux méthodes pour lever les informations exigées. - Dans le premier cas, la ripisylve est unique sur chacune des rives d’un secteur du cours d’eau, à la manière des entités Lit majeur et Berge, comme nous l’avons vu à l’instant. Cette méthode de saisie est utilisée par la plupart des agents. - Dans le deuxième cas, la ripisylve n’est pas singulière. Certains utilisateurs peuvent lever plusieurs « sous-secteur » de ripisylves en rive gauche et en rive droite pour un même secteur. C’est le cas des chargés d’étude des agences de Nantes et Toulouse. Il a donc fallu proposer une solution pour permettre à chaque usager d’utiliser la méthode qui lui convient. Celle qui fut soumise au département D8 reprend le principe de saisie des autres entités caractéristiques d’un secteur : il s’agit de permettre la saisie de deux ripisylves sur un même formulaire unique, en ajoutant une barre de navigation. Ainsi les utilisateurs de la première méthode peuvent remplir leur ripisylve unique sur la rive gauche et sur la rive droite, et les partisans de la deuxième méthode peuvent, grâce à la barre de navigation, accéder à une nouvelle page pour renseigner de nouvelles ripisylves. Figure 16: Formulaire de saisie (onglet Ripisylve) 43 Pour les entités ponctuelles et zonales, elles peuvent apparaître de nombreuses fois sur un secteur. Il fallait donc mettre en place une interface visuelle qui permette de lever ces entités tout en pouvant voir les autres éléments de même nature levés antérieurement. Plusieurs solutions ont donc été proposées : - Le levé de chaque entité sur un formulaire unique muni d’une barre de navigation. Ainsi une seule entité est visible sur la page mais la barre de navigation permet à l’usager qui le souhaite de revoir les entités qu’il a déjà levé, d’en rechercher une en particulier, ou d’accéder à une nouvelle entité à renseigner. Comme les entités ponctuelles ont moins de paramètres à renseigner que les objets précédents, il est possible de mettre sur une même page plusieurs entités pour optimiser la place. On peut ainsi saisir plusieurs entités différentes sans avoir à changer d’onglet. Figure 17:Première version de la saisie d'objets ponctuels et zonaux - Le levé des différents objets peut aussi se faire en mode feuille de données. Dans ce cas, chaque colonne correspond à un paramètre à renseigner, et chaque ligne à un enregistrement, à un objet levé (mais du même type d’entité). L’avantage de cette méthode est qu’elle permet de saisir un objet tout en permettant de voir les autres objets (de même nature) levés précédemment sur une seule et unique page. 44 L’inconvénient est que suivant le nombre de champs à renseigner, et suivant leur largeur sur la feuille, il n’est pas exclu que le formulaire ne puisse tout afficher à l’écran, créant du même coup une barre de défilement horizontale pour accéder aux derniers paramètres à saisir, ce que nous cherchons justement à éviter : cependant la largeur des colonnes est redimensionnable en direct par l’utilisateur. Figure 18: Deuxième version de la saisie d'objets ponctuels et zonaux - Enfin, pour pallier aux défauts des versions précédentes (entité unique sur la page ou scroll horizontal) les objets d’une même nature peuvent être collectés sur un formulaire continu. Ce type de formulaire permet d’afficher les différents enregistrements, ici nos objets levés, dans une même page mais avec une présentation de type formulaire unique. L’avantage de ce visuel, c’est qu’il permet d’afficher sur une même page différents objets saisis d’une même entité mais en évitant la barre de défilement en plaçant judicieusement les contrôles du formulaire dans l’espace visible de la page. La figure suivante vous en montre un aperçu. 45 Figure 19: Troisième version de la saisie d'objets ponctuels et zonaux Ainsi à travers une présentation conceptuelle de l’aspect graphique de l’outil, les utilisateurs pouvaient m’indiquer la meilleure interface à mettre en place pour eux et me proposer d’autres solutions lorsque les miennes n’étaient pas assez adaptées, afin que je puisse les peaufiner et voir par la suite si leur développement était réalisable. 46 II.2 – LA PHASE DE CONCEPTION DU NOUVEL OUTIL Après avoir mis en place le dictionnaire de données du programme à créer, je me suis appuyé sur celui-ci pour monter la base de données avec le logiciel DBDesigner. Rappelons que DBDesigner permet la conception d’une base de données suivant une approche graphique. Pour la réaliser, nous avons utilisé la Méthode MERISE, outil conceptuel et organisationnel des bases de données. II.2.1 – LA METHODE MERISE Cette méthode a pour objectif de mettre en place les données et de les organiser via un modèle sur lequel le développeur peut s’appuyer. Cette méthode, dite d’analyse, est la plus utilisée en France depuis sa création à la fin des années 70. Elle a pour finalité la création d’un système d’information (SI) fonctionnel. Pour aboutir à ce résultat, MERISE adopte une approche par étapes qui est couramment appelé Cycle d’abstraction de conception des SI. Les différents niveau qui la caractérisent sont illustrés sur l’image qui suit et sont décrites dans les différentes sous-parties de cette section. Figure 20: Cycle d'abstraction de conception des systèmes d'information [www.commentcamarche.net/contents/merise/concintro.php3] 47 II.2.1.A – L’EXPRESSION DES BESOINS Cette première étape peut être assimilée au travail décrit dans la partie II.1 – LE TRAVAIL PRELIMINAIRE. La formalisation des données et des traitements que l’outil devra comprendre est un des objectifs de cette phase. Il s’agit donc de faire l’inventaire des éléments nécessaires au système d’information, à savoir : - cataloguer les orientations du projet et les objectifs à atteindre tout en tenant compte de la politique de la société, - lister les objets (les tables), leurs caractéristiques (leurs champs) et les relations qui existent entre eux, - essayer de cerner les « dysfonctionnements » du système actuel, tant sur un plan technique qu’organisationnel. Sur notre projet, cela se traduit par un réagencement des données existantes et l’apparition de nouvelles pour éviter une certaines redondance des informations et permettre également des traitements qui n’étaient pas envisageables sur les outils précédents du fait de leur structuration, - découlant du point précédent, il faut bien entendu répertorier l’ensemble des processus et les opérations que l’outil devra pouvoir exécuter. Pour résumer de manière simplifiée, retranscrire l’expression des besoins revient à déterminer le cahier des charges de l’outil à développer. II.2.1.B – LE MODELE CONCEPTUEL DE DONNEES Il s’agit là de la première étape de la création d’une base de données. De son abréviation MCD, le Modèle Conceptuel de Données est utilisé pour décrire de façon formelle, standardisée et schématique les données de la base (tables, champs et relations) nécessaires à la résolution du problème de départ, sans tenir compte de la plateforme logicielle ni du langage de programmation qui se grefferont autour par la suite (aspect technique). 48 On peut distinguer 5 paliers pour réaliser un MCD : - Le premier palier correspond à l’édition du dictionnaire de données ou tout du moins à sa vérification s’il a déjà été réalisé dans l’expression des besoins. Il est important de vérifier qu’il n’y ait pas de synonymes, de doublons pour éviter de se retrouver avec une même donnée présente plusieurs fois dans la base mais sous un nom différent. Il en est de même pour les homonymes qui sont à proscrire pour empêcher d’avoir des données différentes sous un même nom. - Le deuxième palier doit identifier les différentes entités de la base de données. Dans le cadre de notre projet les entités correspondraient aux objets que l’on peut rencontrer sur les cours d’eau, à l’image des observations relatives au secteur (lit mineur, lit majeur, berge et ripisylve) et des observations ponctuelles et zonales (ouvrages, travaux hydrauliques, encombres, déchets, pompage, rejets, piétinements, plans d’eau, zones humides). - Le troisième palier correspond au regroupement des données par entité, tout en s’assurant qu’elles ne sont pas présentes plusieurs fois dans celle-ci. Ainsi les données regroupées forment les attributs de l’entité à laquelle elles sont associées. L’entité doit obligatoirement posséder un identifiant. Ce dernier correspond à l’un de ces attributs dont la valeur à renseigner est unique pour chaque enregistrement, c’est-à-dire pour chaque objet d’une entité. - Le quatrième palier doit mettre en évidence les relations qui existent entre les différentes entités. Pour chaque entité, il faut vérifier s’il existe ou non un lien avec chacune des autres entités. - Le cinquième et dernier palier définit les cardinalités qui expliquent la nature de chaque relation établie précédemment. Il faut donc se demander : o À combien d’objets d’une deuxième entité un objet d’une première entité peut être lié ? o À combien d’objets de la première entité un objet de la deuxième peut être lié ? 49 II.2.1.C – LE MODELE LOGIQUE DE DONNEES Le MLD correspond à une représentation plus informatique des éléments du MCD de manière à rendre ces informations compréhensibles par un SGBD. C’est une transcription. Les entités du MCD correspondent alors à des tables dans le MLD, les attributs à des champs, dont il faut renseigner le type de données (texte, numérique, date/heure…) et la longueur (nombre de caractère maximum autorisé pour la valeur à inscrire dans le champ), et les identifiants à des clés primaires. Ce modèle décrit donc la structure de données. II.2.1.D – LE MODELE PHYSIQUE DE DONNEES Le MPD, quant à lui, correspond à l’implémentation du modèle créé dans le SGBD. On traduit donc le schéma réalisé dans un langage de définition de données. Généralement ce langage est le langage SQL (Structured Query Language) du fait qu’il soit reconnu en tant que norme officielle de langage de requête relationnelle par l’ANSI (American National Standards Institute) et l’ISO (International Standards Organization) II.2.1.E – LE SYSTEME D’INFORMATION AUTOMATISE Comme nous venons de le voir, le système d’information automatisé n’est autre qu’un Système de Gestion de Base de Données. C’est un logiciel qui sert à manipuler les bases de données, que ce soit pour saisir, modifier ou consulter des objets de la base de données. Dans le cadre de notre projet il s’agit du logiciel Microsoft Office Access 2007. 50 II.2.2 – LA CONCEPTION DE LA BASE DE DONNEES Comme nous l’avons vu dans la partie II.1.3 – Choix des outils, nous avons utilisé l’outil libre DBDesigner 4 pour réaliser la base de donnée par une approche schématique et visuelle. II.2.2.A – L’INTERFACE DU LOGICIEL Ce logiciel de conception visuelle de base de données est d’une utilisation très simple et possède une interface utilisateur tout aussi accessible, qui ressemble beaucoup à certains logiciels de dessin dans la disposition des outils (Adobe Illustrator, Adobe Photoshop) Figure 21:Interface utilisateur du logiciel DBDesigner 4 Comme nous pouvons le voir sur la figure ci-dessus un large espace est réservé à la réalisation du Modèle Conceptuel de Données. 51 À gauche de celui-ci se trouve la barre des outils d’édition où l’on a entre autre les boutons permettant de créer les différents objets de la base (tables, champs et relations) et de les renseigner. Figure 22: Barre d'édition sous DBDesigner 4 À droite de la zone de dessin, le long de la largeur, sont situés trois autres modules : - En haut, nous avons un volet de navigation et d’information. o L’onglet Navigation permet de déplacer la vue de la région de conception, de zoomer ou dézoomer sur une partie de l’espace de travail avec la barre ou en entrant une valeur numérique, très pratique pour cibler un élément particulier. o L’onglet Information indique le nom de l’objet sélectionné ainsi que sa position sur la zone de travail, ainsi que ses dimensions. Figure 23: Volet Navigateur & infos sous DBDesigner 4 - En bas est placé le modèle de base de données. Dans cette fenêtre sont répertoriées toutes les tables que présente le modèle, avec la liste des champs qui leur sont associés ainsi que les relations auxquelles elles sont rattachées. Deux autres boutons sont aussi présents dans le bandeau de ce module pour créer une nouvelle table ou en supprimer une déjà existante. Dans le cas d’une suppression, tout objet associé à la table est également perdu. 52 Figure 24: Volet Modèle de BD sous DBDesigner 4 - Un module pour le type de données est calé entre les deux volets précédents. Il permet à l’utilisateur d’éditer le type de données en lui ajoutant des paramètres, en modifiant les options, ou en configurant d’autres options. Figure 25: Volet Type de données sous DBDesigner 4 53 II.2.2.B – LA CREATION DE LA BASE DE DONNEES Grâce à ces outils, il est très facile de mettre en place les différentes tables de la base de données avec les champs correspondants, via la fonction Table Editor ( mettre en place les relations ( ou ) puis de ). Lors de la création des champs, on peut aussi définir leurs types de données, le nombre maximum de caractères et les légender. Figure 26: Edition de la table t_Secteur et t_Lmajeur sous DBDesigner 4 54 Figure 27: Edition de la relation entre les tables t_Secteur et t_Lmajeur sous DBDesigner 4 On peut donc créer directement à partir du MCD le MPD, ce dernier intégrant le MLD. Une fois le modèle entièrement validé, on peut procéder à son exportation sous SGBD. (Annexe 2 : Modèles Conceptuel et Physique de Données) 55 II.2.2.C – L’IMPLANTATION DE LA BASE DANS MICROSOFT OFFICE ACCESS Pour ce faire, une fois arrivé à cette étape, le modèle peut alors être transcrit en langage SQL via la commande Fichier/Exporter/Script de création SQL… ou en cliquant sur le bouton correspondant de la barre d’édition. La fenêtre Export SQL Script s’ouvre alors pour sélectionner ou non certains réglages avant que le modèle ne soit traduit dans le langage de définition de données. Figure 28: Module d'exportation du modèle en script SQL Une fois les options validées, DBDesigner crée un fichier SQL des différents éléments qui constitue la base de données, dont la figure suivante nous montre un extrait. Comme on peut l’observer le fichier à importer dans Microsoft Office Access est constitué de requêtes basées sur les instructions du langage SQL et qui permettent de créer les différentes tables avec les champs associés. On peut également voir que les relations ne sont pas traduites dans le fichier 56 Figure 29: Extrait du fichier d'exportation du modèle en SQL créé sous DBDesigner 4 Cette opération effectuée, tout le reste de la conception et du développement de l’outil se font sous Microsoft Office Access 2007. C’est d’ailleurs à partir de la commande Créer/Création de requête de ce logiciel propriétaire que sont importées les tables du modèle. 57 Une fois dans l’interface de création de requêtes, il faut changer l’affichage et basculer du Mode création au Mode SQL. Des instructions SQL peuvent alors être tapées. Dans notre cas il suffit de copier les différentes instructions du fichier SQL réalisé sous DBDesigner et de les exécuter pour créer de manière automatique l’ensemble des tables de la base. Figure 30: Importations des tables sous Access 58 Cette méthode peut avoir l’inconvénient d’être un peu lourde du fait qu’il faille Copier/Coller l’instruction d’une table dans Access, l’Exécuter, puis recommencer l’opération tour à tour pour chacune des tables de la base. Toutefois cette méthode reste bien plus rapide que de créer une table avec toutes ces caractéristiques via la commande Créer/Table. Par contre, le gros avantage de cette méthode est qu’elle permet de créer des tables parfaitement identiques à celles présentées sur les modèles conceptuel et physique de données réalisées sur DBDesigner 4, avec un risque d’erreur fortement réduit. II.2.2.D – L’APPLICATION DES RELATIONS Les tables importées, la base n’est toujours pas prête à être exploitée. Il reste encore à ajouter les relations entre les tables comme elles apparaissent sur les modèles cités précédemment. Cette manœuvre s’effectue à partir de l’item Relation, situé dans l’onglet Créer du ruban Access. On ajoute alors sur la page vierge les différentes tables de la base et on les relie suivant le modèle validé. Toutefois il faut faire attention de créer les relations dans le bon sens, en tâchant de partir du champ de la table principale vers le champ de la table secondaire ; champ qui constitue la clé étrangère. Une relation est alors créée entre les deux tables mais sans cardinalité. Pour qu’Access puisse les prendre en compte de manière à gérer efficacement les relations entre les tables et éviter ainsi toutes incohérences, il faut cocher la case correspondant à l’intégrité référentielle, dans la fenêtre Modifications des relations (accessible en double-cliquant sur la relation à modifier). Si le modèle a été construit correctement, Access met automatiquement les cardinalités logiques qui devraient s’appliquer entre les tables de la base de données. Il est également possible de choisir deux autres options dans les Modifications des relations : - L’option Mettre à jour en cascade, qui permet de changer automatiquement la valeur d’un champ en cascade. Concrètement, le changement de valeur d’un champ dans la table principale entraînera le changement de la valeur du champ associé (clé étrangère) dans la table avec laquelle elle est liée. 59 - De la même manière que l’option précédente, Effacer en cascade permet d’effacer tous les enregistrements d’une table secondaire si un enregistrement de la table principale à laquelle ils sont rattachés venait à être supprimé. Figure 31: Relations entre les tables dans Microsoft Office Access 60 II.2.2.E – LA MISE EN PLACE DE LISTES DEROULANTES Suite à cela, et avant de partir dans le développement de l’outil, j’ai également créé de nouvelles tables. Ces tables comprennent des champs qui sont mis en correspondance avec les champs des tables d’entités dont les contrôles (zone de texte, liste de choix ou liste déroulante) seront des listes déroulantes. En effet les tables d’entités comprennent toutes un certains nombre de champs qui doivent être renseignés d’après des listes déroulantes qui proposent plusieurs valeurs. Ces listes de choix sont en fait les différents enregistrements d’un champ d’une table construite spécifiquement à cet effet que j’appelle des « tables listing ». Pour cette base de données, j’ai opté pour la création de plusieurs tables de liste en fonction des entités : - une pour chacune des entités caractéristiques d’un secteur, - une pour les ouvrages, - une pour les actions, - une dernière pour l’ensemble des autres entités ponctuelles et zonales. Il est plus pratique de multiplier les tables listing pour retrouver certaines informations lorsqu’il faut les modifier. De plus, associer une table de liste à une table d’entité renforce la logique de la base. Ainsi, comme l’explique d’une manière plus compréhensible la figure suivante, le champ « Style_fluvial » de la table « t_Lmineur » a pour contrôle une liste déroulante qui contient les valeurs non nulles du champ « Style_fluvial » de la table listing « t_liste_Lmin » qui lui est associée. Il est également possible que plusieurs champs fassent appel à une même liste déroulante, comme c’est le cas des champs « Ecoulement_Rupture », « Microsinuosite », « Aterrissements_Nb », « Facies_Div » et « Colmatage_Degre » (table t_Lmineur) qui ont pour contrôle des listes déroulantes dont « Liste_FMF_feminin » (table t_liste_Lmin). 61 le contenu est celui du champ Figure 32: Définition de tables listing pour les listes déroulantes des champs des tables d'entités 62 II.3 – LA PARTIE DEVELOPPEMENT II.3.1 – LA CREATION DE L’INTERFACE GRAPHIQUE : LES FORMULAIRES Pour que les utilisateurs puissent interagir avec l’outil, il fallait avant tout créer l’interface graphique qui puisse leur permettre d’effectuer les opérations de saisie et de traitement que cette application était censée réaliser. Pour mettre en place les propositions retenues (II.1.4.B - Proposition d’aspects graphiques de l’outil), il fallait créer des formulaires à partir de la fonction du menu déroulant Access : Créer / Création de formulaire. Pour commencer j’ai créé le formulaire permettant la saisie et la modification des informations qui doivent être levées lors des prospections terrain et l’ai programmé. Les autres formulaires créés par la suite se sont alors articulés autour de celui-ci. Certains formulaires ne sont que des menus programmés pour permettre aux utilisateurs d’accéder à d’autres formulaires par le biais de boutons, tandis que d’autres sont aussi étroitement liés aux tables de la base de données, autorisant ou non certaines actions susceptibles d’avoir des répercutions sur les informations des enregistrements de ces tables. Ce dernier cas correspond à ce qui a été réalisé sur le formulaire de saisie des informations terrain (entre autres). Ce type de formulaire a pour source une à plusieurs tables, voire des requêtes basées sur des tables (pour n’afficher que certains enregistrements par exemple). Les champs que l’on veut voir apparaître dans le formulaire sont alors liés à des contrôles (zones de texte et listes déroulantes) que l’on place sur le formulaire. Pour le formulaire de saisie et de modification des informations terrain, la partie supérieure correspond aux champs de la table t_Secteur. Concernant les onglets, chacun d’eux correspond à une entité, et donc une table, qui est représentée par un sous-formulaire. Ici aussi, tous les contrôles sont liés à un champ de la table d’entité auquel il appartient. Il est à noter également que tous les champs ne sont pas obligatoirement présents sur le formulaire : - soit parce que le contrôle a été masqué à l’utilisateur, comme les contrôles associés aux champs attribuant un numéro automatique à chaque enregistrement - soit parce qu’il n’a tout simplement pas été ajouté. 63 Toutefois l’interface graphique ne se limite pas à cela. En effet, pour chaque objet graphique, et suivant sa nature, un grand nombre de propriétés (basiques) peuvent être paramétrées (couleur de texte, type de texte, couleur de fond, mise en place d’une image, visibilité, infobulle, évènement…) Figure 33: Interface graphique du formulaire de saisie et de modification Bien évidemment l’interface graphique a été amenée à évoluer au cours du temps suivant les contraintes du projet et les améliorations apportées. Je vous invite donc à naviguer à travers les formulaires qui composent le projet final pour évaluer son ergonomie et sa dimension « esthétique ». Ainsi, on peut remarquer à titre d’exemple que l’emplacement réservé pour l’affichage des photos, prévu lors des propositions, a été supprimé, pour rendre le module de saisie et de modification moins lourd et maximiser l’espace prévu pour renseigner les entités. Néanmoins leur visualisation a été repensée et les photos des entités ont été intégrées dans les États Access, outils d’analyse qui s’apparentent dans notre cas à la version imprimable des informations levées dans nos formulaires. Les états feront l’objet d’une autre partie. Même si leur utilisation n’est pas la même, la mise en place de l’interface graphique des états Access se fait de la même manière que pour les formulaires. 64 II.3.2 – LA PROGRAMMATION DES FORMULAIRES DE MANIERE GENERALE Une fois les objets graphiques placés sur le formulaire, on peut programmer certains évènements, comme le clic sur un bouton, ou le remplissage automatique de certains contrôles suite à certaines actions. La programmation des éléments d’un formulaire, ou d’un état, sous Microsoft Office Access se code dans un environnement de développement intégré au logiciel, dans une fenêtre spécifique, en langage Visual Basic for Applications (VBA). Il est l’un des langages de programmation les plus utilisés pour le développement rapide, car il ne nécessite pas de performances critiques pour pouvoir faire fonctionner un programme, ni d’avoir des connaissances très poussées pour réussir à le créer. Toutefois, il est préférable d’avoir quelques connaissances en programmation afin de créer un outil opérationnel facilement maintenable. Ce langage de programmation événementielle permet ainsi de configurer les actions des composants d’un formulaire mais aussi d’en définir les propriétés. Ces propriétés qui sont les mêmes que dans la partie précédente ont l’avantage ici de pouvoir changer en fonction de certains évènement. Ainsi les propriétés statiques mise en place dans les propriétés du formulaire peuvent devenir dynamiques grâce à la programmation en VBA. Au sein de ce programme, la plupart du codage est assez redondant et souvent de l’ordre des exécutions simplistes, mais nécessaire à la bonne utilisation de l’outil. II.3.2.A – LE GESTIONNAIRE D’ERREURS Cette instruction est généralement utilisée dans les phases de programmation pour déceler les erreurs inattendues des instructions comprises dans un évènement, une procédure, mais aussi dans les phases d’utilisation pour éviter que l’application ne se ferme. Placé automatiquement sur l’évènement clic lors de la création de boutons via l’assistant, le gestionnaire d’erreurs permet, en cas d’erreur des instructions réalisées dans la procédure (quelle qu’elle soit), d’indiquer où elle se situe dans le code et de quel type d’erreur il s’agit, sans pour autant fermer l’application. Sans ce gestionnaire, une erreur d’instruction est irrécupérable : le programme affiche un message avec le code erreur et ferme l’application. 65 Au niveau du gestionnaire d’erreurs, il s’agit de l’instruction On Error GoTo. Habituellement, on place la balise d’ouverture de cette instruction juste après la balise d’ouverture de la procédure, de manière à rendre le gestionnaire d’erreur actif sur l’ensemble du code que contient la procédure évènementielle. Suite au code, on place une ligne Exit Sub, qui permet d’arrêter la procédure si le code s’est exécuté normalement. Mais si cela n’était pas le cas, un message d’erreur devrait être retourné à l’utilisateur. C’est pourquoi les étiquettes de gestion d’erreurs sont souvent situées à la fin de la procédure, après le Exit Sub. Ainsi la programmation du gestionnaire d’erreur donne ceci : Figure 34: Programmation du gestionnaire d'erreurs II.3.2.B – LES ACTIONS DE MENUS Dans le langage VBA, les actions de menus servent à effectuer des actions. Dans le cadre de ce projet le codage de ces instructions nous a permis d’effectuer facilement des tâches telles que l’ouverture ou la fermeture d’un formulaire ainsi que l’enregistrement ou la suppression d’un enregistrement dans les formulaires de saisie de données. Toutefois, les actions de menus ne se limitent pas à cela. Il est possible de réaliser les actions suivantes : - Ajouter un menu - Utiliser une fenêtre de message (MsgBox) - Exécuter une application - Exécuter du code - Envoyer des touches - Définir une valeur - Arrêter des macros 66 Toutes ces actions s’exécutent à partir de l’objet DoCmd, suivi d’un point "." puis du nom de l’action à exécuter. Par défaut, l’interface Visual Basic for Applications déroule la liste des actions relatives à l’objet après avoir tapé l’objet suivi du point ".". La plupart de ces actions possèdent des arguments à renseigner. Certains sont obligatoires et d’autres facultatifs. Par exemple, pour ouvrir un formulaire, seul l’argument FormName (nom du formulaire) est obligatoire pour exécuter cette instruction. Les autres arguments, facultatifs, prendront la valeur par défaut s’ils ne sont pas renseignés. Figure 35: Exemple de l'instruction d'ouverture d'un formulaire en Visual Basic Une autre ligne de code peut aussi être ajoutée à la suite de la ligne DoCmd.OpenForm dans le cadre d’un formulaire de saisie pour ouvrir un formulaire sur un enregistrement particulier : Figure 36: Les différentes options d'ouverture d'un formulaire sur un enregistrement Les autres instructions permettant de fermer un formulaire, de sauvegarder un enregistrement ou de le supprimer se codent tout aussi simplement et sont décrites sur la figure suivante : Figure 37: Code planifiant la fermeture d'un formulaire, la sauvegarde ou la suppression d'un enregistrement 67 II.3.2.C – LA VISIBILITE DES ELEMENTS D’UN FORMULAIRE Cette instruction peut s’avérer utile lorsqu’on veut faire apparaître, ou rendre invisible, un élément du formulaire suite à un évènement. Nous nous trouvons exactement dans ce cas précis dans le formulaire de saisie des informations liées à un secteur de cours d’eau. Lorsque l’on ouvre ce formulaire pour saisir un nouveau secteur, ce dernier ne laisse paraître que les informations générales du secteur, les onglets des formulaires des différentes entités étant masqués. Ils ne deviennent visibles qu’une fois l’identifiant du secteur de cours d’eau renseigné. Cela permet d’ordonner la saisie de l’utilisateur qui doit d’abord renseigner le numéro du secteur avant de pouvoir saisir les informations des entités qui le caractérisent afin d’éviter les erreurs du programme. Dans le cas présent l’erreur serait de renseigner les informations du sous-formulaire avant d’avoir renseigné le contrôle de l’identifiant du champ commun au formulaire et à son sous-formulaire (champs père et fils), ici l’identifiant secteur. On notera également à travers le code dévoilé dans la figure suivante que cette instruction dépend d’une autre instruction : If Then. II.3.2.D – L’INSTRUCTION IF…THEN…ELSE Cette instruction fait partie des structures conditionnelles, qui permettent de tester si une condition est vraie ou non. L’instruction If …Then, forme la plus basique, permet de tester une condition. Si elle est remplie, alors le programme exécute la liste d’instruction définie après le Then. Dans le cas contraire, aucune instruction après le Then n’est réalisée Ici l’ajout du Else permet d’exécuter d’autres instructions dans le cas où la condition ne serait pas remplie, comme nous l’avons vu dans la partie précédente avec la visibilité des entités d’un secteur, expliqué sur la figure qui suit. Toutefois dans ce cas présent, une simple instruction If…Then aurait suffit. 68 Figure 38: Visibilité ou non des entités du secteur à l'ouverture du formulaire secteur L’instruction If…Then…Else a beaucoup été utilisée pour réaliser l’outil interne du département D8 d’ASCONIT, allant même parfois jusqu’à imbriquer plusieurs instructions If. 69 Avec du recul, et avec l’expérience que m’a apporté ce stage, j’utiliserais à l’heure actuelle une instruction If…ElseIf…Else pour tester plusieurs conditions de façon exclusive, sans avoir à imbriquer plusieurs instructions d’affilé. II.3.2.E – LE DEROULEMENT AUTOMATIQUE DES LISTES DEROULANTES Cette instruction a été développée pour tous les contrôles de type « liste déroulante » des différents formulaires de saisie et de modification des données. Le déroulement automatique de la liste déroulante, programmé sur la réception du focus par le contrôle, était une astuce pour rendre la saisie des informations sur le terrain plus pratique et facile lorsqu’elle devrait se faire sur un mini-PC, limitant ainsi les pertes de temps. Figure 39: Instruction de déroulement automatique de liste déroulante Cependant, il m’a fallu répéter le code suivant sur une centaine de contrôle. Même si l’instruction ne prend qu’une seule ligne, il aurait mieux valu procéder différemment de manière à n’avoir cette instruction qu’une fois, mais qui soit valable pour tous les contrôles de type « liste déroulante » du projet, ou à défaut sur chaque formulaire où cette instruction était nécessaire. De cette manière le code aurait été constitué de quelques lignes de code pour l’ensemble des contrôles au lieu d’une ligne, mais pour chacun des contrôles, soit plus d’une centaine au totale. Cela aurait été plus ergonomique. 70 II.3.2.F – AUTOMATISATION DES IDENTIFIANTS DES OBSERVATIONS TERRAIN J’ai suggéré cette amélioration pour optimiser la saisie et éviter à l’utilisateur de taper des doublons, l’identifiant des entités devant être unique (et clé primaire de chaque table).Cette instruction était donc importante car elle permettrait à l’utilisateur de gagner du temps lors de la saisie, sans avoir à se préoccuper de l’unicité de l’identifiant et à se rappeler s’il avait déjà été attribué. Les identifiants des observations terrain sont constitués de deux lettres pour désigner l’entité (exemple : OH pour Ouvrage Hydraulique, PE pour Plan d’Eau ou encore ZH pour Zone Humide) suivi d’un numéro unique. Le contrôle devant être renseigné après le renseignement de n’importe quel champ du formulaire de l’entité en question, le code a été créé sur la procédure évènementielle Après mise à jour (After_Update) de chacun des contrôles du formulaire. Ici aussi, tout comme pour le déroulement automatique des listes déroulantes, le codage aurait pu être retravaillé pour éviter de multiplier les lignes de code pour chaque contrôle. Pour réussir cette amélioration, il a fallu, dans un premier temps, ajouter un champ de type NuméroAuto dans chaque table des observations ponctuelles et zonales observables sur un cours d’eau. Insérer un champ NuméroAuto dans une table permet de générer un numéro unique pour chaque enregistrement de celle-ci. C’est à partir de ce NuméroAuto, généré dans un contrôle de chaque formulaire d’observations, que sont créés les identifiants des entités. Bien entendu le contrôle affichant le NuméroAuto est masqué de manière à ce qu’il n’apparaisse pas à l’écran. Ainsi, après la saisie de n’importe quel champ d’une entité, le contrôle du NuméroAuto génère un nombre, qui est récupéré par le contrôle de l’identifiant de l’entité après avoir écrit les deux lettres caractérisant l’entité. 71 Figure 40: Identifiant automatique de l’entité après mise à jour des autres champs de l’enregistrement (Ici le contrôle de fond violet « Encombre_ID » [lié au champ de type NuméroAuto] a été rendu visible pour la schématisation de l’automatisation de l’identifiant de l’entité.) 72 II.3.2.G – ETIQUETAGE DES CONTROLES DE REMPLISSAGE DES OBSERVATIONS PONCTUELLES Pour pouvoir utiliser de manière optimale les sous-formulaires des entités en mode continu, il fallait que chaque enregistrement tienne sur deux lignes. Pour y arriver, il fallait supprimer les étiquettes de ces contrôles. Cela entraînait le problème de savoir ce qu’il fallait alors renseigner dans chaque contrôle. Les info-bulles permettent justement de pallier cette difficulté. Néanmoins cette solution n’est pas très pratique puisqu’il faut que l’utilisateur place la souris sur chacun des contrôles, et attendre quelques instants, pour avoir cette information. Une des solutions envisagées était de mettre les étiquettes de chaque contrôle en en-tête de formulaire, disposées de la même manière que les contrôles. Ainsi nous aurions su à quoi correspondait chaque contrôle. Cependant, là aussi la solution aurait obligé l’utilisateur à regarder pour chaque contrôle l’en-tête avant de pouvoir remplir le contrôle. La solution la plus adaptée était donc de mettre l’étiquette de chaque contrôle dans la zone de remplissage de ces derniers lorsque celui-ci est vide. Après un certain nombre de recherches et d’essais, j’ai pu trouver comment réaliser cette astuce. Il suffit tout simplement de mettre dans la propriété Format de chaque contrôle le texte suivant : @;[Nom_de_la_couleur]"Texte_de_l’étiquetage" Seul défaut de cette astuce (simple mais méconnue), on ne peut pas spécifier une police ou une taille différente des informations à remplir. De plus les couleurs d’étiquetage sont assez limitées (Noir, Blanc, Rouge, Vert, Bleu). Toutefois, cette solution reste la meilleure disponible. Afin de distinguer les contrôles vides, rempli avec l’étiquette, des contrôles renseignés, j’ai joué sur les couleurs de texte afin que l’utilisateur puisse les discerner sans ambigüité et instantanément. On peut observer le résultat sur la figure précédente. Figure 41: Code d'étiquetage du contrôle Embacle_Rq 73 II.3.3 – LA PROGRAMMATION DE CODES PLUS SPECIFIQUES SUR LES FORMULAIRES II.3.3.A – SAISIR/MODIFIER DEUX ENREGISTREMENTS SIMULTANEMENT SUR UN FORMULAIRE UNIQUE Un des impératifs que devait respecter l’outil était de pouvoir saisir sur un même formulaire, les paramètres des entités Lit majeur, Berge et Ripisylve en rive gauche et en rive droite simultanément, paramètre par paramètre. Afin de pouvoir saisir les entités sur les deux rives en même temps, il aurait fallu que le formulaire soit en mode d’affichage Feuille de données, de manière à pouvoir naviguer d’une ligne à l’autre. Néanmoins cette solution n’était ni ergonomique, ni esthétique. De plus ce mode d’affichage aurait rendu difficile le remplissage de sous-formulaires. J’ai donc opté pour une saisie sur formulaire unique. Or ces formulaires ne peuvent correspondre qu’à un enregistrement, mais je voulais qu’ils en contiennent deux : celui de la rive gauche et celui de la rive droite. Pour ce faire il fallait créer sur le formulaire autant de contrôles que de paramètres à renseigner, soit deux contrôles par paramètre (un pour la rive gauche et un pour la rive droite). Mais contrairement aux autres sous-formulaires que peuvent contenir les formulaires de saisie, ceux-ci ne sont pas liés aux champs d’une table par Access : ils sont indépendants. En effet chaque contrôle indépendant que contiennent ces formulaires est codé pour afficher, enregistrer et supprimer la valeur d’un champ donné, pour un enregistrement donné, dans une table donnée. Une telle programmation a été possible du fait que les éléments Lit majeur, Berge et Ripisylve contiennent un nombre fixe d’enregistrement : un pour chacune des rives, soit deux au total. Ainsi, une fois les différents contrôles renseignés pour chacune des rives, le bouton Enregistrer du formulaire devait sauvegarder les valeurs des paramètres de la rive gauche dans le premier enregistrement et les informations de la rive droite dans le deuxième enregistrement en spécifiant la correspondance de chaque contrôle avec le bon champ dans la table. Cependant bien qu’étant enregistrés dans la table, à la réouverture de ce même formulaire, les contrôles n’afficheraient aucune des valeurs saisies, puisque ces derniers sont indépendants. Il fallait donc rajouter un code spécifique sur la procédure évènementielle d’activation du formulaire. L’affichage de chacune des valeurs des différents contrôles des paramètres rive 74 gauche et rive droite devait être programmée en appelant les valeurs des champs des deux enregistrements sauvegardés dans la table. Quant à la suppression des données, le code nécessaire était plus simple. Il suffisait de supprimer les enregistrements de la table relatifs au secteur sur lequel on effectuait la saisie et de forcer l’affichage des contrôles indépendants sur une valeur nulle. La programmation de ces éléments n’a pas été aisée, du fait qu’il est survenu très rapidement dans la phase de programmation et que mes compétences en Visual Basic for Applications étaient alors encore assez sommaires. Mais après quelques jours de recherche, de consultation de base et d’essais, je suis enfin parvenu à un résultat satisfaisant qui répondait aux besoins des utilisateurs. L’outil étant une application interne du bureau d’étude Asconit, qui pourrait de plus être externalisée par la suite, le code de ces trois procédures n’a pas été mis à la disposition des lecteurs de ce rapport. Néanmoins les possesseurs de la base de données et des droits administrateurs pourront le visualiser dans le code VBA des formulaires f_Lmineur, f_Lmajeur, f_Berge et f_Ripisylve. Figure 42: Liens des paramètres des deux rives avec les deux enregistrements dans la table associée 75 II.3.3.B –SOURCE ET ENREGISTREMENTS DU FORMULAIRE ACTIONS DEFINIS SUIVANT SON OUVERTURE Au début du projet, le formulaire des actions était l’un des onglets du formulaire Secteur et du formulaire Observations. Les utilisateurs devaient donc saisir l’identifiant de l’objet puis renseigner les différents paramètres de l’enregistrement relatif à une action. Bien entendu un objet peut avoir plusieurs actions, auquel cas il y a autant d’enregistrements que d’actions. Toutefois cette méthode a été abandonnée début Août car elle était trop lourde à saisir, pas assez pratique et ne retranscrivait pas le rendu attendu. Après plusieurs heures de discussions avec Sylvain WILLIG sur ce sujet, nous sommes parvenus à une solution plus adaptée, détaillée ci-dessous : Les actions de chaque objet devaient être saisies depuis les enregistrements de ces derniers et ne devaient afficher que les actions de l’objet en question, et de façon à ce que l’utilisateur n’ait pas à renseigner l’identifiant de l’objet. Il fallait que cela soit automatique. Toutefois dans le module de consultation de l’outil, l’utilisateur devait pouvoir voir la liste de toutes les actions à réaliser, classées par secteur, puis par entité, de manière à avoir une vision organisée des interventions suggérées. Or les formulaires des différentes entités étaient déjà « bien remplis » et ne pouvaient accueillir un nouveau sous-formulaire. Il fallait donc placer un bouton, dans chacun des onglets représentant une entité, qui ouvrirait le formulaire des actions. De ce fait, chaque entité, soit plus d’une vingtaine en englobant les deux formulaires de saisie, devait ouvrir un formulaire Actions à laquelle elle serait liée. Malheureusement, lier chaque entité à un unique formulaire Actions s’est avéré problématique. Le champ Entite_ID du formulaire des actions devait pouvoir correspondre à tous les autres identifiants des objets des diverses entités, mais ce ne fût pas le cas, sans qu’une raison évidente puisse être identifiée. Pour pallier à ce problème, je pouvais donc créer un formulaire Actions par entité, soit une vingtaine. Néanmoins je ne trouvais pas que cette façon de procéder était la plus adaptée. Elle multipliait les formulaires et rendait la base moins « professionnelle », moins « propre » selon moi. Je devais donc trouver un moyen d’optimiser cette pseudo-solution. C’est pourquoi je voulais créer un formulaire Actions indépendant à l’origine, mais qui lorsqu’il serait ouvert depuis l’enregistrement d’un objet d’une entité, n’afficherait et n’enregistrerait les futures actions à saisir que pour cet objet. 76 Ainsi, il fallait que la source du formulaire des actions évolue en fonction du bouton d’ouverture, selon que ce dernier se trouvait sur le formulaire d’une entité ou sur celui d’une autre. De plus, la source devait être une requête, de façon à pouvoir sélectionner juste l’enregistrement actif de l’objet. Les identifiants de l’objet et du secteur devraient ensuite être récupérés dans l’enregistrement en question et saisis automatiquement dans les contrôles appropriés du formulaire Actions lorsque l’utilisateur voudra suggérer de nouvelles interventions sur cet objet. Pour les mêmes raisons que dans la partie précédente, il m’est impossible de dévoiler le code qui permet d’afficher et de renseigner le formulaire des actions. Cependant la démarche pour aboutir au résultat est énoncée ci-dessous. Comme nous l’avons précisé plus haut dans cette partie, l’ouverture du formulaire des actions devait être déclenchée sur le clic d’un bouton, placé dans chacun des formulaires d’entités. Suivant l’entité, on attribuait de façon automatique la source du formulaire des actions à son ouverture. Pour réaliser ceci, j’ai donc créé une variable publique, utilisable dans tous les formulaires de la base, afin de lui attribuer une valeur unique à chacune des entités des deux formulaires de saisie. Ainsi, lorsque l’utilisateur clique sur le bouton pour déclencher l’ouverture du formulaire des actions, le bouton attribue d’abord à cette variable publique une valeur propre à l’entité à partir de laquelle il appelle le-dit-formulaire. Ensuite, au moment de l’ouverture du formulaire Actions, le programme choisit le code attribuant la source des enregistrements de ce formulaire qu’il faut déclencher suivant la valeur qu’a prise la variable publique ; qui indique quelle entité est à l’origine de l’ouverture. Cette source d’enregistrement correspond à un objet Access de type « Requête ». Il en existe une pour chaque entité des formulaires de saisie. Arrivé à cette étape, le formulaire des actions affiche maintenant les enregistrements des actions liés à l’objet actif du sousformulaire de l’entité du formulaire de saisie. Il faut maintenant renseigner, s’ils sont vides, les contrôles des identifiants Entite_ID et Secteur_ID du formulaire après renseignement des autres contrôles du formulaire. Ainsi, 77 après la mise à jour d’un contrôle, le programme exécute une requête SQL (dépendante de la variable publique) qui sélectionne l’enregistrement du sous-formulaire de l’entité à partir de laquelle le formulaire des actions a été ouvert. Il est à noter que cette opération est complètement transparente pour l’utilisateur. L’enregistrement sélectionné, le programme récupère alors les identifiants de l’objet et celui du secteur pour remplir les contrôles (invisible pour l’utilisateur) qui requièrent ces informations. Figure 43: Processus du codage des actions d'un objet d'une entité Pour résumer, à chaque entité (soit chaque onglet) des deux formulaires de saisie est associée une valeur pour la variable publique. Chaque valeur de cette variable permet : - d’attribuer ensuite la requête Access correspondante qui devient la source du formulaire des actions. - de récupérer les identifiants de l’objet et du secteur pour remplir les contrôles du formulaire Actions qui les demandent. 78 Toutefois, le codage n’était pas fini. Il fallait également prévoir le cas d’éventuelles mises à jour des objets. Par exemple l’attribution d’un nouveau secteur pour un objet ou la suppression des actions lorsque l’objet auquel il est lié doit être supprimé. L’idée de n’avoir qu’un formulaire dont les éléments sont dépendants de cas (méthode Select Case) avait d’abord été développée pour le module d’Edition des listes déroulantes, module indispensable pour que les utilisateurs puissent mettre à jour eux même plus de 90% des listes déroulantes que contiennent les formulaires de saisie. Comme son utilisation était très pratique et que son administration était plutôt simple, j’en ai repris le concept pour l’adapter au niveau du formulaire des actions, plus compliqué. II.3.3.C – MISE EN PLACE D’UN SPLASH SCREEN Tout d’abord qu’est ce qu’un splash screen ? Il s’agit dans le langage informatique de la toute première fenêtre affichée au démarrage d’un logiciel, généralement pendant le chargement de ce dernier, d’où son nom (splash screen signifiant fenêtre d’attente). Cette fenêtre, que beaucoup de logiciels professionnels utilisent, montre généralement une image d’ouverture ou un logo qui caractérise celui-ci avec le nom de l’outil et parfois le numéro de la version. Les noms des principaux acteurs du projet (concepteurs, coordinateurs, analystes, testeurs…) peuvent également s’y trouver. Bien que la mise en place d’un formulaire de ce type n’apporte aucune fonctionnalité, elle permet d’apporter un plus esthétique à l’outil et le rend plus professionnel. Dans le cadre de cet outil, j’ai proposé plusieurs acronymes décrivant l’outil dont les lettres donnent un nom en rapport avec la thématique concernée ; les cours d’eau. 79 Les polices de caractères utilisées pour le texte sont entièrement gratuites et téléchargeables sur internet. Du fait que le splash screen soit une image, le numéro de version a délibérément été omis pour ne pas avoir à modifier l’image à chaque amélioration majeure de l’outil Figure 44: Images réalisées pour le Splash screen de l'outil 80 La deuxième image a été retenue pour la fenêtre d’ouverture, C’est autour de cette illustration que l’on crée le splash screen. Pour cela, il faut créer un nouveau formulaire dans lequel on met un contrôle Image, de manière à lui associer l’image réalisée, que nous intégrons au SGBD. Au niveau de la programmation, nous nous appuyons sur l’une des fonctions les moins utilisées d’Access. Il s’agit de l’une des fonctions les plus méconnues, à savoir la minuterie. En effet c’est à partir de cette propriété qu’il est possible de réaliser cette fenêtre particulière. On définit tout d’abord la propriété du formulaire Intervalle minuterie. Néanmoins, il faut faire attention : cette propriété est à renseigner en millisecondes. Ainsi pour définir le temps d’affichage de la fenêtre à 5s, il faut mettre la valeur 5000. Ensuite sur la procédure évènementielle Sur minuterie, On programme l’arrêt de la minuterie, l’ouverture du formulaire d’accueil et la fermeture du splash screen. Figure 45: Arrêt et fermeture du Splash screen 81 II.3.4 – LA PROGRAMMATION SUR LES ETATS : L’AFFICHAGE DES PHOTOGRAPHIES Les états s’administrent de la même manière que les formulaires, que ce soit au niveau du rendu graphique avec la mise en place de différents éléments (contrôles, sous-états…), ou au niveau de la programmation en Visual Basic for Applications. Néanmoins l’utilisation des états est différente de celle des formulaires. Alors qu’un formulaire est plutôt créé pour agir (ajouter, modifier, supprimer) sur les données des enregistrements des différentes tables de la base, l’état sert plutôt à visualiser ces données (en lecture seule), les imprimer ou encore les exporter sous d’autres formats (Microsoft Office Word, Microsoft Office Excel, PDF…). Il y a très peu de code qui concerne les états du fait qu’ils ne font qu’afficher les données. Le code qui concerne ce type d’objet Access est celui réalisé pour afficher les photos. Les photographies d’une étude étant nombreuses et très gourmandes en termes de taille, il était primordial de ne pas les intégrer dans la base de données. Cela aurait considérablement alourdi la base pouvant aller jusqu’à entraver son bon fonctionnement. De ce fait il fallait les placer dans un dossier spécifique, que nous avons appelé « Photos de l’étude » de façon à ce que la base puisse lier les photos à associer aux valeurs des contrôles des états correspondants. Toutefois, bien que des emplacements pour les photos aient été réservés sur les états, nous ne pouvons pas les associer à un fichier image en particulier, puisque les photographies à afficher sont dépendantes des enregistrements. À chaque enregistrement, soit un objet d’une entité, de nos différents états (fiches Secteur, fiches Ouvrage, fiche Plan d’eau et fiche Zone humide) sont associés les deux photographies les plus représentatives de l’objet. C’est pourquoi une source fixe à la propriété Image des contrôles de type Image n’était pas envisageable. Pour chacun des deux contrôles Image, cette propriété devait affecter l’image correspondante au cas par cas. C’est pourquoi j’ai programmé l’affichage d’une photo selon un autre contrôle, à remplir dans les formulaires de saisies, qui doit contenir le nom exact du fichier photo à afficher, extension comprise (exemple DSN0034.jpg). Pour faciliter la programmation du chemin d’accès aux photographies, le dossier photo doit être placé au même endroit que la base de données pour pouvoir utiliser la méthode CurrentProject.Path. Cette méthode, très pratique, permet de déterminer l'emplacement de l’outil. À celui-ci on ajoute alors le nom du dossier « Photos de l’étude », qui a un nom fixe et 82 non modifiable, et enfin le nom complet du fichier photo pour avoir le chemin de la photo à afficher. De cette manière, l’outil sait quelle photo il doit afficher dans quel enregistrement. Dans le cas où l’utilisateur aurait laissé des emplacements vides, une image de remplacement sera affichée dans ces contrôles pour manifester l’attention de l’utilisateur de manière à ce qu’il puisse mettre à jour ou non les renseignements pour placer de nouvelles photos. De plus, j’ai optimisé ce code en l’affectant à la procédure évènementielle de formatage de la section Détail des états, sur laquelle sont situés les emplacements prévus pour les photos. Ainsi, seules les photos de l’enregistrement en visualisation sont chargées afin d’alléger au maximum la base de données. Figure 46: Etat d'une Fiche Secteur (recto) 83 84 85 III – LES OUTILS DE PRODUCTION AUTOMATIQUE DE CARTES Comme précisé en INTRODUCTION de ce rapport, cette partie, prévue dans le stage à l’origine, n’a malheureusement pas pu être finalisée. Cet abandon forcé a été le résultat d’un retard sur le planning de départ qui s’est accumulé avec le temps pour diverses raisons : problèmes de communication, temps de réponse et de validation, difficultés techniques rencontrées... III.1 – LES BESOINS Suite aux levés de terrain réalisés pour récolter des informations sur les cours d’eau, et aux différents post-traitements qui s’en suivent, les géomaticiens doivent ensuite réaliser les atlas cartographiques basés sur ces données. Un maximum de paramètres, au moins les principaux et les plus discriminants, doivent être représentés dans cet atlas qui sert d’aide à la décision. Cependant le travail est long et répétitif. Le temps passé à réaliser ces cartes pourrait donc être optimisé si des outils étaient mis en place pour automatiser certaines opérations de la procédure de création de ces dernières. III.1.1 – LE PROCESSUS DE CREATION ACTUEL Afin de pouvoir répondre aux besoins exprimés par les cartographes, je devais savoir exactement comment ils procédaient pour réaliser les atlas cartographiques, une fois les informations levées grâce aux outils terrain récupérées. Après un entretien avec Céline THYRIOT et Olivier PETOT, les deux sigistes chargés de la production cartographique, j’ai pu avoir une idée plus précise des traitements réalisés. 86 Ainsi la création d’atlas cartographiques débute avec la récupération de : - la couche de cours d’eau de l’étude, issue de la BD CARTHAGE, - du fichier de points GPS levés sur le terrain, matérialisant les limites de secteurs ou de tronçons des cours d’eau en fonction de l’échelle de travail des utilisateurs, - la base de données contenant les informations des différents paramètres levés sur le terrain. La réalisation peut alors commencer. - Les couches cartographiques sont tout d’abord placées dans un nouveau document ArcGIS - Les points GPS sont alors projetés orthogonalement sur le cours d’eau le plus proche - Le cartographe réalise ensuite le découpage des cours d’eau en secteurs à partir des points qu’il vient de projeter. - Suite à cette opération, on ajoute un nouveau champ à la couche des secteurs de cours d’eau : il s’agit de l’identifiant du Secteur, correspondant au champ Secteur_ID dans la base de données réalisée durant ces 6 derniers mois. - Après avoir vérifié que le sens des polylignes des cours d’eau soit le même que le sens d’écoulement, les secteurs sont dupliqués par Copie parallèle en rive gauche et en rive droite à une distance de 50m à l’échelle du 10 000°. Ces polylignes serviront à représenter différents paramètres suivant le thème que doit aborder la carte (exemple : la ripisylve). Chaque ligne peut représenter jusqu’à trois paramètres différents en fonction de son épaisseur, de son type de trait et de sa couleur. - Une couche de buffers (zones tampon) d’une largeur de 100m est ensuite créée à partir de la fonction appropriée dans l’outil ArcToolBox sur la ligne centrale les secteurs de cours d’eau. - Ces buffers sont alors découpés de manière à obtenir un buffer de 50 m de chaque côté de la ligne de secteur pour représenter l’occupation des sols de chaque rive. - Toutes ces couches sont caractérisées par le champ Secteur_ID qui permet grâce à la création de jointure de faire le lien avec les différentes tables de la base de données permettant ainsi de paramétrer les entités géographiques. - Enfin les typographies peuvent être définies par la propriété Symbologie de chaque couche. 87 III.1.2 – MON OBJECTIF Je devais rechercher des modules existants ou en développer de nouveaux qui auraient permis d’automatiser les traitements des productions cartographiques, toujours dans l’optique d’améliorer la productivité et d’éviter un travail pénible et répétitif aux cartographes. Il est à noter que ce travail devait être réalisé sur le logiciel ArcGIS 9.3. III.2 – LA PARTIE DEVELOPPEMENT III.2.1 – CHOIX DU LANGAGE DE PROGRAMMATION Pour essayer d’automatiser les étapes de la production cartographique deux langages pouvait être utilisé : Python et/ou Visual Basic for Applications, bien qu’à programmer les deux se ressemblent fortement. Néanmoins, bien qu’ayant une certaine connaissance de la programmation sous VBA, il m’était difficile de l’appliquer sous ArcGIS, en n’ayant aucune connaissance du codage d’éléments cartographiques géoréférencés. La programmation des instructions, pour en avoir trouvé des exemples, n’avait que peu de points communs avec celles que j’ai eues à réaliser jusque là durant le stage. Or je n’avais pas assez de temps pour pouvoir me plonger dans l’apprentissage de ce nouveau niveau de programmation. J’ai donc opté pour une troisième solution : l’automatisation de la production cartographique par la réalisation d’un Model Builder via l’outil ArcToolBox. Cependant si certaines étapes pouvaient être simplifiées par des outils déjà existants, je me devais de les trouver et de les proposer. 88 III.2.2 – LES OUTILS C’est ainsi que je suis allé sur les sites américain et européen du support ESRI, éditeur du logiciel ArcGIS, pour tenter de trouver des scripts existants qui répondraient aux besoins d’automatisation de certaines étapes. Des outils ont pu être trouvés pour réaliser la projection orthogonale des points GPS sur les polylignes de cours d’eau, dont la description et le téléchargement sont disponibles sur ce lien1, et pour les découper d’après les nouveaux points créés, comme le montre la démonstration2. 1 (http://support.esrifrance.fr/outilsscripts/arcgis/arcmap/Vecteur/AccrochagePointLigne/Accr ocher.html) 2 (http://support.esrifrance.fr/outilsscripts/arcgis/arcmap/geometrie/decouperlignesparpoints/de couperlignesparpoints.html) D’autres scripts peuvent même être développés pour permettre d’automatiser un certains nombres de traitements, plus ou moins difficiles. C’est le cas de ET Geotools et ET Geowizards , développés par ET SpatialTechniques, qui sont des extensions ArcGIS sous la forme de barres d’outils. Dans notre projet, c’est surtout ET GEowizards qui nous intéresse. Outre le fait qu’il peut réaliser les deux premiers traitements, il peut aussi afficher le sens des lignes et créer des couches sans avoir à ouvrir ArcCatalog. Malheureusement je n’ai pas eu le temps d’approfondir les possibilités de cet outil. Cependant, ce procédé me semblait être assez lourd et toujours aussi répétitif, bien que déjà plus rapide. C’est pourquoi la mise en place d’un Model Builder aurait pu réaliser en un clic un grand nombre d’étapes, si ce n’est toutes, pour réaliser une carte thématique. Ce modèle aurait combiné des outils déjà existant, et d’autres qu’il aurait fallu créer. Par conséquent une programmation en Visual Basic aurait surement été inévitable. Toutefois, même sans aller jusqu’à réaliser le modèle, les couches et les jointures auraient pu être créées à l’avance, tout comme la typographie des différentes cartes à produire et leur mise en page, en prévoyant tous les cas de figure des différents paramètres qui pourraient apparaître en légende. 89 90 91 CONCLUSION Ce projet réalisé pour les Départements Biodiversité et Gestion des milieux et Système d’Information Géographique du bureau d’étude ASCONIT Consultants fût très intéressant et formateur. J’ai pu aborder un sujet particulièrement intéressant et important dans les SIG, puisqu’il s’agit de la mise en place d’un système de gestion de base de données. Toutefois, la réalisation de cet outil ne s’est pas faite sans difficulté. En effet, mes connaissances en programmation Visual Basic for Applications étaient d’un niveau assez rudimentaire : je savais réaliser des procédures privées avec des instructions simples qui pouvaient éventuellement faire appel à des variables, mais guère plus. Ce stage m’a permis une autoformation beaucoup plus avancée au fur et à mesure des besoins utilisateurs à combler. Je regrette toutefois de ne pas avoir pu réaliser la partie concernant la production automatique des atlas sous ArcGIS. Le retard accumulé, relatif à certaines démarches essentielles qui ont duré plus longtemps que prévu ou souhaité (problème de communication liée à la disponibilité de chacun, étapes de validation, codage particulièrement difficile de certaines instructions…), ne m’ont pas permis d’aller au bout de ce projet dans le temps imparti malgré ma motivation. Toutefois dans l’ensemble, ce projet restera une bonne et belle expérience, me permettant de me familiariser beaucoup plus avec les bases de données, leur conception et leur gestion, mais aussi de gagner d’avantage en compétences de programmation, et notamment en langage Visual Basic for Applications. J’espère que mon travail durant ces six mois au sein de cette structure a été apprécié de tous. Je souhaite également que l’outil réalisé soit largement diffusé et utilisé dans le Département Biodiversité et Gestion des milieux et qu’il continue d’être mis à jour et amélioré par le biais du Département Système d’Information Géographique. ASCONIT envisageait d’externaliser cet outil auprès de ses clients ou autres. Cette pensée est alors devenue mon « ambition » pendant ce stage et je pense avoir conçu une base assez solide pour permettre à l’outil d’atteindre cet objectif dans un futur proche. 92 93 LEXIQUE Abstraction (informatique) : concept identifiant et regroupant des caractéristiques et traitements communs applicables à des entités ou concepts variés permettant la simplification de leurs manipulations. [www.wikipedia.fr] BD CARTHAGE : base de données complète du réseau hydrographique français. [www.IGN.fr] Étiage : niveau moyen le plus bas d'un cours d'eau. [www.larousse.fr] Hélophytes : plante des marais enracinée et bourgeonnant dans la vase du fond de l'eau, mais dont le sommet émerge à l'air libre, telle que la sagittaire, la massette, divers roseaux, etc. [www.larousse.fr] Hydrophytes : désignation scientifique des plantes des eaux douces. [www.larousse.fr] Splash screen : première fenêtre affichée au démarrage d’un logiciel, généralement pendant le chargement de ce dernier, d’où son nom (splash screen signifiant fenêtre d’attente). Cette fenêtre, que beaucoup de logiciels professionnels utilisent, montre généralement une image d’ouverture ou un logo qui caractérise celui-ci avec le nom de l’outil et parfois le numéro de la version. Les noms des principaux acteurs du projet (concepteurs, coordinateurs, analystes, testeurs…) peuvent également s’y trouver. [www.developpez.com] 94 95 REFERENCES Les sites internet suivant ont été largement mis à contribution dans la réalisation de ce projet que ce soit au niveau de tutoriels ou des morceaux de codes/scripts qu’ils proposent, sans oublier les forum qui m’ont permis de progresser en programmation et de résoudre certains problèmes rencontrés. http://arcscripts.esri.com/ http://www.codes-sources.com/ http://www.commentcamarche.net/ http://www.developpez.com/ http://www.forumsig.org/ http://www.generation-nt.com/ http://www.self-access.com/cms/ http://support.esrifrance.fr/ http://support.microsoft.com/ Le dernier accès à ces sites remonte au 02 Septembre 2011. Ces liens étaient alors toujours valides. 96 97 TABLE DES ILLUSTRATIONS Figure 1: Carte de situation [Plaquette ASCONIT Consultants –Mieux nous connaître, Décembre 2008] ....................................................................................................................... 10 Figure 2: Planning de stage ...................................................................................................... 20 Figure 3: Exemple de données et de leurs relations à travers trois bases de données existantes [ASCONIT] .............................................................................................................................. 24 Figure 4: Schéma de rivière type [site internet de la campagne "La Rivière m’a dit…"] ........ 25 Figure 5: Extrait du dictionnaire de données créé .................................................................... 27 Figure 6: Filtres textuels dans Microsoft Office Excel 2007 ................................................... 29 Figure 7: Résultat du filtre textuel visible en Figure 4 ............................................................. 29 Figure 8: Fichier de synthèse des informations contenues dans le dictionnaire des données existantes .................................................................................................................................. 30 Figure 9: Extrait du dictionnaire de données de l'outil mis en place........................................ 33 Figure 10: Lien existant entre le champ d'une table et son homologue dans une table de listes .................................................................................................................................................. 34 Figure 11: Mode de saisie sur formulaire unique ..................................................................... 37 Figure 12: Mode de saisie sur formulaire à onglets ................................................................. 38 Figure 13: Questionnaire définissant les besoins utilisateurs ................................................... 39 Figure 14: Interface générale et modules qui en découlent ...................................................... 42 Figure 15: Formulaire de saisie (onglet Lit majeur) ................................................................ 42 Figure 16: Formulaire de saisie (onglet Ripisylve) .................................................................. 43 Figure 17:Première version de la saisie d'objets ponctuels et zonaux...................................... 44 Figure 18: Deuxième version de la saisie d'objets ponctuels et zonaux................................... 45 Figure 19: Troisième version de la saisie d'objets ponctuels et zonaux ................................... 46 Figure 20: Cycle d'abstraction de conception des systèmes d'information .............................. 47 98 Figure 21:Interface utilisateur du logiciel DBDesigner 4 ........................................................ 51 Figure 22: Barre d'édition sous DBDesigner 4......................................................................... 52 Figure 23: Volet Navigateur & infos sous DBDesigner 4 ....................................................... 52 Figure 24: Volet Modèle de BD sous DBDesigner 4 ............................................................... 53 Figure 25: Volet Type de données sous DBDesigner 4 ............................................................ 53 Figure 26: Edition de la table t_Secteur et t_Lmajeur sous DBDesigner 4 ............................. 54 Figure 27: Edition de la relation entre les tables t_Secteur et t_Lmajeur sous DBDesigner 4 .................................................................................................................................................. 55 Figure 28: Module d'exportation du modèle en script SQL ..................................................... 56 Figure 29: Extrait du fichier d'exportation du modèle en SQL créé sous DBDesigner 4 ........ 57 Figure 30: Importations des tables sous Access ....................................................................... 58 Figure 31: Relations entre les tables dans Microsoft Office Access ........................................ 60 Figure 32: Définition de tables listing pour les listes déroulantes des champs des tables d'entités ..................................................................................................................................... 62 Figure 33: Interface graphique du formulaire de saisie et de modification.............................. 64 Figure 34: Programmation du gestionnaire d'erreurs ............................................................... 66 Figure 35: Exemple de l'instruction d'ouverture d'un formulaire en Visual Basic ................... 67 Figure 36: Les différentes options d'ouverture d'un formulaire sur un enregistrement ........... 67 Figure 37: Code planifiant la fermeture d'un formulaire, la sauvegarde ou la suppression d'un enregistrement .......................................................................................................................... 67 Figure 38: Visibilité ou non des entités du secteur à l'ouverture du formulaire secteur .......... 69 Figure 39: Instruction de déroulement automatique de liste déroulante .................................. 70 Figure 40: Identifiant automatique de l’entité après mise à jour des autres champs de l’enregistrement ........................................................................................................................ 72 Figure 41: Code d'étiquetage du contrôle Embacle_Rq ........................................................... 73 Figure 42: Liens des paramètres des deux rives avec les deux enregistrements dans la table associée..................................................................................................................................... 75 Figure 43: Processus du codage des actions d'un objet d'une entité ........................................ 78 99 Figure 44: Images réalisées pour le Splash screen de l'outil .................................................... 80 Figure 45: Arrêt et fermeture du Splash screen ........................................................................ 81 Figure 46: Etat d'une Fiche Secteur (recto) .............................................................................. 83 100 101 ANNEXES 102 ANNEXE 1 : PLANNING DE STAGE 103 ANNEXE 2 : MODELE CONCEPTUEL ET PHYSIQUE DE DONNEES 104 105 ANNEXE 3 : GUIDE D’UTILISATION Sommaire Préambule ............................................................................................................................... 107 I – Pré-requis et informations générales ................................................................................. 107 I.1 – Les logiciels ............................................................................................................... 107 I.2 – La résolution .............................................................................................................. 108 I.3 – L’administration de l’outil ......................................................................................... 108 I.4 – Le découpage d’un cours d’eau ................................................................................. 109 II – Les formulaires ................................................................................................................ 110 II.1 – Exécution de l’outil .................................................................................................. 110 II.2 – Le menu principal ..................................................................................................... 111 II.2.1 – Le bandeau ......................................................................................................... 111 II.2.2 – Le corps du menu .............................................................................................. 112 II.3 – Le module de saisie des données .............................................................................. 113 II.3.1 – Saisir un nouveau secteur de cours d’eau .......................................................... 114 II.3.2 – Saisir de nouvelles observations ponctuelles ..................................................... 114 II.4 – Les formulaires de saisie des données ...................................................................... 115 II.4.1 – Le formulaire secteur ......................................................................................... 115 II.4.2 – Le formulaire des observations ponctuelles ...................................................... 119 II.5 – Le module de modification des données .................................................................. 119 II.5.1 – Modification des informations levées ................................................................ 120 II.5.2 – Modifications autres .......................................................................................... 122 II.6 – Le formulaire Editer les listes déroulantes ............................................................... 122 II.7 – Le module de consultation des données ................................................................... 123 II.8 – Le module des requêtes de synthèse ......................................................................... 126 Table des illustrations............................................................................................................. 128 Annexe ................................................................................................................................... 129 Page 106 PREAMBULE Cet outil est un Système de Gestion de Base de Données (SGBD) développé sous Microsoft Office Access. Il permet d’automatiser les opérations de saisie, de traitements et de restitutions de données sur des études spécifiques à la gestion de milieux naturels, principalement les cours d’eau. La vocation de l’outil est de permettre l’élaboration de l’état des lieux, du diagnostic et du programme d’actions relatifs aux différents compartiments de l’hydrosystème, en tenant compte des spécificités de chacun des compartiments le composant et des aménagements qui ont pu y être réalisés. I – PRE-REQUIS ET INFORMATIONS GENERALES I.1 – LES LOGICIELS Pour fonctionner normalement, cette application métier nécessite que soit installé le logiciel Microsoft Office Access, à partir de la version 2003. Toutefois, cet outil n’a besoin que du moteur d’exécution d’Access appelé Runtime pour être entièrement exploité. Pour les utilisateurs qui ne disposeraient pas de la licence du logiciel, le Runtime est d’office fourni avec l’outil afin de leur permettre une utilisation immédiate après installation. Toutefois, les différentes versions du Runtime Access, disponibles librement et gratuitement, peuvent être téléchargé à partir l’adresse internet suivante : http://www.microsoft.com/downloads/fr-fr/details.aspx?FamilyID=57a350cd-5250-4df6bfd1-6ced700a6715 (lien toujours valide au 02/09/2011) Un module nécessite également de posséder Microsoft Office Outlook, à partir de la version 2003, pour pouvoir contacter l’administrateur de l’outil pour toute demande de son ressort. Page 107 I.2 – LA RESOLUTION Cet outil a été développé pour être manié en temps réel lors des levés d’informations sur le terrain et être utilisé ensuite en bureau pour les opérations de post-traitement. Il a donc été conçu pour être exploité sur de petits écrans, comme ceux des mini-PC (netbooks) ou des tablettes tactiles, ainsi que sur des plus grands, à l’image de ceux des laptops (PC portables) et des PC fixes. C’est pourquoi l’outil a été élaboré pour s’adapter à une résolution optimale de 1024x600 pixels quand il est manipulé sur de petits supports et de 1680x1050 pixels pour les plus grands. En dehors de ces résolutions, l’affichage de certains éléments peut être tronqué, et la visualisation rendue plus difficile. I.3 – L’ADMINISTRATION DE L’OUTIL L’outil étant complexe, l’ajout et/ou la modification de champs dans les tables doi(ven)t être réalisé(s) par un administrateur et non un utilisateur en raison du codage, souvent important qui se trouve derrière ces éléments. Il en va de même pour la modification des interfaces et des formulaires qui le composent. Néanmoins certaines modifications peuvent être effectuées par l’utilisateur à l’intérieur de l’outil pour modifier certaines données (informations saisies et contenu de certaines listes déroulantes). Mis à part ce cas précis, l’utilisateur devra passer par l’administrateur. Quant à la programmation de procédures évènementielles sous Visual Basic, elle est du ressort exclusif de l’administrateur. Ce code est protégé par mot de passe et n’est visible et accessible que par l’administrateur, afin d’éviter toute dégradation de l’outil. Afin de lui faciliter le travail, un module sur la page d’accueil permet à l’utilisateur d’écrire et d’envoyer un mail à l’administrateur de l’outil. Il devra être équipé de Microsoft Office Outlook (à partir de la version 2003) et d’une connexion internet. Page 108 I.4 – LE DECOUPAGE D’UN COURS D’EAU Afin de bien comprendre la logique dans laquelle s’inscrivent ce programme et la façon dont il doit être exploité, il convient de rappeler comment sont structurés les cours d’eau dans cet outil. Dans le cadre de cette application, les cours d’eau sont caractérisés par plusieurs compartiments : lit mineur, lit majeur, berges et ripisylves, sans oublier les observations ponctuelles et zonales (encombre, plan d’eau, zone humide…), où chacun de ces composants est décrit par plusieurs paramètres. Les cours d’eau ne sont pas homogènes sur l’ensemble de leur linéaire ; dans le cadre d’études diagnostiques, ils sont découpés en tronçons homogènes du point de vue des grands paramètres physiques (pente, sinuosité, confluences…), puis subdivisés en secteur homogènes du point de vue du fonctionnement morphodynamique, du gabarit, de l’occupation du sol…. Au sein de l’outil, vous travaillerez à l’échelle la plus précise : le secteur homogène. Dans le cas où les tronçons ne sont pas subdivisés en secteur, il y aura correspondance systématique entre les deux entités. Page 109 II – LES FORMULAIRES Cette application est composée de quatre modules principaux, accessibles à partir de l’écran d’accueil : - Un module de saisie des données, pour lever les informations d’un cours d’eau lors des prospections sur le terrain. - Un module de modification, pour rectifier des données déjà saisies ou remanier le contenu des listes déroulantes qui servent à renseigner les informations de cours d’eau. - Un module de consultation, permettant de consulter les principaux éléments de l’étude. - Un module de requêtes statistiques pour fournir au diagnostic des chiffres concrets pour différents niveaux de regroupement. Figure 47: Schéma organisationnel des principaux liens entre les formulaires (Ce schéma est également visible en version agrandie en Annexe) II.1 – EXECUTION DE L’OUTIL Au lancement de l’outil, une première image apparaît avec quelques informations propres à l’outil (nom, concepteur, coordinateurs…). Après un délai de 5 secondes, ou par un simple clic sur cet objet, il disparaît pour laisser place au formulaire d’accueil de l’outil, menu principal de l’application. Page 110 II.2 – LE MENU PRINCIPAL Ce menu est composé d’un bandeau, contenant 3 boutons et de 4 boutons dans le corps de la fenêtre : Figure 48: Formulaire d'accueil II.2.1 – LE BANDEAU Concernant les éléments du ruban, il s’agit de modules additionnels pour les deux premiers, mais qui apportent une plus-value à l’outil : Ce bouton permet à l’utilisateur de contacter directement par mail l’administrateur de données. Pour toute intervention sur l’outil (bug, amélioration…). L’icône ci-contre, si elle est cliquée, permet d’accéder au site internet d’ASCONIT Consultants, qui a développé cet outil en interne. Reconnaissable par son symbole, ce bouton active le processus de fermeture de l’application et quitte ensuite Microsoft Office Access ou son runtime. Page 111 II.2.2 – LE CORPS DU MENU Les éléments du corps de la fenêtre en revanche permettent d’accéder aux 4 modules que comporte cet outil. Ils peuvent être classés en deux catégories : - La première, qui se compose des boutons de gauche, représente la partie des manipulations de données. Via les interfaces de ces modules, les données peuvent être créées et traitées en vue de leur exploitation dans la deuxième catégorie. - La deuxième, qui comprend les boutons de droite, s’apparente à la partie de consultation et d’analyse des données. II.2.2.A – LA PARTIE DES MANIPULATIONS DE DONNEES Comme l’indique le texte de ce bouton, il permet d’accéder à l’« Interface de saisie des données » à partir de laquelle est choisi le mode de saisie des informations terrain à lever. Utilisé pour le post-traitement des données saisies à partir de l’interface précédemment citée, ce bouton ouvrira le formulaire de l’« Interface relative à l’édition des données existantes », soit les données qui ont déjà été saisies par l’utilisateur et qui ont besoin d’être modifiées. II.2.2.B – LA PARTIE CONSULTATION ET ANALYSE DES DONNEES Ce bouton donne accès à l’« Interface de consultation des données existantes », qui permet de visualiser et d’imprimer les « fiches » utilisées dans les rendus. Page 112 Ce dernier bouton permet d’accéder à la synthèse des différents paramètres relevés par secteur de cours d’eau, de manière à pouvoir établir le diagnostic sur la base de données chiffrées et parlantes. II.3 – LE MODULE DE SAISIE DES DONNEES Accessible à partir de n’importe quelle interface du programme via le bouton cicontre, ce module propose de lever les informations d’un cours d’eau suivant les compartiments qui le composent et les entités qui s’y trouvent. Ainsi le renseignement de la base de données se fait par entité. Figure 49:Formulaire de l'Interface de saisie des données Deux choix s’offrent alors à vous pour saisir les données : Page 113 II.3.1 – SAISIR UN NOUVEAU SECTEUR DE COURS D’EAU Ce bouton permet d’accéder au formulaire Secteur qui permet de lever toutes observations liées au secteur de cours d’eau que l’on compte renseigner. On y trouve donc les éléments propres au secteur (lit mineur, lit majeur, berge et ripisylve) mais aussi les observations ponctuelles et zonales que l’on veut affecter à ce secteur. Toutes ces entités ont leur propre onglet de renseignement, afin d’organiser au mieux la saisie. II.3.2 – SAISIR DE NOUVELLES OBSERVATIONS PONCTUELLES Ce bouton permet d’ouvrir le formulaire des observations. Contrairement au mode de saisie précédent, les informations relatives au secteur ont disparu, seules demeurent les onglets relatifs aux observations ponctuelles du cours d’eau. La grosse différence, est que les observations restantes qui sont levées ici ne sont pas affectées par défaut à un secteur précis. C’est à l’utilisateur d’attribuer ou non l’entité à un secteur déjà saisi dans le contrôle de chaque onglet, ou de ne conserver comme référence spatiale que l’identifiant du point GPS. Page 114 II.4 – LES FORMULAIRES DE SAISIE DES DONNEES II.4.1 – LE FORMULAIRE SECTEUR Figure 50: Formulaire Secteur Le formulaire se présente, comme défini sur la figure ci-dessus. Lorsque l’on arrive sur le formulaire depuis le bouton de nouvelle saisie, les onglets et leur contenu sont masqués. Il est impossible de saisir les informations des différentes entités sans avoir renseigné au préalable l’identifiant du secteur (1). II.4.1.A – L’IDENTIFIANT SECTEUR Le contrôle dans lequel cet identifiant doit être saisi n’accepte que les lettres, minuscules ou majuscules, les tirets ( - , _ ) et les chiffres. Toute autre saisie de caractères a été interdite pour le bon fonctionnement de la base. Page 115 Dans le cas général, exception faite des contraintes extérieures, l’identifiant du secteur doit être composé de 7 caractères : 3 lettres en majuscule, suivies de 4 chiffres. - Les 3 lettres correspondent à l’acronyme du cours d’eau auquel le secteur appartient. - Les 2 chiffres qui suivent (de 01 à 99) correspondent au numéro de tronçon auquel il est rattaché. - Les 2 derniers chiffres (de 01 à 99) représentent le numéro du secteur à l’intérieur du tronçon. Lorsque les données ne sont renseignées qu’au niveau du tronçon, sans subdivision en secteur, il n’est pas utile de renseigner les deux derniers chiffres : il y a ainsi identité entre secteur et tronçon. Ainsi, si l’on reprend la figure précédente, l’identifiant secteur correspond à « ARO0309 ». Suite à la saisie de l’identifiant, les deux premières cellules verrouillées (fonds gris et contour rouge) (2), correspondant à l’acronyme du cours d’eau et à l’identifiant du tronçon, se remplissent automatiquement et les formulaires des entités deviennent alors visibles (3). II.4.1.B – LES INFORMATIONS DE POST-TRAITEMENT Certaines informations du bandeau correspondant aux informations générales du secteur ne sont pas à renseigner directement sur le terrain. C’est le cas pour la Longeur du secteur et les Communes qui peuvent être renseignées de façon semi-automatique suite au traitement SIG qui nous révèlera ces données. II.4.1.C – LA SAISIE EN GENERAL Dans un premier temps, il est à noter que les contrôles de fonds gris et de contour rouge (2) sont des contrôles verrouillés. Aucune valeur ne peut être remplie par l’utilisateur. Ces valeurs sont renseignées de manière automatique suite à certaines actions. Le renseignement des différentes informations est très simple. Les valeurs de chaque paramètre que contient la base sont soit saisies au clavier s’il s’agit d’une zone de texte (4), soit choisies parmi une liste de choix s’il s’agit d’une liste déroulante (5). Page 116 En fonction des valeurs que vous attribuerez à certains paramètres, d’autres se renseigneront automatiquement, ou deviendront visibles sur le formulaire, à l’exemple du sous-formulaire Facteur(s) limitant la qualité des habitats qui n’apparaît que si une valeur est renseignée dans le contrôle Qualité piscicole des habitats aquatiques (6). Tous les éléments présents sur le formulaire sont légendés : - Soit grâce à une étiquette placée à gauche d’un contrôle, - Soit à l’intérieur du contrôle lui-même lorsqu’aucune valeur n’a encore été renseignée dans celui-ci, - Soit par le biais d’une info-bulle (placer le curseur de la souris dessus et attendre quelques secondes pour la voir apparaître). Chacun des formulaires d’entité possède également trois boutons : Le bouton Action, qui permet d’ouvrir le formulaire de saisie des actions liées à l’objet en cours de renseignement Figure 51: Formulaire Action Page 117 Le bouton Sauvegarder, qui permet de sauver l’enregistrement en train d’être saisi. Bien qu’il ne soit pas indispensable pour les observations ponctuelles des formulaires Secteurs et Observations, IL EST OBLIGATOIRE SUR CHACUN DES ELEMENTS CARACTERISTIQUES D’UN SECTEUR (Onglet Lit mineur, Lit majeur, Berge et Ripisylve). Le bouton Supprimer, sert à effacer toutes les informations relatives à un objet d’une entité. Un message d’information apparaîtra pour vous permettre de confirmer ou d’annuler la suppression avant d’effectuer cette opération définitive. Figure 52: Message d'information sur clic du bouton Supprimer II.4.1.D – LE RENSEIGNEMENT DES PHOTOS Lorsqu’une photo est affectée à l’objet d’une entité, il faut renseigner le nom réel du fichier photo avec son extension. On peut le voir notamment sur la Figure 4, où les deux photos qui caractérisent le secteur sont renseignées « DSN0001.jpg » et « DSN0002.jpg ». Ces photos devront être placées ensuite dans le dossier Photos de l’étude, qui devra être situé dans le même dossier que le fichier .mdb de l’outil. II.4.1.E – LE MODE RIPISYLVE MULTIPLE DE L’ONGLET RIPISYLVE Ce mode est spécifique à certaines études. Le bouton apparaît une fois le formulaire ripisylve renseigné. Le formulaire Ripisylve permet de renseigner les paramètres de la ripisylve en rive gauche et de ceux en rive droite d’un secteur. S’il est nécessaire de saisir plus d’un linéaire de ripisylve par rive pour un même secteur le Mode ripisylves multiples le permet. Page 118 II.4.2 – LE FORMULAIRE DES OBSERVATIONS PONCTUELLES Ce formulaire étant quasiment une réplique du formulaire Secteur, se référer à la partie II.4.1 – LE FORMULAIRE SECTEUR pour toutes informations relatives à la saisie des données sur ce formulaire. Rappelons que ce formulaire est mis à disposition des utilisateurs qui souhaitent pouvoir lever les objets des différentes entités sans les associer préalablement à un secteur, l’information du numéro de secteur reste toutefois possible à renseigner dès la saisie de l’entité. II.5 – LE MODULE DE MODIFICATION DES DONNEES Accessible à partir de n’importe quelle interface du programme via le bouton cicontre, ce module autorise la correction des paramètres levés sur le terrain et le remaniement de la plupart des listes déroulantes présentes dans les formulaires de saisie. Figure 53: Formulaire de l'Interface relative à l'édition des données existantes Page 119 Quatre options sont disponibles dans ce menu : - Les trois premières touchent directement les paramètres (des entités) levés lors de la prospection terrain des cours d’eau. o Les deux premières concernent les informations liées au secteur : L’une permet d’ouvrir les formulaires des secteurs existants pour permettre la modification des paramètres, ajouter ou supprimer certains objets des onglets d’entités du secteur, L’autre permet de supprimer un secteur, voire tout un tronçon préalablement renseigné. o La troisième ouvre le formulaire des observations ponctuelles. - La dernière option ouvre un formulaire qui permet de modifier les listes déroulantes utilisées dans les formulaires de saisie pour définir les paramètres à renseigner. II.5.1 – MODIFICATION DES INFORMATIONS LEVEES II.5.1.A – MODIFICATION DE SECTEURS EXISTANTS Il y a trois manières différentes de faire des modifications de secteurs : - Clic direct sur le bouton Modifications de secteurs existants Il s’agit ici de faire des modifications de secteurs « à la chaîne ». Le bouton ouvre un premier secteur. Une fois les modifications sur celui-ci effectuées, vous pouvez passer au secteur suivant grâce à la barre de navigation située sous le formulaire. Cela permet ainsi d’éviter de revenir au menu pour choisir un autre secteur. Les secteurs sont classés par ordre alphabétique. Figure 54: Barre de navigation Page 120 - Sélection d’un tronçon dans la première liste déroulante puis clic sur le bouton Ici seuls les secteurs du tronçon sélectionné seront disponibles à la modification, la navigation entre les secteurs étant toujours assurée par la barre inférieure. - Sélection d’un tronçon dans la première liste déroulante puis d’un secteur de ce tronçon dans la deuxième liste avant clic sur le bouton Lorsqu’il s’agit d’une modification mineure ne touchant qu’un secteur particulier, c’est par ce module qu’il est préférable d’accéder au formulaire à traiter. Ici seul le secteur du tronçon sélectionné sera sujet à modifications. II.5.1.B – SUPPRESSION DE SECTEURS EXISTANTS Il est possible de supprimer les données de tous les secteurs en cliquant directement sur le bouton de suppression. Toutefois, cette manipulation n’est conseillée que lorsque le fichier de l’outil a été dupliqué et que la suppression des données est nécessaire pour commencer un nouveau projet. Les deux autres manières de sélectionner certains secteurs, vues dans la partie ci-dessus, fonctionnent de la même manière pour la suppression : - La sélection d’un tronçon suivi d’un clic sur le bouton entraînera la suppression de tous les secteurs situés sur ce tronçon, après validation d’un message d’alerte pour confirmation de la perte définitive des données sélectionnées. - La sélection d’un tronçon, puis d’un secteur, suivi d’un clic sur le bouton entraînera la suppression du secteur, après validation d’un message d’alerte pour confirmation de la perte définitive des données sélectionnées. II.5.1.C – MODIFICATION DES OBSERVATIONS Le bouton ouvre le formulaire des observations ponctuelles pour modifications ou suppressions des données existantes et ajouts de nouvelles. Page 121 II.5.2 – MODIFICATIONS AUTRES Seul le module de modification des listes déroulantes existe dans cette catégorie. Il a été créé pour répondre aux besoins évolutifs des utilisateurs concernant les valeurs des listes de choix proposées : la quasi-totalité des listes déroulantes de l’outil peuvent être modifiée. II.6 – LE FORMULAIRE EDITER LES LISTES DEROULANTES Ce formulaire se présente sous la forme suivante : Figure 55: Formulaire Editer les listes déroulantes Page 122 Un premier contrôle permet de choisir dans quel onglet se situe la liste déroulante à modifier. En fonction du choix de celui-ci, le contrôle suivant vous proposera les différents paramètres modifiables pour l’onglet choisi. Après avoir pointé ces deux sélections, la feuille de données au centre du formulaire affichera les différentes valeurs que contient la liste déroulante. Vous pourrez alors ajouter ou modifier les valeurs existantes. Aucune ligne ne peut être supprimée dans ce module pour des raisons de sécurité des tables dans lesquelles sont placées ces valeurs. Pour supprimer une valeur il faut donc mettre une valeur nulle à la place de la valeur existante. L’ajout d’une valeur doit se faire logiquement sur la ligne qui suit la dernière valeur non nulle de la liste affichée par la feuille de données ou combler les éventuels trous de la liste laissés par la suppression de valeurs. II.7 – LE MODULE DE CONSULTATION DES DONNEES Accessible à partir de n’importe quelle interface du programme via le bouton cicontre, ce module propose de visualiser et d’imprimer des fiches récapitulatives des paramètres de certaines entités d’un cours d’eau suivant les objets qui le composent. Figure 56: Formulaire de l'Interface de consultation des données existantes Page 123 Plusieurs fiches peuvent être visualisées sur ce module : les fiches Secteur, avec les reportages photos associés, les fiches ouvrage, plan d’eau et zone humide, que ces entités soient ou non rattachées à un secteur. La sélection de la visualisation des fiches se fait exactement de la même manière que la modification d’un secteur existant dans le module de modification des données existantes (vu dans la partie II.5.1.A – MODIFICATION D’UN SECTEUR EXISTANT). Il est à noter toutefois que la visualisation des fiches secteur et des reportages photos (boutons de la première ligne de ce formulaire) dépend des listes déroulantes situées à leur gauche. RAPPEL C’est dans ces fiches de rendu que les photos prises sur le terrain et renseignées dans la base sont exploitées. Pour le bon fonctionnement de l’outil, vous devez avoir placé les photos renseignées dans le dossier Photos de l’étude situé au même emplacement que l’outil luimême. Nous rappelons également que le nom des photos saisies est celui du fichier de la photo avec son extension (ex : DSCF8263.JPG). Page 124 Figure 57: Recto d'une fiche Secteur La dernière ligne contient deux boutons permettant de visualiser les actions prévues sur les objets des différentes entités rattachées ou non au secteur. Figure 58: Actions triées par secteur et par objet d’entité Page 125 II.8 – LE MODULE DES REQUETES DE SYNTHESE Accessible à partir de n’importe quelle interface du programme via le bouton ci-contre, ce module propose de visualiser des requêtes de synthèse relatives aux différents paramètres, caractérisant les entités constituant les cours d’eau, à différentes échelles. Figure 59: Formulaire de l'Interface de réalisation des requêtes de synthèse Page 126 Figure 60: Requête sur la Densité arborée de l'entité Ripisylve à l'échelle de l'étude, du cours d'eau et du tronçon Page 127 TABLE DES ILLUSTRATIONS Figure 47: Schéma organisationnel des principaux liens entre les formulaires ..................... 110 Figure 48: Formulaire d'accueil.............................................................................................. 111 Figure 49:Formulaire de l'Interface de saisie des données .................................................... 113 Figure 50: Formulaire Secteur ................................................................................................ 115 Figure 51: Formulaire Action ................................................................................................. 117 Figure 52: Message d'information sur clic du bouton Supprimer .......................................... 118 Figure 53: Formulaire de l'Interface relative à l'édition des données existantes ................... 119 Figure 54: Barre de navigation ............................................................................................... 120 Figure 55: Formulaire Editer les listes déroulantes ............................................................... 122 Figure 56: Formulaire de l'Interface de consultation des données existantes ........................ 123 Figure 57: Recto d'une fiche Secteur...................................................................................... 125 Figure 58: Actions triées par secteur et par objet d’entité ...................................................... 125 Figure 59: Formulaire de l'Interface de réalisation des requêtes de synthèse ....................... 126 Figure 60: Requête sur la Densité arborée de l'entité Ripisylve à l'échelle de l'étude, du cours d'eau et du tronçon.................................................................................................................. 127 Page 128 ANNEXE Schéma organisationnel des principaux liens entre les formulaires Page 129 ANNEXE 4 : GUIDE D’ADMINISTRATION Sommaire Préambule ............................................................................................................................... 131 Introduction ............................................................................................................................ 131 I – Les données de la base ...................................................................................................... 132 I.1 – Tableau récapitulatif des tables .................................................................................. 132 I.2 – Le dictionnaire de données ........................................................................................ 133 I.2.1 – Les tables de données .......................................................................................... 133 I.2.2 – Les tables Listing ................................................................................................ 141 I.2.3 – La liaison entre les tables de données et les tables listing .................................. 145 I.3 – Le modèle conceptuel de données ............................................................................. 145 II – Les formulaires ................................................................................................................ 148 II.1 – Hiérarchisation des formulaires ................................................................................ 148 II.2 – Liens existant entre les formulaires .......................................................................... 150 II.3 – La programmation des formulaires ........................................................................... 151 II.3.1 – Saisir/modifier deux enregistrements simultanément sur un formulaire unique ..... ........................................................................................................................................ 152 II.3.2 –Source et Enregistrements du formulaire des actions définis suivant son ouverture ........................................................................................................................................ 154 III – Les états .......................................................................................................................... 157 Tables des illustrations ........................................................................................................... 158 130 PREAMBULE Cet outil est une application, développée sous Microsoft Office Access, permettant d’automatiser les opérations de saisie, de traitements et de restitution de données sur des études spécifiques à la gestion de milieux naturels, principalement les cours d’eau. La vocation de cet outil est de permettre l’élaboration de l’état des lieux, du diagnostic et du programme d’actions relatif au milieu, en tenant compte de ces spécificités. Cette application a aussi pour objectif d’homogénéiser le travail des chargés d’étude. Il doit remplacer les outils déjà existants et permettre de répondre à un maximum de besoins des utilisateurs. INTRODUCTION L’objectif de ce document est de préciser les particularités techniques de l’outil dans le but de poursuivre le travail entrepris, de le mettre à jour et de l’améliorer en fonction des besoins évolutifs des utilisateurs de cet outil. Ce document s’adresse essentiellement à l’administrateur de ce système de gestion de base de données et aux géomaticiens. La première partie présente les données de la base à travers le dictionnaire de données, suivant les différentes tables et les champs qui la caractérisent, et le MCD sur lequel est construit l’outil. La deuxième partie se penchera sur les relations qui existent entre les formulaires entre eux et avec les éléments associés aux tables. IL EST TRÈS IMPORTANT DE NOTER QUE LES OBJETS ACCESS (tables, requêtes, formulaires et états) NE DOIVENT EN AUCUN CAS ÊTRE RENOMMÉS, MODIFIÉS OU SUPPRIMÉS SOUS PEINE D’ENTRAINER UN CERTAIN NOMBRE DE BUGS DES PROGRAMMES LES UTILISANT. 131 I – LES DONNEES DE LA BASE I.1 – TABLEAU RECAPITULATIF DES TABLES Cet outil s’articule autour d’un certain nombre de tables. Elles peuvent être rangées en deux catégories : - Les tables de données, dans lesquelles sont sauvegardées les données levées. - Les tables listing, dans lesquelles les valeurs des champs sont celles utilisées comme suggestions pour le contenu des champs de type liste déroulante des tables de données. Ainsi à la date du 02 Septembre 2011, la base de données se composait des tables suivantes : Figure 61: Liste des tables de la base de données 132 I.2 – LE DICTIONNAIRE DE DONNEES I.2.1 – LES TABLES DE DONNEES 133 134 135 136 137 138 139 Concernant la légende ce ces tables nous avons : 140 I.2.2 – LES TABLES LISTING Afin que l’administration soit simple les champs des différentes tables listing portent le même nom que leurs champs homologues dans les tables de données et les mêmes caractéristiques (même type de données, même nombre de caractères autorisés…). De ce fait, les caractéristiques ne seront pas détaillées dans cette partie. 141 142 143 Cette dernière table est un peu particulière car elle n’est pas associée à une table de données mais directement aux deux contrôles (de type liste déroulante) présents sur le formulaire f_EDTION_LISTING pour afficher certaines données. Les valeurs non nulles des enregistrements de ces champs servent directement de valeurs dans les listes déroulantes de ce formulaire. 144 I.2.3 – LA LIAISON ENTRE LES TABLES DE DONNEES ET LES TABLES LISTING Pour lier les champs d’une table listing aux champs d’une table de données, il faut renseigner les trois premières lignes de l’onglet Liste de choix de chacun des champs de la table de données qui doit avoir une liste, sous Microsoft Office Access. Figure 62: Exemple de liaison entre la table de données et le contenu de son contrôle de type liste déroulante I.3 – LE MODELE CONCEPTUEL DE DONNEES Le MCD est utilisé pour décrire de façon formelle, standardisée et schématique les données de la base (tables, champs et relations) nécessaire à la résolution du problème de départ, sans tenir compte du SGBD et du langage de programmation qui se grefferont autour par la suite (aspect technique). 145 Figure 63: Modèle conceptuel de données 146 Ce modèle conceptuel de données se traduit sous Microsoft Access par les Relations, accessibles dans l’onglet Outils de base de données. Figure 64: Relations entre les tables de la base de données dans Microsoft Office Access 147 II – LES FORMULAIRES II.1 – HIERARCHISATION DES FORMULAIRES Cet outil comprend un certain nombre de formulaires : certains créés pour servir d’interface aux différents modules proposés par l’outil, d’autres permettant de les réaliser. Les formulaires reprennent les objets sur lesquelles ils prennent leur source. Seul le préfixe change (t_ pour les tables, r_ pour les requêtes, f_ pour les formulaires et enfin e_ pour états). Ainsi, par exemple, le formulaire f_Berge permet de renseigner les champs des objets à enregistrer dans la table t_Berge. Pour les formulaires dont le nom est inscrit en lettres majuscules, ils correspondent aux principales fenêtres que comprend l’outil, soit celles que l’utilisateur pourra atteindre en naviguant à travers l’application, soit les différents menus d’interface ou les formulaires de saisie. Les formulaires portant un nom en lettres minuscules sont pour la plupart des sousformulaires utilisés pour les formulaires de saisie et de modifications (f_GENERAL et f_OBSERVATIONS) ou sont des formulaires de moindre importance. En plus de cette hiérarchisation des formulaires, ces derniers portent des noms explicites de façon à être identifiés directement. On saura ainsi que les formulaires f_PE_obs et f_Lmaj_requetes_synthese sont des sous-formulaires portant respectivement sur l’entité Plan d’eau et Lit majeur dans les formulaires f_OBSERVATIONS et f_REQUETES_SYNTHESE. 148 Vous trouverez ci-dessous la liste des différents formulaires utilisés et présents dans l’outil en date du 02 Septembre 2011 : Figure 65: Formulaires présents dans le Système de gestion de base de données Du fait du caractère explicite des noms donnés à ces formulaires, une description de ces derniers n’a pas été jugée nécessaire. 149 II.2 – LIENS EXISTANT ENTRE LES FORMULAIRES Ces différents formulaires sont liés entre eux dans la navigation par le biais de boutons, comme c’est le cas pour passer d’une interface à l’autre, ou par le fait qu’il existe une relation père-fils entre un formulaire et son sous-formulaire à travers un champ commun. Ainsi les principaux formulaires sont organisés et structurés de la façon suivante : Figure 66: Schéma organisationnel des principaux liens entre les formulaires Pour plus de détails sur l’utilisation de ces formulaires, je vous invite à lire le guide d’utilisation 150 II.3 – LA PROGRAMMATION DES FORMULAIRES Sous Microsoft Office Access, la programmation des éléments d’un formulaire, ou d’un état, se code dans un environnement de développement intégré au logiciel, dans une fenêtre spécifique, en langage Visual Basic. Il est l’un des langages de programmation les plus utilisés pour le développement rapide, car il ne nécessite pas de performances critiques pour pouvoir faire fonctionner un programme. Ce langage de programmation événementielle permet ainsi de configurer les actions des composants d’un formulaire mais aussi d’en définir les propriétés. Elles ont l’avantage ici de pouvoir changer en fonction de certains évènements. Ainsi les propriétés statiques mise en place dans les propriétés du formulaire peuvent devenir dynamiques grâce à la programmation en Visual Basic. Afin d’aider l’administrateur de données à comprendre les diverse instructions réalisées, la grande majorité du code a été commentée de façon à les « traduire » mais aussi à comprendre les différentes lignes qu’elles contiennent et pourquoi elles sont utilisées. Les parties qui suivent sont tirées du rapport de stage associé à la réalisation de cet outil et permettent de comprendre les processus de création des codes les plus spécifiques créés pour la bonne utilisation et administration de certaines données. 151 II.3.1 – SAISIR/MODIFIER DEUX ENREGISTREMENTS SIMULTANEMENT SUR UN FORMULAIRE UNIQUE Un des objectifs que devait atteindre l’outil était de pouvoir saisir sur un même formulaire, les paramètres des entités Lit majeur, Berge et Ripisylve en rive gauche et en rive droite simultanément, paramètre par paramètre. Afin de pouvoir saisir les entités sur les deux rives en même temps, il aurait fallu que le formulaire soit en mode d’affichage Feuille de données, de manière à pouvoir naviguer d’une ligne à l’autre. Néanmoins cette solution n’était ni pratique, ni esthétique. De plus ce mode d’affichage aurait rendu difficile le remplissage de sous-formulaires. Une saisie sur formulaire unique a donc été choisie. Or ces formulaires ne peuvent correspondre qu’à un enregistrement, mais il était nécessaire qu’ils en contiennent deux : celui de la rive gauche et celui de la rive droite. Pour ce faire il fallait créer sur le formulaire autant de contrôles que de paramètres à renseigner, soit deux contrôles par paramètre (un pour la rive gauche et un pour la rive droite). Mais contrairement aux autres sous-formulaires que peuvent contenir les formulaires de saisie, ceux-ci ne sont pas liés aux champs d’une table par Access : ils sont indépendants. En effet chaque contrôle indépendant que contiennent ces formulaires est codé pour afficher, enregistrer et supprimer tel champ de tel enregistrement de telle table. Une programmation pareille a été possible du fait que les éléments Lit majeur, Berge et Ripisylve contiennent un nombre fixe d’enregistrements : un pour chacune des rives, soit deux. Ainsi, une fois les différents contrôles des deux rives renseignées, le bouton Enregistrer du formulaire devait sauvegarder les valeurs des paramètres de la rive gauche dans le premier enregistrement et les informations de la rive droite dans le deuxième enregistrement en spécifiant la correspondance de chaque contrôle avec le bon champ dans la table. Cependant bien qu’étant enregistrées dans la table, à la réouverture de ce même formulaire, les contrôles n’afficheraient aucune des valeurs saisies, puisque ces derniers sont indépendants. Il fallait donc rajouter du code sur la procédure évènementielle d’activation du formulaire. L’affichage de chacune des valeurs des différents contrôle des paramètres rive gauche et rive droite devait être programmés en appelant les valeurs des champs des deux enregistrements sauvegardés dans la table. 152 Quant à la suppression des données, le code était plus simple à rédiger. Il suffisait de supprimer les enregistrements de la table relatifs au secteur sur lequel on saisit et de forcer l’affichage des contrôles indépendants sur une valeur nulle. Les possesseurs de la base de données et des droits administrateurs pourront visualiser ces instructions dans le code Visual Basic des formulaires f_Lmineur, f_Lmajeur, f_Berge et f_Ripisylve. Figure 67: Liens des paramètres des deux rives avec les deux enregistrements dans la table associée 153 II.3.2 –SOURCE ET ENREGISTREMENTS DU FORMULAIRE DES ACTIONS DEFINIS SUIVANT SON OUVERTURE Les actions de chaque objet devaient être saisies depuis les enregistrements de ces derniers et ne devaient afficher que les actions de l’objet en question, et de façon à ce que l’utilisateur n’ait pas à renseigner l’identifiant de l’objet. Il fallait que cela soit automatique. Toutefois dans le module de consultation de l’outil, l’utilisateur devait pouvoir voir la liste de toutes les actions à réaliser, classées par secteur, puis par entité, de manière à avoir une vision organisée des interventions suggérées. Or les formulaires des différentes entités étaient déjà bien remplis et ne pouvaient accueillir un nouveau sous-formulaire. Il fallait donc placer un bouton, dans chacun des onglets représentant une entité, qui ouvrirait le formulaire des actions. C’est pourquoi je voulais créer un formulaire Actions indépendant à l’origine, mais qui lorsqu’il serait ouvert depuis l’enregistrement d’un objet d’une entité, n’afficherait et n’enregistrerait les futures actions à saisir que de cet objet. Ainsi il fallait donc que la source du formulaire des actions évolue en fonction du bouton d’ouverture, selon que ce dernier soit sur le formulaire d’une entité ou sur une autre. De plus, la source devait être une requête, de façon à pouvoir sélectionner juste l’enregistrement actif de l’objet. Ces requêtes correspondent aux requêtes Access dont le nom commence par « Action_RecordSource_ ». Les identifiants de l’objet et du secteur devraient ensuite être récupérés dans l’enregistrement en question et saisis automatiquement dans les contrôles appropriés du formulaire Actions lorsque l’utilisateur devra suggérer de nouvelles interventions sur cet objet. Le code source est disponible sur l’évènement « Sur clic » des boutons Action des formulaires et se poursuit sur le formulaire f_Action (évènement « Sur Ouverture », fonction privée Action_Infos_Secteur_et_Entite et évènement « Après mise à jour » des contrôles). 154 L’ouverture du formulaire des actions devait être déclenchée sur le clic d’un bouton, placé dans chacun des formulaires d’entités. Suivant l’entité, on attribuait de façon automatique la source du formulaire des actions à son ouverture. Pour réaliser ceci, j’ai donc créé une variable publique Bouton_Ouverture_f_Action (module variables_publiques), utilisable dans tous les formulaires de la base, afin de lui attribuer une valeur unique à chacune des entités des deux formulaires de saisie. Ainsi, lorsque l’utilisateur clique sur le bouton pour déclencher l’ouverture du formulaire des actions, le bouton attribue d’abord à cette variable publique une valeur propre à l’entité à partir de laquelle il appelle le dit-formulaire. Bouton Action du formulaire Valeur de la variable publique associée f_Lmineur f_Lmajeur f_Berge f_Ripisylve f_Ouvrage f_Travaux_hydro f_Embacle f_Dechet f_Pompage f_Rejet f_Pietinement f_PE f_ZH f_Obs_autre Lmineur_Secteur_Action Lmajeur_Secteur_Action Berge_Secteur_Action Ripisylve_Secteur_Action Ouvrage_Secteur_Action TH_Secteur_Action Embacle_Secteur_Action Dechet_Secteur_Action Pompage_Secteur_Action Rejet_Secteur_Action Pietinement_Secteur_Action PE_Secteur_Action ZH_Secteur_Action Autre_Secteur_Action f_Ouvrage_obs f_Travaux_hydro_obs f_Embacle_obs f_Dechet_obs f_Pompage_obs f_Rejet_obs f_Pietinement_obs f_PE_obs f_ZH_obs f_Obs_autre_obs Ouvrage_Observation_Action TH_Observation_Action Embacle_Observation_Action Dechet_Observation_Action Pompage_Observation_Action Rejet_Observation_Action Pietinement_Observation_Action PE_Observation_Action ZH_Observation_Action Autre_Observation_Action Ensuite, au moment de l’ouverture du formulaire Actions, le programme choisit le code attribuant la source des enregistrements de ce formulaire qu’il faut déclencher suivant la 155 valeur qu’a prise la variable publique ; qui indique quelle entité est à l’origine de l’ouverture. Cette source d’enregistrement correspond à un objet Access de type « Requête ». Il en existe une pour chaque entité des formulaires de saisie. Arrivé à cette étape, le formulaire des actions affiche maintenant les enregistrements des actions liés à l’objet actif du sousformulaire de l’entité du formulaire de saisie. Il faut maintenant renseigner, s’ils sont vides, les contrôles des identifiants Entite_ID et Secteur_ID du formulaire après tout renseignement des autres contrôles du formulaire. Ainsi, après la mise à jour d’un contrôle, le programme exécute une requête SQL (dépendante de la variable publique) qui sélectionne l’enregistrement du sous-formulaire de l’entité à partir de laquelle le formulaire des actions a été ouvert. Il est à noter que cette opération est complètement transparente pour l’utilisateur. L’enregistrement sélectionné, le programme récupère alors les identifiants de l’objet et celui du secteur pour remplir les contrôles (invisible pour l’utilisateur) qui requièrent ces informations. Figure 68: Processus du codage des actions d'un objet d'une entité 156 Pour résumer, à chaque entité des deux formulaires de saisie est associée une valeur pour la variable publique. Chaque valeur de cette variable permet : - d’attribuer ensuite la requête Access correspondante qui devient la source du formulaire des actions. - de récupérer les identifiants de l’objet et du secteur pour remplir les contrôles du formulaire Actions qui les demandent. Toutefois, le codage n’était pas fini. Il fallait également prévoir le cas d’éventuelles mises à jour des objets. Par exemple l’attribution d’un nouveau secteur pour un objet ou la suppression des actions lorsque l’objet auquel il est lié doit être supprimé. L’idée de n’avoir qu’un formulaire dont les éléments sont dépendants de cas (méthode Select Case) avait d’abord été développée pour le module d’Edition des listes déroulantes, module indispensable pour que les utilisateurs puissent mettre à jour eux même plus de 90% des listes déroulantes que contiennent les formulaires de saisie. Comme son utilisation était très pratique et que son administration était plutôt simple, le concept en a été repris pour l’adapter au niveau du formulaire des actions, plus compliqué. III – LES ETATS La hiérarchisation des états a été réalisée sur le même principe que celle mise en place pour les formulaires. L’outil comprend les états suivants en date du 02 Septembre 2011 : Figure 69: Formulaires présents dans le Système de gestion de base de données 157 TABLES DES ILLUSTRATIONS Figure 61: Liste des tables de la base de données .................................................................. 132 Figure 62: Exemple de liaison entre la table de données et le contenu de son contrôle de type liste déroulante ....................................................................................................................... 145 Figure 63: Modèle conceptuel de données ............................................................................. 146 Figure 64: Relations entre les tables de la base de données dans Microsoft Office Access .. 147 Figure 65: Formulaires présents dans le Système de gestion de base de données ................. 149 Figure 66: Schéma organisationnel des principaux liens entre les formulaires ..................... 150 Figure 67: Liens des paramètres des deux rives avec les deux enregistrements dans la table associée................................................................................................................................... 153 Figure 68: Processus du codage des actions d'un objet d'une entité ...................................... 156 Figure 69: Formulaires présents dans le Système de gestion de base de données ................. 157 158