Retrouvez cet article dans : Linux Pratique Hors série 9
Dans l'article qui suit, nous vous proposons, au travers d'un exemple concret mettant en scène une société désirant réaliser une étude marketing, d'explorer les possibilités d'utilisation des modules de bases de données Base et du module de tableur Calc d'OpenOffice.org.
État des lieux
La société Panz&Carré fabrique et commercialise des pâtes depuis plusieurs dizaines d'années. Grâce à des investissements constants en campagnes de communication Panz&Carré a réussi à atteindre des parts de marchés sur les différents segments de pâtes et sur les différents segments de distribution. Ayant maintenant stabilisé ses parts de marché, Panz&Carré souhaite diversifier son offre en se lançant en même temps sur deux marchés différents. Elle souhaite se lancer sur le marché du riz déjà très concurrentiel, mais souhaite émerger sur ce marché en proposant un produit original qui la différenciera des autres acteurs : le " Cuisusb ", un appareil permettant de faire cuire du riz et des pâtes, se branchant simplement sur une prise USB d'ordinateur. Un tel produit facilitera grandement l'alimentation de ceux qui souhaitent manger sur leur lieu de travail, le directeur marketing de Panz&Carré, Monsieur GroKuik en est convaincu...
Avant de lancer ce produit révolutionnaire, notre société souhaite naturellement percevoir quel sera l'accueil de sa clientèle et quel est son potentiel de vente. Elle souhaite donc réaliser une étude de marché lui permettant de cibler sa communication, sa production et d'orienter son réseau de distribution.
Panz&Carré va donc réaliser une étude marketing téléphonique à l'aide d'un outil très souple et adapté aux différents métiers d'une entreprise : OpenOffice.org. Pour réaliser cette enquête, elle concentrera son utilisation sur le module Base pour le recueil des données et Calc pour l'exploitation et l'analyse des données.
Avant de passer aux différentes analyses et conclusions qui en découlent, Panz&Carré, lors d'une réunion inter-services haute en couleurs, a défini les informations qui lui semblent pertinentes pour son analyse du marché. Les informations à recueillir sont : le nom de l'interlocuteur, la situation familiale de l'interlocuteur, s'il travaille tard le soir, son âge, s'il mange régulièrement au bureau, à quelle fréquence, s'il rentre chez lui le midi, s'il est citadin et quel type de plat il est susceptible de manger au bureau.
Maintenant que tout est défini, le service informatique doit œuvrer pour la création des outils.
Création de la base de données
Nous commençons par créer une nouvelle base de données en lançant OpenOffice.org Base et en nous laissant guider par l'assistant (Fig. 1). Enregistrons la nouvelle base de données à l'endroit souhaité.

Fig. 1
Pour notre exemple, nous utilisons le moteur HSQLDB intégré à Base. Néanmoins, il est intéressant de noter que Base sait dialoguer avec différents systèmes de gestion de bases de données relationnelles (SGBDR) au travers des interfaces ODBC, JDBC et SDBC telles que MySQL, PostgreSQL, Oracle, DB2 ou encore Microsoft Access.
Il est important de savoir que les bases intégrées ne sont pas adaptées à tous les usages. Une consultation simultanée par plusieurs utilisateurs, la gestion des droits des utilisateurs ne sont pas efficacement gérés par HSQLDB. Aussi, si ce document est conçu autour de la création d’une base intégrée HSQLDB pour des raisons de simplicité (il n’y a pas besoin d’installer une autre application qu’OpenOffice.org), une utilisation multiposte (plusieurs enquêteurs simultanés par exemple) nécessitera la mise en place d'un autre SGBDR connecté à OpenOffice BASE (Mysql ou Postgresql par exemple).
La création des tables
Une fois notre base de données créée, il nous faut définir les tables qui vont contenir les informations de cette base de données. Dans le cadre d'une base de données, " une table est un ensemble de données (les valeurs) organisé selon un modèle de lignes (horizontales) et de colonnes (verticales). Chaque table est l'implémentation physique d'une relation " (Source : Wikipédia).
Pour la création des tables, OpenOffice.org Base offre deux possibilités :
- un assistant propose quelques modèles génériques (Factures, Commandes, Produits, Contacts, etc.) préconfigurés que vous avez juste à sélectionner. Cet assistant est très utile pour vous familiariser avec la notion de table, de clé primaire et avec les différents types d'information composant les tables.
- un mode " ébauche " qui permet de créer une table vierge totalement paramétrable.
Dans notre cas, nous allons créer nos tables en mode " ébauche". Cliquons sur l'onglet Tables et sélectionnons Créer une table en mode ébauche.
La création d'une table en mode ébauche se présente sous la forme d'un tableau à 3 colonnes : Nom du champ, Type de champ et Description (Fig. 2). Dans une table, le type de contenu des colonnes est indiqué dans la structure de la table, et est le même pour toutes les lignes d’une colonne. Chaque fois que l’on saisit une nouvelle fiche, on crée un
enregistrement.
Un " champ " est un espace réservé aux données, auquel on a imposé certaines règles :
- type de données : il est indispensable d'indiquer quel type de données le champ est susceptible de contenir. Par exemple, nombres entiers ou chaînes de caractères.
- contraintes : il est possible d'imposer certaines contraintes aux données contenues dans un champ. Par exemple, la contrainte d’unicité indique au système que ce champ ne peut pas contenir deux fois la même valeur. La contrainte non vide indique au système que ce champ doit impérativement contenir une donnée.
- valeur par défaut : on peut spécifier quelle valeur sera inscrite par défaut dans le champ si l’utilisateur ne saisit pas de données.
- clé primaire : les bases intégrées imposent la présence d’une clé primaire dans chaque table. Une clé primaire est un champ (ou une combinaison de champs) qui sera l’identifiant unique de chaque enregistrement. Une clé permet de retrouver sans ambiguïté la ligne dans une table. Les valeurs d'une clé doivent être uniques au sein de la table. Dans Base, cette clé primaire peut être générée automatiquement. L'avantage de l'auto-incrémentation est de fournir automatiquement une valeur unique lors de chaque nouvel enregistrement.

Fig. 2
Nous créons ainsi une clef primaire nommée id_contact, qui sera notre premier champ. Celle ci sera auto-incrémentée, c'est-à -dire qu'à chaque nouvel enregistrement dans la table, une nouvelle valeur sera automatiquement ajoutée.
L'indispensable clef primaire...
Pour créer notre clé primaire, il faut :
- attribuer un nom au champ. Nous l’appellerons
id_contact. - définir le type de données du champ. Nous choisirons
Integer(nombre entier).
La zone " propriétés du champ " permet de modifier certaines propriétés du champ. Les choix proposés varient suivant le type de champ. Pour notre clé primaire, nous souhaitons que la valeur soit générée automatiquement par la base. Nous choisissons donc AutoValeur : oui. Le champ Expression d’auto-incrément bascule alors sur Identity. Cela signifie que le nombre généré sera bien unique (2 enregistrements de cette table ne pourront pas avoir le même nombre dans le champ id_adherent). Laissons les autres propriétés du champ à leur valeur par défaut.
Pour indiquer que ce champ sera la clé primaire de cette table, il ne nous reste plus qu’à effectuer un clic droit sur le triangle vert à gauche du nom du champ et à sélectionner clé primaire.
Lorsque vous sauvegardez la table pour la première fois, vous devez lui attribuer un nom. Choisissez par exemple T_CONTACTS.
Les propriétés des champs de la table
Créons maintenant le champ nom, de type VARCHAR. Le type VARCHAR indique que vous voulez enregistrer une chaîne de caractères, et vous devez alors préciser la taille maximale de cette chaîne dans la zone " propriété de champ ". Une longueur maximum de 50 paraît raisonnable. Le paramètre Saisie requise permet d’obliger l’utilisateur à saisir un nom lors de la création d’un nouvel enregistrement. Nous saisissons ensuite les champs profession, geographie et situation_familiale avec les mêmes caractéristiques.
Créons ensuite le champ rentre_midi, de type Boolean. Ce type de champ permet de stocker une information binaire (qui ne peut prendre que deux valeurs : Oui ou Non).
Créons ensuite, sur le même principe, le champ situation_famille de type VARCHAR, le champ mange_au_bureau de type BOOLEAN, le champ freq_mange de type INTEGER, le champ alimentation_bureau de type VARCHAR, le champ age de type INTEGER et le champ travail_tardif de type BOOLEAN (Fig. 3).

Fig . 3
Nous pouvons bien entendu indiquer les commentaires que nous souhaitons dans la colonne Description des champs. Il est à noter que l'ordre des champs d'une table n'a pas d'importance. C'est l'ordre de positionnement des champs sur le formulaire qui sera important pour les enquêteurs téléphoniques de Panz&Carré.
Tous ces champs nécessiteront une saisie indispensable, sauf les champs freq_mange et alimentation_bureau, pour passer à l'élément suivant.
Notre table est terminée, nous la fermons.
La création du formulaire
A partir de cette première table, nous pouvons créer un formulaire qui nous aidera à saisir les données plus facilement. Nous allons nous aider cette fois-ci de l'assistant de création celui-ci étant particulièrement pratique.
Fermons donc la table créée et cliquons sur l'icône Formulaires. Sélectionnons Utiliser l'assistant de création de formulaires. Ajoutons tous les champs de notre unique table, ne créons pas de sous-formulaire, choisissons un alignement Colonnes – étiquettes au-dessus, sélectionnons le formulaire doit afficher toutes les données, choisissons une couleur de fond et appelons notre formulaire F_CONTACTS.
Nous disposons maintenant d'un formulaire prêt à servir pour remplir notre première table (Fig. 4). En revanche, les champs ne sont pas forcément dans l'ordre souhaité et les intitulés de champs ne sont pas très explicites. Les enquêteurs téléphoniques souhaiteront sans doute plus de détails à chaque question...
Fermons le formulaire et ouvrons-le en mode ébauche afin de le modifier.
Si la barre d'outils Conception de formulaire n'apparaît pas, sélectionnez-la dans le menu Affichage -> Barres d'outils.
Nous souhaitons que les intitulés des champs soient plus explicites afin de faciliter la diction lors de notre future enquête téléphonique. Il nous suffit alors de sélectionner les champs et, avec un clic droit, de sélectionner groupe -> dissocier, puis de sélectionner le texte avec un double clic et de changer le titre avec le texte de notre choix. Nous procédons de la même manière avec tous les textes.
Nous en profitons également pour les déplacer et les positionner de la manière la plus logique et chronologique pour l'enquête téléphonique.
Indiquons également un texte d'introduction en dessinant tout simplement une zone de texte à l'aide de la barre d'outils de dessin (Affichage -> Barres d'outils -> Dessin, puis sélection de l'outil Texte) (Fig. 5).
Enregistrons nos modifications et fermons le formulaire.
Nous pouvons dès maintenant commencer à passer des coups de fil et à saisir nos données à l'aide de ce formulaire.

Fig. 4

Fig. 5

Fig. 6
Des listes déroulantes pour plus d'ergonomie
Cependant, au cours des premiers appels, nous nous apercevons qu'un certain nombre de réponses reviennent souvent. Afin de gagner du temps lors de la saisie des données dans le formulaire d'enquête, nous allons créer des listes déroulantes de choix qui nous permettront de saisir plus rapidement les
informations.
Il nous faut d'abord créer différentes tables contenant les informations des listes déroulantes. Par exemple, la table T_GEO qui contiendra les enregistrements Citadin de province , Paris et campagne.
Nous créons ainsi en reprenant la procédure de création de la table principale, 4 autres tables destinées à contenir les informations affichées par les listes déroulantes de notre formulaire. Il suffit pour chaque table de créer une clé primaire et un seul champ de type VARCHAR avec saisie
obligatoire.
Nous effectuons ensuite un double-clic sur chaque table afin de rentrer les valeurs que nous souhaitons voir apparaître dans les futurs menus déroulants.
Nous avons maintenant 5 tables (Fig. 6). Une table principale T_CONTACTS destinée à recueillir les informations des questionnaires et 4 autres tables destinées à alimenter les menus déroulants du questionnaire en données
pré-remplies.
Reprenons maintenant notre formulaire pour le modifier (clic droit, puis modifier). Le formulaire s’ouvre en mode édition. Vérifions que les barres d’outils Conception de formulaires et Contrôles de formulaires sont bien activées. Si ce n’est pas le cas, menu Afficher -> Barres d’outils pour les afficher.

Fig. 7
Dans la barre d’outils Contrôles de formulaires, nous cliquons sur l’outil zone combinée et dessinons ensuite un cadre à côté du champ Situation familiale. L'assistant zone combinée s'ouvre, sélectionnons la table T_SITUATIONF créée pour cette occasion. Sélectionnons ensuite le champ valeur comme champ d'affichage. Dans le troisième écran, choisissons d'enregistrer les données dans le champ situation familiale.
Nous pouvons maintenant répéter l'opération pour chacun des champs souhaités et supprimer les zones de saisie manuelle qui ne servent plus à rien.
Enregistrons et fermons notre formulaire. Nous avons maintenant un formulaire très pratique pour la saisie avec des listes déroulantes (Fig. 7).
Créer des parties conditionnelles
Ça y est, nous passons nos premiers coups de fil de test pour savoir si notre autocuiseur de pâtes et riz USB sera un succès international. Nous avons nos premiers correspondants. Les listes déroulantes fonctionnent à merveille et nous pouvons voir en ouvrant la table principale T_CONTACTS toutes les informations qui nous intéressent s'enregistrer au fur et à mesure.
Cependant, il nous semble que nous pourrions encore améliorer notre formulaire. En effet, le type de plat mangé au bureau et la fréquence des repas au bureau n'interviennent que si notre interlocuteur mange effectivement au bureau. Il serait donc utile que ce champ de saisie n'apparaisse que si la personne a répondu qu'il lui arrivait de manger au bureau.
Pour réaliser cette opération, nous allons créer une section spéciale de notre formulaire contenant le champ conditionnel et créer une petite macro qui va l'afficher ou bien le masquer.
Reprenons notre formulaire en mode édition, déplaçons notre curseur jusqu'à l'endroit voulu et insérons une section (via le menu Insertion -> Section) que nous appelons SectionMangeBureau. Deux lignes grises apparaissent, c'est notre nouvelle section (Fig. 8). Nous nous assurons qu'elles contiennent bien les questions à masquer.

Fig. 8
Nous créons ensuite la petite macro qui va afficher la section, via le menu Outil -> macros -> Gérer les macros ; sélectionnez le formulaire F_CONTACT et cliquez sur Nouveau (Fig. 9). Nous l'appellerons apparition.

Fig. 9
Juste après end sub, insérons les lignes suivantes et enregistrons notre macro :
sub ConditionalView(oEvt as object)
dim oDoc as object
oDoc=ThisComponent
oDoc.GetTextSections.GetByName("Section1").IsVisible=false
end sub
Cette macro doit se déclencher lors de l'activation du menu déroulant sur " oui ".
Grâce au navigateur de formulaires (pour l'activer, il faut cliquer sur le bouton de la barre d'outil conception de formulaires), nous sélectionnons la checkbox (case à cocher) et, dans les propriétés de celle-ci, assignons, lors du déclenchement, la macro que nous venons d'écrire (Fig. 10).
Il est possible d'obtenir le fonctionnement inverse en masquant des sections à l'ouverture du formulaire et de les dévoiler lorsque l'on coche des cases du questionnaire.

Fig.10
La macro cherche la section avec la méthode GetTextSections.GetByName et positionne l'attribut IsVisible à faux. Pour l'effet inverse, remplacez false par true.
Si nous souhaitons qu'une section de notre formulaire soit masquée lors de l'ouverture de celui-ci et qu'elle n'apparaisse que si une case est cochée, nous devons créer deux macros : une pour masquer et une autre pour démasquer la section.
La macro pour masquer une section est en tout point identique à celle que nous venons d'écrire sauf qu'elle positionne l'attribut isVisible sur la valeur false.
Puis, comme pour la checkbox, nous l'attribuons au formulaire MainForm (que nous sélectionnons également par le navigateur de formulaire) sur l'évènement " Lors du chargement ".
Nous avons maintenant un formulaire interactif et nous nous lançons dans notre enquête téléphonique.
L'analyse des données avec Calc
Nous allons nous servir de Calc et du module de pilote de données afin d'avoir plus de souplesse dans l'analyse des données. Nous aurions pu également passer par différentes requêtes créées avec le module Base, mais nous souhaitons vraiment trier les données recueillies dans tous les sens. Aussi, le module de pilote de données est bien indiqué pour cette opération.
Les Tables de Pilote de données (comme les tableaux croisés dynamiques de Microsoft Excel) sont des outils d'analyse très performants. Elles permettent de comparer et de calculer toute sorte d'éléments en quelques clics de souris.
Nous ouvrons ainsi Calc, créons un nouveau document et lançons directement le pilote de données. (Données -> Pilote de données -> Démarrer). Nous sélectionnons source de données OpenOffice.org. Sélectionnons notre base de données dans le menu déroulant ainsi que la table T_CONTACTS (Fig. 11).

Fig. 11
Nous constatons ainsi qu'OpenOffice.org a intégré automatiquement les champs, sous forme de boutons, qui contiennent les informations nécessaires à la réalisation des Tables de Pilote de données (Fig. 12, page suivante).
Nous souhaitons en premier lieu connaître le nombre de personnes qui mangent au bureau sur l'ensemble des personnes interrogées en fonction de leur répartition géographique. Pour cela :
- Glissez le bouton mange_bureau sur la zone " Ligne Champs ".
- Glissez le bouton geographie sur la ligne " Colonne Champs ".
- Glissez le bouton id_contact dans la zone " Champs de données ".
Double-cliquez sur le champ id_contact et sélectionnez nombre afin que Calc dénombre le champ et ne les additionne pas. Cliquez sur Options et sélectionnez % de la ligne pour qu'il affiche les informations sous forme de pourcentage en fonction du total de chaque catégorie.

Fig. 12
Nous obtenons ainsi un tableau qui représente les informations souhaitées (Fig. 13). Nous pouvons le mettre en forme afin de le rendre plus lisible.

Fig. 13
Notre service marketing souhaite avoir plus d'informations et des analyses plus fines. Il souhaite connaître la moyenne des repas pris le midi avec des plats chauds. En effet, c'est une information vitale pour notre cuiseur USB. Il souhaite également le faire varier en fonction de certains critères.
Nous reprenons donc notre Pilote de données (clic droit sur le tableau, puis Activer). Remettons les champs à leur place initiale, puis :
- Glissez le champ freq_mange sur la zone " Champs de données ".
- Double-cliquez sur somme freq_mange et changez la valeur somme en moyenne.
- Mettez un critère géographique en ligne, en glissant le champ geographie dans la colonne de gauche.
Nous souhaitons faire varier certains critères, aussi nous glissons dans la zone " Champs de la page " les champs situation_famille et profession.
Validez ensuite vos modifications. Nous nous apercevons que nous avons bien les moyennes de la fréquence des repas, réparties en fonction des zones géographiques qu'ils habitent. En revanche, sont apparues deux nouvelles lignes au-dessus de notre tableau (Fig. 14). Elles contiennent des critères que nous pouvons modifier dynamiquement en sélectionnant la valeur choisie dans le menu déroulant. Les données du tableau s'affichent alors contextuellement.

Fig. 14
La touche finale : réalisation d'un graphique
Nous pouvons maintenant réaliser un graphique en sélectionnant notre tableau, puis en passant par le menu Insertion -> Diagramme. Nous nous laissons ensuite guider par l'assistant. Nous choisissons un diagramme en bâtons et nous saisissons un titre pour notre graphique (Fig. 15).

Fig. 15
Nous disposons désormais d'un graphique totalement paramétrable qui nous permettra de répondre aux besoins de notre exigeant service marketing...
Conclusion
Cet exemple nous a permis d'illustrer quelques-unes des très nombreuses applications d'OpenOffice.org en entreprise au travers de ses modules de bases de données et d'analyse de chiffres. Loin d'être exhaustif, cet article se veut comme une porte d'entrée, une incitation à découvrir d'autres fonctions et à explorer ses innombrables possibilités professionnelles.
Au-delà des préjugés et des idées préconçues, OpenOffice.org est d'une richesse et d'une souplesse telle qu'il permet d'être la plate-forme d'échanges et d'analyse de l'essentiel des informations de l'organisation.
Retrouvez cet article dans : Linux Pratique Hors série 9

