Anda di halaman 1dari 106

Developpez

o H
Sommaire
Java Android Eclipse Outlook Word PowerPoint Excel Access C & C++ Qt Web smantique Business Intelligence Solutions d'entreprise Pascal Perl 2D/3D/jeux Liens

s rs

ri e

Le Mag

Hors srie spcial rentre. HS 2. Magazine en ligne gratuit. Diffusion de copies conformes loriginal autorise. Ralisation : Alexandre P ottiez Rdaction : la rdaction de Developpez Contact : magazine@redaction-developpez.com

Page 2 Page 5 Page 10 Page 15 Page 17 Page 31 Page 39 Page 50 Page 59 Page 65 Page 71 Page 77 Page 80 Page 82 Page 88 Page 90 Page 103

Article Word

Fusion et publipostage, par l'interface et en VBA


Word peut se rvler un outil de choix pour la diffusion en masse de documents personnaliss. crire une seule lettre qui sera diffrente pour chaque destinataire.
par Olivier Lebeau Page 17

Article Qt

ditorial
Dans ce numro spcial, vous retrouverez, sur plus d'une centaine de pages, nos meilleurs articles pour bien dbuter dans prs de seize technologies traites dans ce numro et que vous tes susceptible d'tudier cette rentre. Bonne lecture. Profitez-en bien ! La rdaction

Dbuter dans la cration d'interfaces graphiques avec Qt 4


Ce tutoriel fournit une introduction la programmation d'interfaces graphiques utilisant la bote outils Qt.
Traduit par l'quipe Qt de Devloppez.com Page 65

Java
Tutoriels et articles
Bien dbuter en Java Vous voulez commencer programmer en Java et vous tes perdu, vous ne savez pas par quoi commencer ? Alors cet article est fait pour vous. Ce n'est pas un tutoriel du langage Java, c'est plutt un guide qui va vous aider dbuter, choisir vos outils et vous indiquer quelles ressources vous pourriez lire pour avancer.
1. Qu'est-ce que le Java ? Je vous conseille d'utiliser Eclipse (Lien 11) ou Netbeans Pour commencer, Java est un langage de programmation (Lien 12) pour dvelopper vos applications Java. Tous informatique orient objet cr par James Gosling et deux sont multiplateformes, gratuits et trs puissants. Patrick Naughton de Sun Microsystems. Mais c'est galement un environnement d'excution. 3. Je veux aller plus loin Java peut tre spar en deux parties. D'une part, votre programme crit en langage Java et d'autre part, une machine virtuelle (JVM) qui va se charger de l'excution de votre programme Java. C'est cette plateforme qui garantit la portabilit de Java. Il suffit qu'un systme ait une machine virtuelle Java pour que tout programme crit en Java puisse fonctionner. Le langage Java peut tre utilis dans de nombreux domaines que je vous invite dcouvrir en parcourant les diffrents articles Java de Developpez.com. Les chapitres suivants reprennent quelques thmes que vous pourriez approfondir. 3.1. Comment dvelopper des interfaces graphiques avec Java ? Bien dbuter en Java

Avec le langage Java, vous pouvez dvelopper, des applications Desktop, dvelopper des applets pour vos Pour dvelopper des interfaces graphiques en Java, sites web, dvelopper des sites en JSP (Lien 01), des plusieurs choix s'offrent vous : AWT : c'est le premier framework graphique de applications pour tlphone mobile. La premire chose Java. Il utilise les composants systme pour faire est bien videmment d'apprendre faire des dessiner l'interface graphique, il est donc limit en applications stand alone simples. composants : Lien 13 ; Swing : c'est le successeur de AWT. Tous les 2. Je dbute composants sont dessins directement en Java. Ce Il n'est pas facile de commencer dvelopper si on n'a qui fait qu'il est plus lent que AWT, mais cette jamais fait de programmation auparavant. C'est pourquoi, diffrence est trs faible dans les dernires il est trs important de commencer avec des bonnes versions de Java : Lien 14 ; ressources et de ne pas se lancer la va-vite dans le SWT : ce framework graphique n'est pas langage. disponible avec l'API standard de Java. C'est l'quipe de dveloppement d'Eclipse qui l'a cr. Pour les personnes connaissant dj la programmation et Comme AWT, il utilise directement les les langages objet, l'apprentissage de Java ne devrait pas se composants systme mais mule les composants rvler trop compliqu. non disponibles en les dessinant lui -mme. Vous pouvez commencer par lire l'un des tutoriels (Lien 02) d'initiation Java de la rubrique Java (Lien 03) de Developpez.com. Je vous conseille d'en lire au moins un parmi ceux-l ou alors un des livres proposs : Penser en Java V2 : Lien 04 Dveloppez en Java : Lien 05 Cours sur le langage Java : Lien 06 Le livre de Java premier langage : Lien 07 Programmer en Java : Lien 08 Java en concentr : Lien 09 Il vous faudra bien videmment un ou des outils pour dvelopper en Java. Nanmoins pour commencer, je vous conseille d'utiliser un simple bloc-note et, de compiler et d'excuter vos programmes en ligne de commande pour commencer. Cela vous permettra de bien comprendre le fonctionnement de Java. Ensuite, vous pourrez bien sr dvelopper avec un EDI plus volu : Lien 10. Je vous conseille d'utiliser Swing. En effet ce framework est trs simple d'utilisation et trs complet. De plus, la communaut autour du framework est norme et permet d'ajouter de nombreuses fonctionnalits Swing. Vous pouvez aussi tester SWT pour vous faire une ide. Voici de quoi dbuter avec ces frameworks : Cration de votre premire interface graphique avec Swing : Lien 15 ; Les principes de base du GUI avec Swing : Lien 16 ; Le dveloppement d'interfaces graphiques avec SWT : Lien 17 ; Le livre "Swing la synthse" : Lien 18 ; Le livre "Les cahiers du programmeur Swing" : Lien 19.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 2

3.2. Comment grer les bases de donnes avec Java ? La premire manire de grer les bases de donnes est d'utiliser l'API JDBC qui est en standard avec Java (Lien 20). Ensuite, pour aller plus loin, vous pouvez vous orienter vers les frameworks de mapping objet/relationnel tels que Hibernate (Lien 21) ou encore utiliser un framework de persistance plus petit tel qu'iBatis.

3.6. Quels sont les autres outils que je peux utiliser ? Une fois pass le stade des premiers programmes, il sera utile de voir d'autres programmes utilitaires pour Java et de tester de nouveaux EDI. Dcouvrez les EDI les plus populaires sur notre page outils : Lien 44.

Vous pourrez aussi tre amen devoir crer un excutable de votre application. Pour cela, retrouvez toutes Voici des ressources qui vous seront fort utiles pour votre les techniques possibles dans cet article : Lien 45. apprentissage : Pour la gestion de vos builds, o vous pourriez aussi tre Comment utiliser un pilote de base de donnes amen utiliser des utilitaires ddis, vous pouvez vous diriger vers Ant (Lien 46) ou Maven (Lien 47). JDBC : Lien 22 ; Tutoriel JDBC : Lien 23 ; La persistance des donnes avec Hibernate 2.1.8 : 4. Comment tester mes connaissances ? Lien 24 ; Faire une srie d'exercices pour tester vos connaissances La persistance en base de donnes avec JPA (Java peut se rvler trs intressant. En effet, ceci vous Persistence API) : Lien 25 ; permettra de voir si vous avez bien acquis les informations Le livre "Hibernate 3.0 - Gestion optimale de la sur Java. persistance dans les applications Java/J2EE" : Lien 26 ; C'est pourquoi l'quipe Java vous propose une srie de Le site officiel d'iBatis : Lien 27. petits exercices sur le langage Java : Srie d'exercices en Java (Lien 48). 3.3. Comment faire de la programmation web avec Java ? Une autre faon de s'entraner est de crer une petite application soi-mme. Il ne faut pas viser trop gros sans La programmation Java EE (Lien 28) est un thme trs quoi vous risqueriez de ne jamais arriver au bout de votre large. En effet, il existe une grande quantit de frameworks application. Voici quelques petits exemples d'applications web ainsi que diffrentes manires de programmer pour le dvelopper soi-mme qui peuvent se rvler web (JSP (Lien 29), Servlets (Lien 30), Applets (Lien 31)) intressantes : et de nombreux outils (serveur d'application (JBoss, Une calculatrice : pour commencer, dvelopper Weblogic) ou conteneur Web Java (Tomcat par exemple : une calculatrice se rvle assez simple, mais vous Lien 32)). Je vous conseille donc de bien tudier le sujet pouvez aussi aller assez loin suivant les avant de vous y lancer. fonctionnalits que vous lui ajoutez ; Un petit jeu : vous pouvez aussi dvelopper un Voici quelques ressources qui pourraient vous tre utiles : petit jeu, par exemple un puissance 4 ou un jeu Java Standard Tag Library (JSTL) : Lien 33 ; d'chec. Vous n'avez pas encore besoin de Introduction Struts : Lien 34 ; travailler profondment sur le graphisme, mais Programmation web avec Java : Lien 34 ; vous pouvez dj faire de belles choses. Si vous Les cahiers du programmeur Java, conception et voulez aller un peu plus loin, vous pouvez vous dploiement J2EE : Lien 35 ; lancer dans un jeu de la vie ; Struts par la pratique : Lien 36. Une bibliothque : vous pouvez galement dvelopper une petite bibliothque. Cela vous 3.4. Comment dvelopper pour un mobile avec Java ? permettra d'aborder les bases de donnes ainsi que les formulaires. Il existe peu de documentation sur le dveloppement Java ME : Lien 37. Vous pouvez tout de mme lire cet article : Dbuter en J2ME avec le profil MIDP (Lien 38) ou alors Bonne chance ! vous pouvez consulter la documentation de Sun qui est 5. J'ai tout lu, mais pas tout compris, o poser mes trs complte mais n'existe qu'en anglais (Lien 39). questions ? 3.5. Comment faire de la 2D/3D en Java ? Il est possible que vous n'ayez pas compris une notion de En Java, vous pouvez aussi faire du dessin (graphisme) 2D Java ou que vous ayez un problme pour implmenter et 3D. Vous pouvez utiliser diffrentes API pour faire quelque chose. La premire chose faire est de vrifier ceci : Java2D, Java3D, JOGL, LWJGL et encore quelques dans les tutoriels Java si vous ne trouvez pas la rponse. autres moteurs graphiques. Voici quelques ressources qui Ensuite, vous pouvez consulter les diffrentes FAQ de la rubrique : vous aideront dmarrer avec le graphisme : FAQ Gnral Java : pour tout ce qui concerne le Introduction au dessin en Java : Lien 40 ; langage en gnral et les notions principales de La programmation OpenGL en Java : introduction Java : Lien 49 ; JOGL : Lien 41 ; FAQ Java GUI : pour tout ce qui concerne les Premiers pas avec la librairie Java 3D : Lien 42 ; interfaces graphiques en Java : Lien 50 ; Les API 3D pour Java : Lien 43. FAQ Java XML : pour tout ce qui concerne la manipulation de XML en Java : Lien 51 ;
Numro HS 2 Hors srie spcial rentre Page 3

Developpez Magazine est une publication de developpez.com

FAQ Java EE : pour tout ce qui concerne Java EE : Lien 52 ; FAQ Java ME : pour tout ce qui concerne Java ME : Lien 53 ; FAQ JDBC : pour tout ce qui concerne la manipulation des bases de donnes : Lien 54 ; FAQ Hibernate : pour tout ce qui concerne Hibernate : Lien 55 ; FAQ Struts : pour tout ce qui concerne le framework struts : Lien 56 ; FAQ Eclipse : pour tout ce qui concerne Eclipse : Lien 57 ; FAQ Netbeans : pour tout ce qui concerne Netbeans : Lien 58 ; FAQ JCreator : pour tout ce qui concerne JCreator : Lien 59 ; FAQ Maven 2 : pour tout ce qui concerne Maven 2 : Lien 60.

Si votre rponse ne se trouve pas dans une de ces pages, vous pouvez poser votre question sur les forums Java : Gnral Java : pour toutes vos questions gnrales Java : Lien 61 ; Et ses sous-forums : Langage : langage Java, syntaxe, POO, conventions : Lien 62 ; API : forum sur les API standard et API complmentaires : Lien 63 ; JDBC : pour vos questions sur l'API JDBC : Lien 64 ; Persistance : pour toutes vos questions sur la gestion de la persistance en Java : Lien 65 ; Spring : pour vos questions sur le framework Spring : Lien 66 ; XML : pour vos questions sur la manipulation des fichiers XML : Lien 67 ;

Java ME : pour vos questions sur le dveloppement pour mobiles : Lien 68. Interfaces graphiques en Java : pour toutes vos questions sur les interfaces graphiques en Java : Lien 69 ; Et ses sous-forums : AWT/Swing : pour toutes vos questions sur les API Swing et AWT : Lien 70 ; SWT/JFace : pour toutes vos questions sur les API SWT et JFace : Lien 71 ; Graphisme : pour toutes vos questions sur le graphisme (2D, 3D, OpenGl...) en Java : Lien 72. Dveloppement web avec Java : pour toutes vos questions sur la programmation web en Java : Lien 73 ; Serveurs d'applications pour Java/Java EE : pour toutes vos questions sur la programmation web en Java : Lien 74 ; EDI/Outils pour Java : pour toutes vos questions sur les diffrents outils pour Java : Lien 75.

Lorsque vous posez une question, soyez toujours le plus prcis possible et vitez les questions du type "Urgent problme db". Faites aussi attention poster dans le bon sous-forum. Plus votre question sera claire et plus il y aura de gens qui la liront et prendront la peine d'essayer d'y rpondre. Et voil, j'espre que vous trouverez les rponses vos questions. 6. Conclusion J'espre que cet article aura pu vous aider vous lancer dans le langage Java plus facilement et que vous aurez acquis de nouvelles connaissances. Retrouvez l'article de Baptiste Wicht en ligne : Lien 76

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 4

Android
Tutoriels et articles
Introduction la programmation sous Android Ce tutoriel a pour but de vous prsenter succinctement Android, ainsi que les prmices de la programmation sous celui-ci.
1. Android, c'est quoi ? 2.4. Content providers Android est un OS mobile Open Source pour smartphone, Les content providers servent accder des donnes PDA, MP3 et tablette. Conu initialement par Android depuis votre application. Vous pouvez accder : Inc , il a t rachet par Google en 2005. aux contacts stocks dans le tlphone ; l'agenda ; Pour commencer la programmation Android, il faut aux photos ; d'abord installer le SDK Android et comprendre les bases ainsi qu' d'autres donnes depuis votre de la programmation sous Android. Puis nous allons faire application grce aux content providers. notre premier programme sous Android c'est--dire le bien connu Hello Word pour bien comprendre ces bases. 3. Cycle de vie d'une application Android 2. Composantes d'une application Android Une application Android est compose d'lments de base : 2.1. Activities (Activits en franais) Une activit est la composante principale pour une application Android. Elle reprsente l'implmentation mtier dans une application Android. Prenant l'exemple d'une application qui liste tous vos fichiers mp3 prsents dans votre tlphone, le projet pourrait se dcomposer comme ci-dessous : une vue pour afficher la liste des mp3 ; une activit pour grer le remplissage et l'affichage de la liste ; si l'on veut pouvoir rajouter, supprimer des mp3, on pourrait rajouter d'autres activits. 2.2. Services Un service, la diffrence d'une activit, ne possde pas 3.1. OnCreate de vue mais permet l'excution d'un algorithme sur un temps indfini. Il ne s'arrtera que lorsque la tche est finie Cette mthode est appele la cration de votre activit (Activity). Elle sert initialiser votre activit ainsi que ou que son excution est arrte. toutes les donnes ncessaires cette dernire. Il peut tre lanc diffrents moments : Quand la mthode OnCreate est appele, on lui passe un au dmarrage du tlphone ; au moment d'un vnement (arrive d'un appel, Bundle en argument. Ce Bundle contient l'tat de sauvegarde enregistr lors de la dernire excution de SMS, mail, etc.) ; votre activit. lancement de votre application ; action particulire dans votre application. 3.2. onStart 2.3. Broadcast and Intent Receivers Un Broadcast Receiver comme son nom l'indique permet d'couter ce qui se passe sur le systme ou sur votre Si votre activit ne peut pas aller en avant-plan quelle que application et dclencher une action que vous aurez soit la raison, l'activit sera transfre OnStop. prdfinie. C'est souvent par ce mcanisme que les services sont lancs. Cette mthode est appele dans le cas o votre application est en arrire-plan et qu'elle repasse en avant-plan. Introduction la programmation sous Android

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 5

3.3. onResume Cette mthode est appele aprs OnStart (au moment o votre application repasse en avant-plan). OnResume est aussi appele quand votre application passe en arrire-plan cause d'une autre application. 3.4. onPause Appele juste avant qu'une autre activit que la vtre passe en OnResume. ce stade, votre activit n'a plus accs l'cran, vous devez arrter de faire toute action en rapport avec l'interaction utilisateur. Vous pouvez par contre continuer excuter des algorithmes ncessaires mais qui ne consomment pas trop de CPU. 3.5. onStop Appele quand votre activit n'est plus visible quelle que soit la raison. 3.6. onDestroy

7. Cliquez sur Install . 8. Installez Eclipse : Lien 78 (tlchargez une version comprenant Java, soit la version pour les dveloppeurs Java ou la version pour les dveloppeurs J2EE) : version installe pour ce tutoriel : 3.6.1 Helios. 9. Il faut aussi installer JDK (Java Development Kit) et JRE (Java Runtime Environement) si ce n'est pas dj fait : Lien 79. 10. Lancez votre Eclipse, allez dans le menu Help and Install New Software 11. Dans la partie Available Software , cliquez sur Add . 12. Rajoutez le nom du site ( ADT plugin par exemple). Dans la location rajoutez : Lien 80, puis cliquez sur OK. 13. Revenez dans Available Software , vous devez voir Developer Tools . Slectionnez-le et appuyez sur Next . 14. Cliquez sur Next pour lire et accepter la licence et puis cliquez sur Finish . 15. Pour finir l'installation relancez Eclipse.

Voil votre environnement de dveloppement est prt Appele quand votre application est totalement ferme tre utilis. (Processus termin). 4.2. Configuration de votre environnement de dveloppement 4. Installer votre environnement de dveloppement 4.1. Installation du SDK Android Vous avez d remarquer qu'un nouvel lment est apparu dans votre Eclipse dans le menu du haut (un petit Android qui sort d'une bote) :

1. Pour commencer allez sur le lien suivant : Lien 77 et tlchargez la version du SDK qui convient votre OS. Pour la suite on est sur un Windows 7. 2. Vous avez le choix entre la version Zip ou la version Cliquez sur l'icne en question, une nouvelle fentre va exe. Dans cet exemple on a pris la version Zip. 3. Une fois le SDK tlcharg, allez dans le dossier o se apparatre. trouve le fichier Zip et l'extraire dans le dossier de votre choix. 4. Lancez l'excutable SDK Setup qui se trouve la racine du dossier. 5. La fentre suivante apparait (la dernire version actuelle du SDK est 2.3) :

6. Choisissez ce que vous voulez installer. Par exemple : SDK Platform Android 2.x : correspond tout simplement au SDK Android basique en version 2.x ; Samples for SDK API 7 : correspond quelques exemples ; Android + Google APIs : correspond au SDK Android (1re option) + Google Api qui inclut diffrentes fonctions comme GoogleMap, etc. ; Galaxy Tab : c'est le SDK pour la tablette Samsung Galaxy Tab. En cas de problme d'installation, allez dans Settings et cochez Force https:// sources to be fetched using http:// .

Cet cran vous permettra de : installer de nouveaux paquets (Available Packages) ; mettre jour vos paquets ; voir les paquets dj installs (Installed Packages) ; crer votre mulateur Android et cela grce l'onglet Virtual Devices . Cliquez sur le bouton New . Une nouvelle fentre pour la cration de votre mulateur apparatra.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 6

Remplissez les champs : Project name : le nom du projet. Pour notre exemple on choisira Hello World. Build Target : cochez la SDK que vous souhaitez. On prendra Android 2.3. Properties : -------Application name : le nom de l'application. On choisira Hello World ; -------Package name : le nom du package principal de l'application. Il faut que ce dernier comporte au moins deux identifiants spars par des points. On prendra com.tuto.android ; -------Create Activity : si vous laissez coch, vous devez spcifier un nom pour l'activit de base de votre application. Nous choisirons HelloWorldActivity ; -------Min SDK Version : vous pouvez spcifier quelle version minimum du SDK est ncessaire pour le fonctionnement de votre application. Ce champ est facultatif. Name : le nom de votre mulateur (sans espace). Target : version du SDK Android de l'mulateur. SD Card (facultatif) : configuration de la SD Card (Taille, etc.). Skins : choisissez la taille, rsolution de votre mulateur. Des mulateurs prconfigurs se trouvent dans la partie Built-in. Hardware : cette partie permet de rajouter le matriel spcifique votre mulateur. Par exemple vous pouvez rajouter un GPS, configurer le clavier, l'acclromtre, etc. Puis cliquez sur Finish , le projet Hello World va apparatre dans l'arborescence d'Eclipse. 5.2. Explication de l'arborescence du projet Voici le rsultat de la cration de votre projet et l'arborescence de ce dernier

L'mulateur apparatra maintenant dans la liste des mulateurs disponibles. Maintenant on va passer la partie la plus intressante. 5. Ma premire application sous Android 5.1. Cration du projet Hello World Dans Eclipse, cliquez sur File -> New -> Android Project . La fentre ci-dessous s'affichera : src : ce dossier contient les sources de votre application (code JAVA) et les packages. com.tuto.android : un package de votre application. Bien sr, vous pouvez avoir plusieurs packages dans votre application. HelloWorldActivity.java : notre principale activit. (je vous conseille d'avoir plusieurs activits pour les diffrentes parties de votre code). gen : dossier qui contiendra le fichier R.java (ce fichier est gnr automatiquement partir de vos vues et fichiers de ressource). R.java : ce fichier est automatiquement gnr par le SDK Android chaque prcompilation. assets : contient des donnes qui pourront tre utilises dans votre application (images, vidos, licence, etc.). res : c'est le dossier qui contiendra les ressources de votre application (images, vidos, styles). drawable-hpdi : contient toutes les images,
Numro HS 2 Hors srie spcial rentre Page 7

Developpez Magazine est une publication de developpez.com

bitmaps dont vous avez besoin pour votre application en haute rsolution. drawable-ldpi : contient toutes les images, bitmaps dont vous avez besoin pour votre application en basse rsolution. drawable-mdpi : contient toutes les images, bitmaps dont vous avez besoin pour votre application en moyenne rsolution. Icon.png : l'icne de votre application, cette icne sera affiche sur le bureau. layout : le SDK Android offre une technique de cration d'interfaces graphiques l'aide de fichiers XML. C'est dans ce dossier que vous inclurez l'ensemble des fichiers dcrivant vos interfaces. Vous pouvez crer d'autres dossiers pour les menus par exemple. Main.xml : le fichier principal de votre interface. values : ce dossier contient un ensemble de fichiers dcrivant les valeurs (pseudovariables) utilises par votre application. On peut, par exemple, y mettre des chanes de caractres (strings.xml), des tableaux (arrays.xml), des entiers, des couleurs, etc. Strings.xml : fichier qui contient vos dclarations de chanes de caractres. AndroidManifest.xml : dfinit le comportement de votre application au systme Android. Ce fichier dfinit par exemple le nom, l'icne, la version min du SDK, les activits, les services, etc.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/r es/android" package="com.tuto.android" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".HelloWorldActivity" android:label="@string/app_name"> <intent-filter> <action android:name= "android.intent.action.MAIN" /> <category android:name= "android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>

5.3. Hello, World! Le projet exemple cr de base par Eclipse reprsente un Hello World! . Vous pouvez le lancer en tant qu'une application Android. Pour cela, il vous suffit de cliquer droit sur le projet, puis slectionner l'option Run As -> Android Application et la l'mulateur devrait se lancer. L'mulateur prendra un peu de temps se lancer la premire fois (ne le fermez pas entre vos diffrentes modifications). Voil le deuxime cran qui devrait s'afficher si tout se passe bien (le premier est pareil mais avec juste crit Android )

La balise manifest la ligne deux contient plusieurs arguments, le plus important est package , qui donne le nom du package dans lequel se trouve votre activit principale. La balise application sert la dclaration de diffrentes proprits de votre application : -------android:icon : l'emplacement o se trouve l'icne de votre application ; -------android:label : le nom de votre application (il se trouve dans strings.xml). La balise activity permet de dclarer une activit, chaque nouvelle activit il faut remettre cette balise. -------android:name : le nom de la classe Java qui reprsente l'activit. Le nom doit commencer par un . et on ne met pas le .java la fin. -------android:label : le label de l'activit en question. -------intent-filter : c'est pour spcifier une action. --------------la sous-balise action est pour spcifier l'action excuter, dans notre cas c'est le main. --------------la sous-balise category est l pour spcifier la catgorie de l'action. --------------Voici un lien qui explique les diffrents types d'actions et de catgories : Lien81. strings.xml

Notre Hello Word est bien fonctionnel mais reste encore le comprendre. Allons voir le code pour comprendre ce qui se passe.

<xml version="1.0" encoding="utf-8"> <resources> <string name="hello"> Hello World, HelloWorldActivity! </string> <string name="app_name">Hello World</string> </resources>

dans les balises resources, on met une balise string chaque fois que l'on a besoin de dclarer une chane de caractres ; on dclare deux chanes : -------la chane hello qui contiendra Hello
Numro HS 2 Hors srie spcial rentre Page 8

Developpez Magazine est une publication de developpez.com

World, HelloAndroActivity! qui est le message qui sera affich dans l'application ; -------la chane app_name qui contient Hello Andro qui reprsente le nom de l'application. main.xml ------- On dispose de deux modes de visualisation. --------------Onglet Layout : mode visualisation et dition d'interface ; --------------Onglet main.xml : mode code source. -------On commence par une balise qui dfinit le layout : ici LinearLayout. -------Voici un lien pour la liste des diffrents layouts : Lien 82. -------On dclare une composante TextView pour afficher du texte et on lui dit qu'elle doit afficher le contenu de @string/hello, donc de la variable hello qui est dclare dans strings.xml c'est--dire Hello World, HelloWorldActivity! . HelloAndroActivity.java

que l'on utilise du code qui a t gnr par les diffrents fichiers xml de ressources. R.layout : on va chercher la vue dclare dans le dossier layout et qui s'appelle main donc notre main.xml. R.java

/* AUTO-GENERATED FILE. DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found. It * should not be modified by hand. */ package com.mti.android; public final class R { public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } public static final class layout { public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; public static final int hello=0x7f040000; } }

package com.mti.android; import android.app.Activity; import android.os.Bundle; public class HelloAndroActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }

Vous ne devez pas toucher ce fichier, il est gnr automatiquement partir de vos fichiers qui se trouvent dans le dossier des ressources (res). Vous remarquez que toutes les variables dclares dans strings.xml sont prsentes, que l'interface dclare dans main.xml aussi. Ce qui explique l'utilisation de la ligne R.layout.main dans le HelloWorldActivity.java ainsi que l'icne de l'application.

Notre main activit. Elle doit hriter de la classe Activity ou d'une sous-classe de cette dernire. Lien 83. La mthode OnCreate est quivalente au main, elle est appele la cration de votre vue. On appelle simplement le OnCreate de la classe mre puis on initialise la vue. Puis, on met dedans R.layout.main, c'est--dire la vue dclare dans le fichier main.xml. chaque fois que vous voyez R , c'est--dire

6. Conclusion Voil on s'arrte ici pour ce premier tutoriel, d'autres tutoriels vont suivre trs prochainement et aborderont des sujets plus approfondis. Retrouvez l'article de Nazim Benbourahla en ligne : Lien 84

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 9

Eclipse
Tutoriels et articles
Installation et utilisation d'eclipse pour le dveloppement en Java La version originale de cet article peut tre trouve ici : Lien 85. Copyright Henri Garreta (Lien 86), Universit de la Mditerrane (Aix-Marseille Universit) (Lien 87) et Facult des Sciences de Luminy (Lien 88). La documentation en ligne d'eclipse est abondante mais son approche n'est pas immdiate. Sans souci d'exhaustivit, nous donnons ici quelques indications pour dbuter rapidement dans l'utilisation de cet excellent outil de dveloppement. la date du 16 juillet 2009, les versions courantes des logiciels en question sont : Java JDK 1.6.0 (ou 6) update 14 ; Eclipse platform 3.5.0 Galileo . Les versions dcrites ici ne sont peut-tre pas exactement celles-l mais elles leur sont fonctionnellement quivalentes.
Note de la rdaction Cet article datant de quelques annes, les versions des logiciels ont volu, mais l'ensemble de cet article est ralisable avec les versions actuelles. 1. Se procurer le kit de dveloppement Java Eclipse ne contient ni le compilateur Java ni les autres outils basiques. Pour dvelopper des programmes en Java, il faut donc installer au pralable un kit de dveloppement. Nous conseillons celui de Sun Microsystems, la maison mre de Java, qui est complet, jour (par dfinition) et gratuit. Vous pouvez l'obtenir chez Sun : site java.sun.com (Lien 89), menu Downloads, rubrique Java SE (comme Standard Edition). Le produit tlcharger s'appelle, lors de la publication de cette notice, JDK 6 update 14. Attention, ne confondez pas le JDK (Java Development Kit) avec le JRE (Java Runtime Environment), appel parfois plugin Java , qui ne contient que le ncessaire pour excuter les programmes Java. Ne vous occupez pas de tlcharger le JRE, l'intrieur du JDK il y en a un exemplaire. Le fichier qui vous concerne se nomme : dans le cas de Windows : jdk-6u14-windowsi586.exe (73,5 Mo) ; dans le cas de Linux : jdk-6u14-linux-i586.bin (77 Mo). Il s'agit dans les deux cas d'un installateur autoextractible : aprs le tlchargement, il suffit de le lancer et de suivre les instructions qui s'affichent. Au besoin, des renseignements supplmentaires sur l'installation du JDK sont donns sur le site de Sun, aussi bien pour Windows (Lien 90) que pour Linux (Lien 91). Une fois l'installation termine, vrifiez sa russite en tapant java -version dans une console de commandes. Vous devez obtenir un message vous annonant le numro de version de la machine Java mise en place. Dans le cas de Windows, cela ressemblera ceci : Installation et utilisation d'Eclipse pour le dveloppement en Java

Pour dvelopper des programmes en Java, il vous faut disposer galement de la documentation de l'API (Application Programmer Interface, c'est--dire le volumineux ensemble de paquetages, classes, mthodes et variables qui constituent la bibliothque systme). Vous pouvez la consulter en ligne (Lien 92) ou bien la tlcharger depuis le site java.sun.com (Lien 89), menu Downloads, rubrique Java SE, produit Java SE 6 Documentation (quel que soit votre systme d'exploitation, le fichier s'appelle jdk-6u10-docs.zip et pse 56 Mo). Note (cas de Windows). Si vous souhaitez pouvoir employer le compilateur et les autres outils Java en dehors d'eclipse, c'est--dire en tapant des commandes dans une console Invite de commandes, alors vous devez procder la manipulation supplmentaire suivante : reprer le rpertoire d'installation de Java et ajouter le chemin \bin dans la dfinition de la variable Path. Si vous avez laiss l'installateur de Java faire sa guise, doit tre quelque chose comme C:\Program Files\Java\jdk1.6.0_04.
Numro HS 2 Hors srie spcial rentre Page 10

Developpez Magazine est une publication de developpez.com

Vous pouvez examiner et modifier la valeur de la variable Path en cliquant avec le bouton droit sur l'icne du Poste de travail, puis Proprits > Avanc > Variables d'environnement > Variables systme ; slectionner la ligne Path puis faire Modifier. Dans le cas de Linux, une manipulation analogue est ncessaire aprs l'installation du JDK. Nous ne l'expliquons pas car elle fait partie des oprations courantes sur ce systme. 2. Tlcharger eclipse Eclipse est un logiciel libre que vous pouvez tlcharger depuis le site www.eclipse.org (Lien 93), onglet Downloads. Le produit qui nous intresse est Eclipse IDE for Java Developers (92 MB).

ordinateur partag, il est conseill de mettre l'espace de travail dans votre dossier Documents (sur Windows XP il se trouve dans le dossier Documents and Settings). Si vous tes le seul utilisateur de votre systme, mettez l'espace de travail o bon vous semble. Sauf indication contraire, les fichiers sources de vos programmes se trouveront dans l'espace de travail. Il est donc important de se souvenir de l'emplacement de ce dernier pour accder aux sources (par exemple, pour les transporter, les copier, etc.).

Le fichier tlcharg se nomme : dans le cas de Windows : eclipse-java-galileowin32.zip ; dans le cas de Linux : eclipse-java-galileo-linuxgtk.tar.gz ; dans le cas de Max OS X : eclipse-java-galileo- Si vous cochez la case Use this as the default and do not ask again eclipse ne vous posera plus cette question macosx-carbon.tar.gz. (mais il y a toujours un moyen pour changer Nous ne vous conseillons pas de tlcharger une version ultrieurement l'espace de travail : File > Switch franaise d'eclipse. Il existe bien des plugin de francisation Workspace > Other...). de l'interface, mais outre le fait qu'elles sont assez imparfaites, elles servent surtout vous empcher Au bout de quelques instants (la premire fois ce n'est pas trs rapide) vous obtenez un cran qui prsente le produit, d'utiliser la dernire version du logiciel. comme ceci : 3. Installer eclipse A partir d'ici, les explications sont communes aux divers systmes d'exploitation, ou bien ne concernent que Windows XP et Vista. Pour installer eclipse, il suffit de dcompresser l'archive zip ou tar.gz tlcharge. Cela cre un dossier, nomm eclipse, que nous vous conseillons de placer aussi haut que vous le pouvez dans la hirarchie de fichiers de votre systme. Dans la suite de cette note nous supposons que vous avez fait ainsi et que vous avez donc un dossier nomm Vous pouvez feuilleter cette prsentation, elle est faite pour C:\eclipse. cela. Quand vous en aurez assez, cliquez sur le lien Workbench (la flche reprsente droite de l'cran). Le Pour faciliter le lancement d'eclipse, crez un raccourci contenu de la fentre devient tout de suite beaucoup plus vers le fichier C:\eclipse\eclipse.exe et placez-le sur le srieux : bureau, dans le menu dmarrer ou ailleurs, selon vos gots. L'installation d'eclipse est donc bien plus lgre que celle de beaucoup de logiciels ; en particulier, sous Windows, elle ne produit pas d'inscription dans la base de registres. Par consquent, pour dsinstaller compltement eclipse il suffira, le moment venu, de mettre la corbeille le dossier C:\eclipse et les divers espaces de travail (dossiers workspace , voir ci-dessous) crs ultrieurement. 4. Premier lancement d'eclipse Lancez eclipse, par exemple en double-cliquant sur le 5. Configurer eclipse pour faire du Java raccourci que vous venez de crer. Au bout de quelques instants, on vous demandera de situer l'espace de travail Eclipse est un environnement qui permet une grande dans lequel seront vos fichiers. Si vous travaillez sur un varit d'activits de dveloppement (pour vous en
Numro HS 2 Hors srie spcial rentre Page 11

Developpez Magazine est une publication de developpez.com

convaincre, faites un tour chez eclipse plugin central (Lien 94), chez eclipse plugins (Lien 95) ou bien sur le site francophone eclipsetotale.com (Lien 96)). En standard, eclipse est prt pour le dveloppement en Java, encore faut-il veiller ce que la perspective (c'est--dire l'arrangement des vues montres l'cran) soit celle qui convient le mieux Java. Si ce n'est pas le cas, agissez sur la petite icne en haut droite cercle de rouge sur la figure 4, tiquete Open perspective et choisissez Java. Fermez les vues Task List et Outline ( droite) ; pour afficher la structure des classes, la vue Package explorer ( gauche) suffit. Vous obtenez un cadre de travail tout fait commode pour dvelopper en Java :

La mthode rapide consiste donner un nom de projet (si possible, moins bte que Mon projet gnial...) et cliquer sur le bouton Finish. Notez que les autres questions poses dans ce panneau sont intressantes. La troisime, notamment, permet de conserver sparment les fichiers sources (prcieux) et les fichiers classes (qu'en cas de perte on peut toujours refaire).

Dans un projet srieux nous commencerions par crer des packages (deuxime bouton des assistants Java, New Java Package ). Mais, puisque nous dbutons, allons l'essentiel et ajoutons directement une ou plusieurs classes au projet : c'est le troisime des boutons d'assistants Java, New Java Class (cercl de rouge dans la figure 7), qui fait cela. La mthode rapide consiste donner le nom de la classe et cocher la case tiquete public static void main(String[] args) :

6. Dvelopper un programme Java Pour commencer, crer un projet. Note pour les tudiants. Ne vous sentez pas obligs de crer un nouveau projet chaque fois que vous commencez un nouvel exercice de programmation : vous pouvez trs bien avoir un seul projet, contenant tous les exercices que vous faites dans le cadre d'un enseignement. D'autant plus que cela ne vous empchera pas de bien ranger vos fichiers : un projet peut contenir plusieurs packages java (qui se traduiront dans le systme de fichiers par des rpertoires diffrents). Pour crer un projet, cliquez sur le premier des boutons d'assistants Java (cercl de rouge sur la figure 5) tiquet New Java Project . Vous obtenez le panneau New Java Project o, au minimum, vous devez donner un nom pour votre projet : Notez qu'eclipse critique notre dmarche, nous indiquant que l'emploi du package par dfaut (sans nom) est dcourag. Cela ne fait rien, nous construisons ici une application de dbutant. Eclipse cre alors un fichier source contenant une classe rudimentaire, correcte mais creuse, que vous n'avez plus qu' complter pour en faire le programme voulu :

Note. Lorsqu'un commentaire contient l'expression TODO, eclipse affiche une marque bleue dans la marge qui permet de se rendre rapidement cet endroit. C'est trs pratique
Numro HS 2 Hors srie spcial rentre Page 12

Developpez Magazine est une publication de developpez.com

pour retrouver dans les gros fichiers ces commentaires qui signalent des morceaux en chantier. Pour essayer votre programme vous allez taper le classique System.out.println("Bonjour tous !"); l'intrieur de la fonction main. Au fur et mesure que vous tapez, remarquez comment : la vue Package Explorer montre les packages (rpertoires) qui composent votre projet, les classes que ces paquetages contiennent, les membres de ces classes, etc. Bien entendu, double cliquer sur une de ces entits vous positionne dessus dans le texte source ; si vous marquez une pause lorsque vous tapez un point, eclipse vous montre la liste de ce que vous pouvez taper ensuite ; si vous laissez traner le curseur sur un identificateur, eclipse affiche la documentation correspondante ; si vous faites une faute, eclipse vous la signale immdiatement et, dans le cas d'erreurs smantiques, vous suggre des corrections ; le simple fait de sauver le programme en provoque la compilation.

dvelopp une application dans eclipse, vous souhaitez rcuprer vos fichiers sources pour les amener sur un autre systme, les compiler dans un autre environnement ou tout simplement les ranger dans vos archives. La rponse se trouve dans les figures 2 et 6 : si lors de la cration du projet vous avez laiss l'option par dfaut Create new project in workspace (cf. figure 6) alors les fichiers sources, rangs dans des dossiers correspondant aux packages, sont dans le dossier workspace, lui-mme plac l'endroit que vous avez indiqu au lancement d'eclipse (cf. figure 2). 8. Comment amener dans eclipse des fichiers crs ailleurs ? Deux cas possibles : ces fichiers forment dj un projet eclipse (par exemple cr sur un autre systme), ou bien il ne s'agit que d'un ensemble de fichiers sources en vrac. 8.1. Vous avez dj un projet eclipse Copiez le dossier du projet eclipse o vous voulez (par exemple dans le dossier workspace, mais ce n'est pas une obligation), puis faites la commande File > Import... Ensuite, choisissez General puis Existing Projects into Workspace. Le projet que vous venez d'importer apparat dans la fentre Package explorer, c'est termin.

Pour excuter le programme, assurez-vous que la vue diteur contient une classe excutable (c'est--dire une classe publique avec une mthode public static void main(String[] args);) et alors activez la commande Run as > Java Application du menu attach au bouton cercl 8.2. Vous n'avez qu'un ensemble de fichiers sources de rouge sur la figure 9 : Java

L'application s'excute et, si des sorties sont afficher, une vue Console apparat au-dessous de la vue diteur : 9. Dboguer les programmes

Prenez un projet qui existe dj, ou bien crez un noveau projet. Ensuite : soit, l'aide de la commande File > Import... > General > File system, vous naviguez la recherche du(des) fichier(s) en question et vous les importez dans ce projet ; soit, plus simplement : vous copiez les fichiers dans le dossier o sont les sources d'un des projets connus dans eclipse, puis vous slectionnez ce projet dans la vue Package Explorer et enfin vous excutez la commande File > Refresh.

Notez que dans la vue Console il y a un bouton, cercl de rouge sur la figure 11, qui permet d'arrter une application qui bouclerait indfiniment. Ce bouton est rouge quand l'application est vivante, gris (estomp) lorsque l'application est morte. 7. O sont mes fichiers sources ? Cette question se pose par exemple lorsque, aprs avoir

Un programme bogu est un programme qui ne donne pas les rsultats qu'il devrait. Dboguer un programme c'est chercher les erreurs de programmation l'origine de tels dysfonctionnements. Pour aider le programmeur dans cette recherche, eclipse offre un mode debug permettant, entre autres choses : la pose de marques, appeles points d'arrt, sur des lignes du programme source, de telle manire que l'excution s'arrtera lorsque ces instructions seront atteintes ; lors de tels arrts, l'examen des valeurs qu'ont alors les variables locales et les membres des objets ; partir de l, l'excution du programme pas pas (c'est--dire ligne ligne). Pour dboguer simplement un programme, il suffit de poser un point d'arrt au dbut de l'endroit qu'on souhaite examiner en dtail. Pour cela, il faut double-cliquer dans la
Numro HS 2 Hors srie spcial rentre Page 13

Developpez Magazine est une publication de developpez.com

marge, gauche de la ligne en question, ce qui fait apparatre un disque bleu (cercl de rouge dans la figure En haut de cette vue (figure 15) se trouvent des boutons 12) qui reprsente le point d'arrt. trs utiles. Parmi les principaux : step over : faire avancer l'excution d'une ligne. Si cette dernire contient un appel de mthode, ne pas dtailler l'activation de celle-ci, c'est--dire considrer l'appel comme une instruction indivisible ; step into : avancer l'excution d'une ligne. Si un appel de mthode est concern, dtailler son activation, c'est--dire aller dans la mthode et s'arrter sur sa premire ligne ; step return : relancer l'excution normale, jusqu' la fin de la mthode dans laquelle on est arrt et le retour la mthode qui a appel celle-ci ; resume : relancer l'excution normale, jusqu' la Il faut ensuite lancer le dbogage, l'aide du bouton fin du programme ou le prochain point d'arrt ; gauche de celui qui lance l'excution, reprsentant une terminate : terminer l'excution. punaise (bug) : En haut et droite de la fentre principale se trouvent les vues Variables et Expressions. La premire affiche les valeurs courantes des variables locales de la mthode en cours, la deuxime affiche les valeurs courantes des expressions slectionnes avec la commande Watch L'excution est alors lance et se droule normalement (cliquer avec le bouton droit sur l'expression surveiller). jusqu' atteindre le point d'arrt. Eclipse demande alors la permission de changer de perspective (ensemble et Le dbogueur d'eclipse possde bien d'autres commandes disposition des vues montres) et adopte l'apparence de la trs puissantes, comme les points d'arrt conditionnels et la possibilit de modifier les valeurs des variables du figure 14 : programme. Prenez un peu de temps pour les explorer, c'est payant. 10. Le refactoring Rusiner (refactor) un programme correct c'est modifier son texte source sans changer son fonctionnement et ses rsultats. Par exemple, changer le nom d'une variable ou d'une mthode parce que, par suite de l'volution du programme (ou du programmeur), le nom initialement choisi est devenu moins adapt ou expressif qu'un autre. Le refactoring se traduit gnralement par des oprations globales, fastidieuses, qu'il n'est pas facile d'automatiser. La vue Debug, en haut gauche de la fentre, montre la Heureusement eclipse offre de puissantes fonctions pour pile d'excution, c'est--dire, pour chaque thread, effectuer ce travail. Voici leur description, directement l'empilement des mthodes qui se sont mutuellement traduite de l'aide en ligne du logiciel. appeles (mthodes commences et non termines). Dans la figure 14, par exemple, on attire notre attention sur la Commandes du menu Refactor mthode Bidon.main, plus prcisment la ligne 8 du fichier source, o a t appele la mthode Bidon.maxi, dans Voir tableau en ligne : Lien 97 laquelle l'excution est arrete, la ligne 3. Commentez cette news de Henri Garreta en ligne : Lien 98

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 14

Outlook
Tutoriels et articles
Comment configurer Outlook pour qu'il agisse ds l'arrive de messages dans votre bote aux lettres Dans cet article, nous allons parcourir la mthode de cration de rgles pour Microsoft Outlook.
1. Introduction Si vous utilisez un serveur Exchange, certaines rgles fonctionnent sur le serveur, mme durant votre absence, Rgulirement, sur le forum Outlook apparaissent des alors que d'autres ncessitent que Outlook soit ouvert. questions concernant les rgles de rception de messages. Pour appliquer certaines actions lors de l'arrive de Que vous optiez pour une nouvelle rgle ou pour la messages, il existe deux possibilits, la premire, c'est modification d'une rgle, le principe est toujours le mme. d'utiliser le VBA et crire un morceau de code qui Pour ce qui va suivre, je pars d'une nouvelle rgle. effectuera certaines actions votre place. La seconde est d'utiliser l'assistant " Rgles et Alertes ". 2. L'assistant " Rgles et Alertes ". Dans le menu Outils, il y a une entre " Rgles et Alertes ", c'est cette entre qui va nous amener l'assistant. (Sous Outlook 2002, on y accde par : "Assistant Gestion des messages".) Comment configurer Outlook pour qu'il agisse ds l'arrive de messages dans votre bote aux lettres

J'ai choisi d'excuter la rgle lors de la rception des messages, on peut galement l'excuter lors de l'envoi.

Menu " Rgles et Alertes " La bote de dialogue qui s'ouvre ensuite offre plusieurs possibilits d'actions pour les rgles. Vous pouvez cocher les critres qui vous conviennent le mieux. Ces critres vont permettre d'agir comme un filtre sur les messages entrants. Si vous ne cochez aucune ligne, cette rgle s'appliquera tous les messages.

1. 2. 3. 4. 5. 6.

Cration d'une nouvelle rgle Modification d'une rgle existante Copie d'une rgle Suppression d'une rgle Excution des rgles Options

Les paramtres des filtres sont modifiables dans la fentre infrieure, le pointeur se transforme en main, et ouvre une
Numro HS 2 Hors srie spcial rentre Page 15

Developpez Magazine est une publication de developpez.com

bote de dialogue supplmentaire.

Vous pouvez comme pour toutes les rgles dfinir des exceptions.

L'cran suivant vous demande ce que vous voulez faire.

Et terminer par le nom de votre rgle.

Si vous dsirez copier le message dans un dossier spcifique, une nouvelle bote de dialogue s'affiche.

Lors de cette dernire tape, vous avez la possibilit d'excuter la rgle immdiatement, sur les messages dj prsents, ou d'activer la rgle pour les prochaines rceptions. Retrouvez l'article d'Olivier Lebeau en ligne : Lien 99

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 16

Word
Tutoriels et articles
Fusion et Publipostage, par l'interface et en VBA Word peut se rvler un outil de choix pour la diffusion en masse de documents personnaliss. crire une seule lettre qui sera diffrente pour chaque destinataire.
1. Introduction Suite de nombreuses questions lies au publipostage, j'ai dcid de me lancer dans un tutoriel. Je vais tenter d'apporter quelques claircissements sur les mthodes utiliser. Certaines sont accessibles aux dbutants, d'autres font appel des techniques avances de VBA. Toutes les illustrations sont issues de Word 2007, mais les mthodes utilises sont applicables aux versions antrieures. Le publipostage est une technique qui permet de crer un grand nombre de lettres types dont le contenu est personnalis. Les informations utilises pour le publipostage ne se limitent pas aux donnes personnelles, La partie infrieure permet de naviguer d'une tape elles peuvent tre d'une tout autre nature : factures, l'autre. contrats... Dans les parties qui vont suivre, le document de fusion principal sera toujours un document Word et l'application de dpart sera galement Word, seules les sources de donnes vont changer. 1.1. Les commandes Le ruban contient tous les outils ncessaires pour effectuer Dans l'onglet Publipostage, Word possde une commande le publipostage. qui permet d'activer un assistant qui vous guidera pas pas. Ce volet comporte deux parties importantes. La partie suprieure contient l'tape en cours. Fusion et Publipostage, par l'interface et en VBA

Le groupe Crer Ce groupe permet de choisir entre enveloppes et tiquettes.

Dans la version 2007, cet assistant se prsente sous la forme d'un volet.

Le groupe Dmarrer la fusion et le publipostage Le premier bouton du groupe permet de choisir le type de document que vous allez crer. Il ouvre une liste droulante permettant de faire un choix. C'est galement ce bouton qui donne accs l'assistant. Le second bouton permet la slection des destinataires ou l'introduction d'une nouvelle liste. Enfin, le dernier bouton permet de travailler la liste en ajoutant un tri.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 17

3. Nouveau ou document en cours Vous pouvez crer un document fond sur le document en cours d'dition, crer un nouveau document fond sur un modle existant ou crer un nouveau document d'aprs un document existant.

Le Groupe champs d'criture et d'insertion Le premier bouton de ce groupe ne devient actif que si vous avez au moins un champ de fusion insr sur votre document. Le second permet d'insrer le bloc d'adresse. Le troisime bouton offre la possibilit d'insrer une ligne de salutation. Le dernier permet de choisir l'ajout d'un champ dans la liste. Vous pouvez rutiliser un champ du bloc adresse comme le prnom ou choisir un autre champ contenant d'autres donnes. Finalement, il est parfois utile de prvisualiser les rsultats avant de lancer l'impression ou l'envoi :

Cette tape ne devrait normalement pas poser de problme. 4. Les sources de donnes

Le groupe Aperu des rsultats

Nous allons parcourir quelques types de sources de donnes utilisables avec Word.

Une fois la source de donnes choisie, si vous enregistrez Dans certains cas de figure, la prvisualisation n'est pas votre document, vous obtenez un document principal de correcte, seul le rsultat final l'est. fusion. 2. Le type de document Pour le type de document, Word est plein de ressources. 4.1. Word Pour la source de donnes, nous pouvons utiliser un document Word. Il est beaucoup plus ais d'utiliser un tableau pour grer vos donnes. Si vous respectez certaines conventions, il sera d'autant plus facile d'utiliser ce document. Liste prformate d'un tableau Nom Prnom Adresse No Cp Ville Tel

ou encore

La liste peut aussi tre formate en CSV (Valeurs Spares par des Virgules).

Ces choix correspondent : une lettre, par exemple si Il ne reste qu' choisir le document Word contenant la liste. votre activit change d'adresse et que vous souhaitez prvenir vos clients, un message lectronique comme une "News Letter", paralllement l'dition de lettres vous pouvez y associer des enveloppes, faire des planches d'tiquettes ou finalement pour "crer" un rpertoire (rpertoire tlphonique).

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 18

4.2. Excel Cette liste peut galement tre une feuille Excel.

Vous obtenez alors une bote de dialogue permettant de choisir un fichier, le rpertoire par dfaut est le rpertoire contenant les informations sur les sources de donnes.

On choisit cette liste de la mme manire que pour un fichier Word.

Si votre base de donnes possde plusieurs tables, vous pouvez choisir la table qui contient vos adresses ou donnes pour le publipostage. Les requtes sont galement proposes.

Et votre liste peut se trouver sur n'importe quelle feuille du classeur. 4.4. Outlook Outlook contenant aussi des adresses, vous pouvez slectionner le carnet d'adresses Outlook pour un publipostage. Cette mthode se rvle trs intressante si vous dsirez faire un E-mailing. Si votre premire ligne n'est pas une ligne de donnes, vous devez le prciser l'ouverture.

Il est mme possible d'utiliser une plage de donnes.

Si vous possdez plusieurs carnets d'adresses, vous aurez le choix. 4.5. SQL Server Pour cette partie, nous allons utiliser une source de donnes situe sur une base SQL (SQL Server 2005 Express). J'ai choisi cette version parce qu'elle est disponible pour tous du fait de sa gratuit. Pour lier des donnes issues d'une base de donnes SQL Server, on procde de la mme manire que pour les autres sources de donnes.

4.3. Access L'utilisation d'une base de donnes Access pour la fusion et le publipostage est bien videmment possible. Dans l'onglet publipostage, aprs un clic le bouton Slection de destinataires, choisissez Utiliser la liste existante.

Tous les exemples ont t raliss partir de SQL Server Express 2005 : Lien 100.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 19

4.6. Cration d'une liste Si vous n'avez pas encore de liste et que vous dsirez crer une nouvelle liste, Word possde un outil qui va vous permettre de saisir une liste utilisable dans une fusion ou un publipostage.

est le bloc d'adresse.

Si vous utilisez le bouton Bloc d'adresses, vous pouvez Vous ouvrez un formulaire qui va vous permettre d'entrer visualiser le rsultat obtenu et parcourir les diffrents enregistrements qui constituent votre liste. des donnes. Vous avez galement la possibilit d'insrer un champ contenant des donnes autres que le bloc adresse.

Ce formulaire sommaire contient cependant tous les champs ncessaires pour faire votre publipostage. Si les colonnes proposes ne vous conviennent pas, vous avez la possibilit de les personnaliser.

Lorsque vous avez choisi un champ, il s'affiche dans votre document entour de guillemets.

Si vous voulez visualiser le contenu de votre champ, vous devez faire un clic droit sur le champ et choisir "Basculer Ds que votre liste est termine, le clic sur le bouton OK les codes de champ". ouvre une bote de dialogue vous demandant d'enregistrer vos donnes. Le seul format propos est le format *.mdb qui est le format de base de donnes des versions antrieures d'Access.

Par dfaut, Word contient les outils minimums pour Vous obtenez alors l'affichage du code du champ de fusion et de publipostage. l'utilisation et la cration d'une base de donnes Access. 5. Le document Vous pouvez diter votre document n'importe quelle tape du publipostage. Il existe des champs par dfaut et des blocs pour vous faciliter la tche. Le plus intressant
Developpez Magazine est une publication de developpez.com
Numro HS 2 Hors srie spcial rentre Page 20

Aprs avoir inclus au moins un champ dans votre document, vous pouvez visualiser l'aspect final de votre document. Vous avez votre disposition un groupe de contrle pour vous y aider.

6.1.1. Demander Dans le cadre d'un publipostage, ce champ n'a pas de fonction immdiate et ne doit pas tre utilis seul. Je vous conseille de l'utiliser avec un champ REF.

6. L'utilisation avance des champs Jusqu' prsent, nous avons utilis les champs de publipostage de faon trs simple. Word permet une utilisation un peu plus avance des champs. Pour l'utilisation avance du publipostage, je vous conseille de modifier les paramtres d'affichage de votre document. Bouton Office, Options Word

Insrer le champ demander Vous ouvrez alors une bote de dialogue.

Le remplissage Dans la partie Options Avances et Afficher le contenu du document, choisissez Afficher les codes de champ plutt que leurs valeurs. 1. Le nom du signet qui sera insr. 2. Le titre de la bote de dialogue (je vous conseille d'y mettre votre question) 3. Le message par dfaut (si vous n'entrez rien ce sera ce texte qui sera insr dans le signet) 4. Si cette option n'est pas coche, Word vous demandera un texte pour chaque document.

La combinaison de touche Alt + F9 produit le mme rsultat. 6.1. Les rgles Word offre la possibilit de fixer des rgles pour le publipostage. Toutes les rgles ne sont pas compatibles entre elles.

La bote remplie Si vous n'utilisez pas de champ REF, vous ne verrez pas la valeur entre dans votre document final.

Avec champ REF

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 21

6.1.2. Remplir En comparaison avec le champ prcdent, le champ remplir ne se retrouve pas dans un signet. Il n'est donc pas possible de l'utiliser avec le champ REF. Le texte entr est intgr votre document. Ce champ pourrait tre utilis pour renseigner le nom du correspondant qui a publi les documents.

Et comme rsultat :

Le contenu du champ si vous l'affichez sera celui-ci

On se trouve avec un champ Si : Lien 101 6.1.4. Numro d'enregistrement Ce champ ajoute le numro de l'enregistrement au document. Si vous dsirez numroter vos lettres, ce champ est tout indiqu.

Le champ remplir Le champ contenant votre invite et ses commutateurs

Le champ Remplir 6.1.3. Si Alors Sinon Dans les rgles, la rgle la plus intressante est Si... Alors... Sinon. Si vous souhaitez utiliser des articles ou qualificatifs pour diffrencier les hommes des femmes, par exemple Cher Marcel ou Chre Marie, vous devriez Numro d'enregistrement ajouter autant de champs dans votre base de donnes que de qualificatifs ou articles que vous pensez devoir utiliser. Cette rgle assez simple permet de faire un choix en fonction d'un champ de votre base de donnes. Imaginez que vous ajoutiez le champ sexe dans vos donnes, vous Le champ pouvez faire ce choix n'importe quel endroit de votre document. 6.1.5. Numro de squence La valeur obtenue sera identique au champ Numro d'enregistrement si vous utilisez tous les enregistrements. Si vous filtrez les enregistrements, ce numro sera diffrent.

Vous obtiendrez une bote de dialogue : Numro de squence

Le champ 6.1.6. Suivant Ce champ va passer l'enregistrement suivant. C'est ce champ qui est utilis par Word si vous utilisez le
Numro HS 2 Hors srie spcial rentre Page 22

Developpez Magazine est une publication de developpez.com

publipostage pour la gnration d'un rpertoire. Pour que cette commande fonctionne, elle ne peut tre place devant le premier champ de votre publipostage et elle n'agit que pour le champ qui la suit directement.

Le rsultat obtenu :

Si votre affichage ne ressemble pas l'illustration, utilisez la combinaison de touche Alt + F9 pour basculer Ce champ va fusionner dans le mme document l'affichage des champs et n'oubliez pas de refaire cette l'enregistrement suivant si la condition n'est pas remplie, si opration pour annuler l'effet. la condition est remplie, on passe alors au document suivant. On utilise ce champ lorsque plusieurs Le code : enregistrements composent les donnes utiliser pour un mme document de publipostage. C'est le cas pour des { SKIPIF { MERGEFIELD Sexe } = "H" } factures. L'inconvnient, c'est qu'il est impratif de connatre le 6.2. Les images nombre d'occurrences que l'on va rencontrer. Nous verrons plus loin dans ce tutoriel comment utiliser une mthode Dans l'utilisation du publipostage, on ne trouve pas souvent de renseignement sur l'affichage des images. bien plus souple en VBA. Il est possible d'obtenir pour chaque enregistrement une image diffrente, imaginez un rpertoire o vous pourriez 6.1.8. Dfinir Signet associer une photo son propritaire. Si vous dcortiquez Ce champ permet d'affecter une valeur un signet. Cette un champ d'insertion d'image dans Word, vous obtenez valeur peut tre directement intgre au champ. ceci : 6.1.7. Suivant Si
{ SET Monsignet "MaValeur"} { INCLUDEPICTURE MERGEFORMAT } "c:\\temp\\a.jpg" \*

Dans ce cas, le signet prendra la valeur "MaValeur". Pour afficher le contenu du signet, vous devrez utiliser un La mthode pour y parvenir est la suivante : dans l'onglet champ REF. Insrer, le bouton QuickPart et la commande Champ.
{ REF Monsignet }

On peut aussi lui affecter la valeur d'un champ de publipostage. Cette utilisation peut tre trs utile si vous avez un document de plusieurs pages et que vous souhaitez afficher au dbut de chaque page le nom du destinataire.
{ SET Monsignet { MERGEFIELD Nom } } { REF Monsignet }

Choisissez champ Inclureimage.

6.1.9. Sauter l'enregistrement Ce champ permet d'viter l'impression de certains enregistrements s'ils ne rpondent pas certaines conditions. L'exemple le plus simple est l'envoi de lettre uniquement aux femmes. Si c'est un homme, l'enregistrement doit tre ignor. La fonction de ce champ est identique au filtre. Ne soyez pas surpris, cette clause de rejet n'affecte que le Et remplissez avec le chemin de votre image. publipostage et pas son aperu. On obtient ce critre de slection avec la mthode suivante :

Il ne nous reste plus que l'utilisation d'un champ de publipostage pour remplir le champ INCLUDEPICTURE.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 23

{ INCLUDEPICTURE MERGEFORMAT }

{ MERGEDFIELD Path }

\*

2 Les commutateurs utilisables sont commutateurs des champs. Le champ InclureImage : Lien 102 identiques aux 3

wdMainAndDataSource

Document de base avec une source de donnes jointe. Document de base avec un fichier d'en-tte.

wdMainAndHeader

Lors de l'dition du champ, on se rend compte que le chemin du fichier doit comporter des doubles antislashs au lieu des simples antislashs. Pour obtenir une insertion d'image lors d'un publipostage, nous devons donc ajouter un champ dans l'enregistrement qui contiendra le chemin de l'image mais avec des doubles antislashs. Le chemin normal
C:\Temp\a.jpg

Document de base avec une source de wdMainAndSourceAndHeader donnes et un fichier d'en-tte joints. wdDataSource Source de donnes sans document de base.

Le chemin utiliser
C:\\Temp\\a;jpg

Nous pourrions mme envisager de faire une fonction pour L'insertion des images ne se produit que lors de la fusion, tester l'tat du document. le mode prvisualisation ne permet pas l'affichage des images. Pour que toutes les images soient mises jour, Routine d'appel utilisez la combinaison Ctrl + A pour slectionner tout le Sub TestEtatDoc() document et ensuite la touche F9 pour mettre les champs MsgBox EtatDocument (ActiveDocument.MailMerge.State) jour.
End Sub

7. Le VBA Fonction 7.1. Introduction La commande pour la fusion et le publipostage en Word est MailMerge, et l'excution de la fusion avec Execute.
ActiveDocument.MailMerge.Execute Function EtatDocument( btEtat As Byte ) As String Select Case btEtat Case 0 EtatDocument = "Le document n'est pas inclus dans un processus de fusion et publipostage." Case 1 EtatDocument = "Document de base sans donnes jointes." Case 2 EtatDocument = "Document de base avec une source de donnes jointe." Case 3 EtatDocument = "Document de base avec un fichier d'en-tte." Case 4 EtatDocument = "Document de base avec une source de donnes et un fichier d'en-tte joints." Case 5 EtatDocument = "Source de donnes sans document de base." End Select End Function

Pour que cette commande ne lve pas d'erreur, certaines conditions doivent tre remplies. La principale : le document doit tre un document principal de fusion et publipostage. Un document principal de fusion est un document qui possde une source de donnes associe. Pour savoir si votre document est un document principal de fusion, vous pouvez faire le test suivant :
Sub TestDocPrincipal() If ActiveDocument.MailMerge.State = 2 Then MsgBox "Le document est un document principal de fusion !" End Sub

7.2. Ajout d'une source de donnes Valeur Nom Description Le document n'est pas inclus dans un processus de fusion et publipostage. Document de base sans donnes jointes. Si votre document n'est pas un document principal de fusion, vous devez si vous dsirez faire du publipostage lui adjoindre une source de donnes. La mthode pour l'ajout de donnes votre document est OpenDataSource. Ajout de donnes
Sub DocAjoutSource() ActiveDocument.MailMerge.OpenDataSource ..... End Sub

wdNormalDocument

wdMainDocumentOnly

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 24

7.2.1. Donnes SQL Server Pour ajouter des donnes d'une base SQL Server, vous devez utiliser le chemin du fichier se trouvant dans le rpertoire "Mes sources de donnes".

Donnes Excel
Sub DocAjoutSource() ActiveDocument.MailMerge.OpenDataSource Name:="C:\Documents and Settings\Olivier\Mes documents\Mes sources de donnes\adresses.xlsx" End Sub

Si par curiosit vous ouvrez ce fichier "*.ODC" l'aide du Bloc-note, vous verrez que vous tes en prsence d'un Avec les mmes manipulations, on peut vrifier que les fichier XML contenant des donnes et des scripts. donnes sont correctement lies au document. Donnes SQL Server
Sub DocAjoutSource() ActiveDocument.MailMerge.OpenDataSource ..... End Sub

7.3. Ajout d'un champ de donnes Si vous n'avez pas dfini de champ de sortie dans votre document, vous pouvez les insrer par le code. Quelle que soit la source choisie, la mthode pour insrer des champs reste la mme.

7.2.1. Donnes SQL Server

Pour ajouter des donnes d'une base SQL Server, vous Insertion d'un champ devez utiliser le chemin du fichier se trouvant dans le ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField, Text:="""Nom""" rpertoire "Mes source de donnes". Si par curiosit vous ouvrez ce fichier "*.ODC" l'aide du La mthode pour insrer les champs et le texte est assez Bloc-note, vous verrez que vous tes en prsence d'un simple, il suffit d'crire les lignes de code les unes sous les autres. fichier XML contenant des donnes et des scripts. Donnes SQL Server
Sub DocAjoutSource() ActiveDocument.MailMerge.OpenDataSource _ Name:="C:\Documents and Settings\UserName\Mes documents\Mes sources de donnes\OLIVIERPC_SQLEXPRESS DBSQL Table1.odc" End Sub

Insertion de champs et de texte


ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField, Text:="""Nom""" Selection.TypeText vbCrLf & " Je viens de mettre le nom " & vbCrLf ActiveDocument.Fields.Add Range:=Selection.Range, Type:=wdFieldMergeField, Text:="""Prnom"""

Aprs excution, vous pouvez vrifier que les donnes Vous avez aussi la possibilit d'insrer votre champ sur un sont "lies" au document dans l'onglet publipostage et le signet. bouton Modifier la liste des destinataires. Insrer sur signet
ActiveDocument.Fields.Add Range:=Bookmarks(1).Range, Type:=wdFieldMergeField, Text:="""Nom"""

7.4. L'excution 7.2.2. Donnes Access Il ne reste qu' excuter le publipostage. La mthode Execute va le faire et crer un nouveau document.

La mthode pour lier des donnes Access ne diffre pas de la mthode utilise pour des donnes SQL Server. Mais au Excution du publipostage lieu d'utiliser le fichier de connexion SQL Server, nous AcriveDocument.MailMerge.Execute allons utiliser le nom du fichier Access. 7.5. Destination du publipostage Donnes Access Le publipostage permet d'envoyer le ou les documents Sub DocAjoutSource() vers une destination. Cette destination peut tre un ActiveDocument.MailMerge.OpenDataSource _ nouveau document, une imprimante, un Email ou un FAX.
Name:="C:\Documents and Settings\Olivier\Mes documents\Mes sources de donnes\adresses.mdb" End Sub ActiveDocument.MailMerge.Destination = wdSendToNewDocument

La mme manipulation qu'au paragraphe 7-B-1, vous permettra de vrifier que les donnes sont lies au document. 7.2.3. Donnes Excel Une fois de plus, la mthode pour utiliser une source de donnes base sur un fichier Excel est la mme que pour les autres fichiers de donnes.

Paramtre wdSendToNewDocument

Destination Le publipostage va se faire vers un nouveau document Le rsultat du publipostage sera directement envoy sur l'imprimante

wdSendToPrinter

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 25

wdSendToEmail

Le rsultat sera un envoi par mail du document Le rsultat du publipostage sera envoy par FAX si un FAX est install sur le PC.

Dim DocName As String Dim oDS As MailMergeDataSource ' Affectation des objets Set oDoc = ActiveDocument Set oDS = oDoc.MailMerge.DataSource iR = MailMerge.DataSource.RecordCount Debug.Print iR For i = 1 To iR With oDoc.MailMerge 'Dfinition du premier et dernier enregistrement .DataSource.FirstRecord = i .DataSource.LastRecord = i ' Envoi des donnes dans un nouveau document .Destination = wdSendToNewDocument ' Excution du publipostage .Execute ' Actualisation de l'enregistrement pour la sauvegarde .DataSource.ActiveRecord = i 'Utilisation de deux champs pour obtenir le nom du document DocName = .DataSource.DataFields(2).Value DocName = DocName & "-" & .DataSource.DataFields(3).Value Debug.Print DocName; i End With ' Sauvegarde du document publipost With ActiveDocument .SaveAs "c:\temp\" & DocName & ".doc" .Close End With Next i End Sub

wdSendToFax

Si vous utilisez wdSendToEmail ou wdSendToFax , vous devez vous assurer que le champ contenant l'adresse Email ou le numro de fax est correctement renseign. 7.6. Code Complet Voil le code complet des paragraphes prcdents avec l'utilisation des signets. Code Complet avec signets
Sub DocPubliposte() ActiveDocument.MailMerge.OpenDataSource _ Name:="C:\Documents and Settings\Olivier\Mes documents\Mes sources de donnes\OLIVIERPC_SQLEXPRESS DBSQL Table1.odc" ActiveDocument.Fields.Add Range:=Bookmarks(1).Range, Type:=wdFieldMergeField, Text:="""Nom""" ActiveDocument.Fields.Add Range:=Bookmarks(2).Range, Type:=wdFieldMergeField, Text:="""Prnom""" ActiveDocument.MailMerge.Execute End Sub

Ce code s'il est utilis plusieurs fois la suite va insrer plusieurs fois les champs de publipostage. Il est donc prfrable de l'utiliser lors de la cration d'un document. Les diffrents Debug.Print utiliss dans le code servent Pour les utilisations ultrieures du document, il est "monitorer" le droulement de la procdure. prfrable de se contenter de l'Excution. 7.7. Enregistrement de chaque document Il arrive frquemment que l'on cherche enregistrer les documents issus du publipostage dans des fichiers spars. Les mthodes offertes par Word au travers de l'interface graphique ne permettent pas d'avoir un document par enregistrement ou ligne de donnes. La variable DocName va recevoir le nom de sauvegarde du document. Ce nom sera la concatnation de deux valeurs de champ, dans le code ci-dessus, nous utilisons la donne du deuxime et du troisime champ. DocName = .DataSource.DataFields(2).Value DocName = DocName & "-" & .DataSource.DataFields(3).Value

En excutant le publipostage par le code, vous pouvez Finalement, c'est ce morceau de code qui va enregistrer le enregistrer chaque document avec comme nom les document dans le rpertoire C:\temp\ donnes contenues dans votre base de donnes. Le principe est assez simple, on va rcuprer le nombre d'enregistrements contenus dans la source de donnes (iR) et dans une boucle, nous allons parcourir ces enregistrements les uns aprs les autres. For i = 1 To iR Pour utiliser un enregistrement prcis, nous allons utiliser i pour dfinir le premier et le dernier enregistrement de la srie, ce qui ne nous donnera qu'un seul enregistrement.
Sub TestPublipost() ' Dclaration des variables Dim iR As Integer Dim i As Integer Dim oDoc As Document With ActiveDocument .SaveAs "c:\temp\" & DocName & ".doc" .Close End With

8. Autre mthode VBA La mthode VBA que nous venons de voir utilise les fonctionnalits du Publipostage de Word. Il est possible d'obtenir un rsultat similaire sans utiliser la fonction Publipostage de Word. Nous allons aborder ce sujet dans ce chapitre. Nous allons aborder la connexion avec des donnes un SQL server, la connexion avec des donnes Access et
Numro HS 2 Hors srie spcial rentre Page 26

Developpez Magazine est une publication de developpez.com

terminer par la rcupration de donnes d'un classeur 8.2. Connexion une base de donnes Access Excel Vous devez ajouter la rfrence Microsoft DAO Object Library votre projet 8.1. Connexion un SQL Server Vous devez ajouter la rfrence Microsoft ActiveX Data Le principe pour accder aux donnes contenues dans une base de donnes Access est sensiblement le mme que Object votre projet. pour un Serveur SQL avec du ADO. Pour les raisons nonces un peu plus haut, j'ai utilis SQL Comme nous allons utiliser du DAO, je vais vous donner Server 2005 version Express. un lien sur l'utilisation du DAO. La premire chose connatre est le nom de votre serveur Dfinition et manipulation de donnes avec DAO : SQL. Dans l'exemple qui suit, c'est le nom par dfaut Lien 105 donn au serveur lors de son installation. Rcupration des donnes Access Le lien ci-dessous vous donne une vue d'ensemble sur le Sub ConnexionDBAccess() 'Dclaration des variables SQL Server 2005. Dim db As DAO.Database Prsentation de SQL Server 2005 : Lien 103 Si vous suivez le lien ci-dessous, vous trouverez un article sur l'utilisation de Recordset ADO. Comprendre les Recordset ADO : Lien 104 Le principe reste assez simple, il faut en premier lieu ouvrir une connexion vers le Serveur pour ensuite en extraire les donnes avec une commande SQL. Connexion un serveur SQL
Sub connexionSQL() Dim rs As ADODB.Recordset Dim stCon As ADODB.Connection Dim Utili As String Dim mdp As String Utili = "" mdp = "" 'Cration d'un objet ADO Set stCon = New ADODB.Connection 'Accs aux donnes With stCon .ConnectionString = "UID=" & Utili & ";PWD=" & mdp & ";" & "DRIVER={SQL Server};Server=" _ & "OLIVIERPC\SQLEXPRESS" & ";Database=" & "DBSQL" & ";" .Open End With 'Cration d'un objet Recordset (jeu d'enregistrements) Set rs = New ADODB.Recordset rs.Open "SELECT * FROM Table1", stCon 'Boucle pour parcourir les enregistrements et afficher leur contenu 'dans la fentre d'excution. While Not rs.EOF Debug.Print rs.Fields(2).Value rs.MoveNext Wend 'libration des objets stCon.Close set stCon = Nothing Set rs = Nothing End Sub Dim rs As DAO.Recordset Dim sql As String 'Affectation de la sentence SQL sql = "SELECT * From T_Adresses" 'Affectation des Objets d'access aux donnes Set db = DBEngine.OpenDatabase("C:\Documents and Settings\Olivier\Mes documents\Mes sources de donnes\DB_Publipostage.mdb") Set rs = db.OpenRecordset(sql) 'Boucle pour la rcupration des donnes While Not rs.EOF Debug.Print rs.Fields(2) rs.MoveNext Wend 'Libration des objets rs.Close db.Close Set rs = Nothing Set db = Nothing End Sub

Comme pour le paragraphe prcdent, vous devriez avoir une liste avec le contenu du troisime champ de votre table. 8.3. Rcupration de donnes d'une feuille Excel Vous devez ajouter la rfrence Microsoft Excel Object Library votre projet Compare aux deux mthodes prcdentes, la rcupration de donnes contenues dans un classeur Excel est un peu diffrente. Nous allons ouvrir le classeur, obtenir le nombre de lignes (iR) et le nombre de colonnes (iC) pour ensuite dans une double boucle rcuprer les donnes des cellules en fonction de leur adresse. Extraction des donnes d'une feuille Excel
Sub donneeAvecExcel() 'Dclaration des variables Dim xlApp As Excel.Application Dim xlWb As Excel.Workbook Dim xlSh As Excel.Worksheet Dim iR As Integer Dim iC As Integer Dim i As Integer, j As Integer

Si vous avez correctement utilis le code, vous devriez avoir une liste avec le contenu du troisime champ de votre table.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 27

'Affectation des donnes aux variables Set xlApp = New Excel.Application Set xlWb = xlApp.Workbooks.Open("C:\Documents and Settings\Olivier\Mes documents\Mes sources de donnes\adresses.xlsx") Set xlSh = xlWb.Worksheets(1) 'Rcupration du nombre de lignes et de colonnes iR = xlSh.UsedRange.Rows.Count iC = xlSh.UsedRange.Columns.Count 'Boucle pour adresser les cellules contenant des donnes 'en excluant la premire ligne qui contient les titres For i = 2 To iR For j = 1 To iC Debug.Print xlSh.Cells(i, j) Next j Next i

Dans les paragraphes prcdents, nous avons vu comment extraire les donnes. Nous allons aller un peu plus loin et traiter les donnes. Traitement des donnes
While Not rs.EOF 'Traitement des donnes rs.MoveNext Wend

Nous allons remplir cette boucle avec le traitement des donnes. Nous allons utiliser les champs pour les envoyer dans le document. Pour le code, je vais utiliser la connexion une base de donnes Access. Je suppose que pour chaque document, il faut utiliser le nom issu des donnes et la date au format "aa-mm-jj" comme nom de document Le code avec le transfert de donnes

xlWb.Close xlApp.Quit Set xlSh = Nothing Set xlWb = Nothing Set xlApp = Nothing

End Sub

8.4. Utilisation des donnes dans un document Maintenant que nous avons vu comment extraire des donnes, nous allons les utiliser. La manipulation reste la mme, que les donnes soient issues d'une base de donnes SQL Server, d'une base de donnes Access ou d'une feuille Excel. Le principe que nous allons mettre en uvre est relativement simple, les donnes rcupres seront envoyes vers des signets que nous aurons mis dans notre document. L'utilisation de signets est la plus souple, elle permet d'insrer les donnes des endroits prcis de notre document. Pour insrer des donnes sur un signet, c'est assez simple : Insertion de donnes sur un signet
ActiveDocument.Bookmarks(1).Range.Text = "La Donne"

Sub ConnexionDBAccess() 'Dclaration des variables Dim db As DAO.Database Dim rs As DAO.Recordset Dim oDoc As Document Dim sql As String 'Affectation de la sentence SQL sql = "SELECT * From T_Adresses" 'Affectation des Objets d'access aux donnes Set db = DBEngine.OpenDatabase("C:\Documents and Settings\Olivier\Mes documents\Mes sources de donnes\DB_Publipostage.mdb") Set rs = db.OpenRecordset(sql) 'Boucle pour la rcupration des donnes While Not rs.EOF 'Affectation d'un objet document la variable document Set oDoc = Documents.Add("C:\Documents and Settings\Olivier\Application Data\Microsoft\Templates\pub.dotm") 'Ecriture des donnes sur les signets oDoc.Bookmarks(1).Range.Text = rs.Fields(1) oDoc.Bookmarks(2).Range.Text = rs.Fields(2) oDoc.Bookmarks(3).Range.Text = rs.Fields(3) 'Sauvegarde du document oDoc.SaveAs "c:\temp\" & rs.Fields(1) & "-" & Format(Date, "yy-mm-dd") & ".docx" 'Libration de l'objet document oDoc.Close Set oDoc = Nothing rs.MoveNext Wend 'Libration des objets rs.Close db.Close Set rs = Nothing Set db = Nothing End Sub

Le principe est relativement simple, dans l'exemple que je viens de donner, la donne est fixe. Mais on peut utiliser une donne extraite :
ActiveDocument.Bookmarks(1).Range.Text = xlSh.Cells(i, j)

Voil pour l'insertion de donnes. 8.4.1. Cas simple

Nous allons distinguer le cas simple (un enregistrement Dans l'exemple ci-dessus, j'ai utilis les numros des par document : une lettre) du cas multiple (plusieurs champs et des signets par facilit, mais il est possible enregistrements par document : une facture) . Cet d'utiliser leur nom. enregistrement peut contenir le nom du fichier, son rpertoire de sauvegarde, etc. Pour les donnes, il suffit de les transfrer vers le document dans des signets.
Numro HS 2 Hors srie spcial rentre Page 28

Developpez Magazine est une publication de developpez.com

Le traitement avec une feuille Excel


Sub donneeAvecExcel() 'Dclaration des variables Dim xlApp As Excel.Application Dim xlWb As Excel.Workbook Dim xlSh As Excel.Worksheet Dim iR As Integer Dim i As Integer, j As Integer Dim oDoc As Document

Pour la rcupration des donnes, le principe reste identique, ce qui change, c'est le traitement des donnes. Dans cette partie nous allons simplement nous attarder sur le traitement des donnes et non plus sur leur rcupration. Pour chaque enregistrement ou ligne, nous allons vrifier si une des valeurs est identique la ligne prcdente on ajoute une ligne au document, si la valeur est diffrente, on cre un nouveau document et on ferme le prcdent. Vous l'aurez compris, nous allons utiliser des structures conditionnelles dans notre traitement. Voil un exemple de donnes IdFact 1 2 3 4 5 NoFacture 1 1 2 2 3 IdClient 1 1 1 1 2 Produit Ballon Filet Vlo Casque Ballon Qantit 10 1 1 1 5

'Affectation des donnes aux variables Set xlApp = New Excel.Application Set xlWb = xlApp.Workbooks.Open("C:\Documents and Settings\Olivier\Mes documents\Mes sources de donnes\adresses.xlsx") Set xlSh = xlWb.Worksheets(1) 'Rcupration du nombre de lignes et de colonnes iR = xlSh.UsedRange.Rows.Count ' Rcupration des donnes de la feuille pour les injecter dans le document. For i = 2 To iR Debug.Print xlSh.Cells(iR, 2); iR Set oDoc = Documents.Add("C:\Documents and Settings\Olivier\Application Data\Microsoft\Templates\pub.dotm") oDoc.Bookmarks(1).Range.Text = xlSh.Cells(i, 1) oDoc.Bookmarks(2).Range.Text = xlSh.Cells(i, 2) oDoc.Bookmarks(3).Range.Text = xlSh.Cells(i, 3) oDoc.SaveAs "c:\temp\" & xlSh.Cells(i, 2) & "-" & Format(Date, "yy-mm-dd") & ".docx" oDoc.Close Set oDoc = Nothing Next i xlWb.Close xlApp.Quit Set xlSh = Nothing Set xlWb = Nothing Set xlApp = Nothing End Sub

Crez un modle contenant des signets (au moins 3) et un tableau avec une ligne et deux colonnes. Dans notre traitement, nous allons comparer les numros de facture qui devraient tre le critre de regroupement.

Publipostage Multiple
Sub donneeAvecExcel() On Error GoTo GestErr 'Dclaration des variables Dim xlApp As Excel.Application Dim xlWb As Excel.Workbook Dim xlSh As Excel.Worksheet Dim iR As Integer Dim i As Integer, j As Integer Dim oDoc As Document Dim NoFact As Integer Dim oTbl As Table Dim stDocName As String

Dans le premier code utilis avec une feuille Excel, nous avons tenu compte du nombre de colonnes. Lors du publipostage, ce nombre de colonnes n'est plus utilis. Il bien videmment possible d'imprimer le document avant la sauvegarde. Pour l'impression
oDoc.SaveAs "c:\temp\" & xlSh.Cells(i, 2) & "-" & Format(Date, "yy-mm-dd") & ".docx" oDoc.PrintOut oDoc.Close

8.4.2. Cas Multiple Par cas multiple, je suppose plusieurs enregistrements ou lignes pour un mme document, comme pour une facture. On peut y arriver par les champs de fusion et de publipostage, mais avec certaines restrictions, on doit connatre le nombre maximum d'occurrences avant fusion. Il n'est pas possible d'insrer les donnes dans une table.

'Affectation des donnes aux variables Set xlApp = New Excel.Application Set xlWb = xlApp.Workbooks.Open("C:\Documents and Settings\Olivier\Mes documents\Mes sources de donnes\adresses.xlsx") Set xlSh = xlWb.Worksheets(2) 'Rcupration du nombre de lignes et de colonnes iR = xlSh.UsedRange.Rows.Count NoFact = 0

' Rcupration des des donnes de la feuille pour les injecter dans le document.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 29

For i = 2 To iR If NoFact <> xlSh.Cells(i, 2) Then stDocName = "c:\temp\" & xlSh.Cells(i, 2) & "-" & Format(Date, "yy-mm-dd") & ".docm" oDoc.Close Set oDoc = Documents.Add("C:\Documents and Settings\Olivier\Application Data\Microsoft\Templates\pub1.dotm") oDoc.Bookmarks(1).Range.Text = xlSh.Cells(i, 1) oDoc.Bookmarks(2).Range.Text = xlSh.Cells(i, 2) oDoc.Bookmarks(3).Range.Text = xlSh.Cells(i, 3) Set oTbl = oDoc.Tables(1) oTbl.Rows.Add oTbl.Rows.Last.Cells(1).Range.Text = xlSh.Cells(i, 4) oTbl.Rows.Last.Cells(2).Range.Text = xlSh.Cells(i, 5) Set oTbl = Nothing oDoc.SaveAs stDocName 'Affectation du nouveau numro de facture pour la comparaison NoFact = xlSh.Cells(i, 2) Else Set oTbl = oDoc.Tables(1) oTbl.Rows.Add oTbl.Rows.Last.Cells(1).Range.Text = xlSh.Cells(i, 4) oTbl.Rows.Last.Cells(2).Range.Text = xlSh.Cells(i, 5) Set oTbl = Nothing oDoc.Save End If Next i oDoc.Close Set oDoc = Nothing GestErr: 'Si pas de document ouvert on fait un resume next If Err.Number = 91 Then Resume Next Debug.Print "Erreur : " & Err.Number & Err.Description xlWb.Close xlApp.Quit Set xlSh = Nothing Set xlWb = Nothing Set xlApp = Nothing

En effet, si aucun objet n'est affect, alors une erreur 91 intervient. On en connait la raison, on peut donc continuer la procdure avec Resume Next.
Set oDoc = Documents.Add("C:\Documents and Settings\Olivier\Application Data\Microsoft\Templates\pub1.dotm") oDoc.Bookmarks(1).Range.Text = xlSh.Cells(i, 1) oDoc.Bookmarks(2).Range.Text = xlSh.Cells(i, 2) oDoc.Bookmarks(3).Range.Text = xlSh.Cells(i, 3)

Cette partie a dj t utilise plus tt !


Set oTbl = oDoc.Tables(1) oTbl.Rows.Add oTbl.Rows.Last.Cells(1).Range.Text = xlSh.Cells(i, 4) oTbl.Rows.Last.Cells(2).Range.Text = xlSh.Cells(i, 5) Set oTbl = Nothing

Dans ce petit morceau, on affecte la variable Table le premier tableau du document. Nous allons ajouter une ligne cette table et remplir cette ligne avec certaines donnes.
Else Set oTbl = oDoc.Tables(1) oTbl.Rows.Add oTbl.Rows.Last.Cells(1).Range.Text = xlSh.Cells(i, 4) oTbl.Rows.Last.Cells(2).Range.Text = xlSh.Cells(i, 5) Set oTbl = Nothing oDoc.Save End If

Le code est utilis deux fois, la seconde est utilise pour n'ajouter des donnes qu' la table et plus dans le corps du document. Pour les fichiers ci-dessous, il suffit de mettre tous les fichiers dans le mme rpertoire. La macro est contenue dans le fichier "DocumentPrincipal". Tlchargez des fichiers exemples : Lien 106 9. Liens Le lien suivant vous conduit vers un tutoriel sur le publipostage, mais au lieu d'utiliser Word, on utilise Access : Lien 107 Un tutoriel sur le publipostage avec Excel : Lien 108 L'utilisation du DAO : Dfinition et manipulation de donnes avec DAO (Lien 109)

End Sub

Si nous dtaillons un peu le code.


oDoc.Close

On ferme le document, si aucun document n'est affect la variable oDoc, on dclenche une erreur. Cette erreur est L'utilisation de l'ADO : Lien 110 gre par :
On Error GoTo GestErr

10. Conclusion Nous venons d'aborder quelques mthodes utilises pour le publipostage sous Word. J'espre que vous pourrez y trouver une solution qui vous convient. Retrouvez l'article d'Olivier Lebeau en ligne : Lien 111

et par :
GestErr: 'Si pas de document ouvert on fait un resume next If Err.Number = 91 Then Resume Next

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 30

PowerPoint
Tutoriels et articles
Grer la navigation dans un diaporama PowerPoint Cet article a pour but de vous montrer comment grer la navigation dans un diaporama PowerPoint.
1. INTRODUCTION Affichez le volet Office (Menu Affichage/Volet Office). Le but de cet article est de vous montrer comment on peut Slectionnez transition. naviguer entre les diapositives dans PowerPoint. Vous trouverez en bas de celui-ci l'image suivante : Nous pouvons distinguer deux types de navigations : la navigation linaire : on commence par la premire diapositive, et on finit par la dernire ; une navigation non linaire : l'ensemble des diapositives est compos en bloc et on passe d'un bloc l'autre. Le schma ci-dessous illustre cela. Manuellement : si cette case est coche, cela indique que la transition entre les diapositives se fera manuellement, sinon, il faudra grer le passage d'une diapositive l'autre. Automatiquement aprs : permet de dterminer une temporisation entre chaque diapositive. Appliquer toutes les diapositives : cela vous permet d'affecter le choix l'ensemble de votre diaporama ou non. Grer la navigation dans un diaporama PowerPoint

Dans la suite de cet article nous allons dcocher la case Manuellement, car nous voulons grer nous mme le passage d'une diapositive l'autre. PowerPoint 2007 Pour PowerPoint 2007, allez dans le menu animation pour voir apparatre le ruban animation, vous trouverez dans Par dfaut, la transition d'une diapositive l'autre se fait celui-ci les mmes paramtrages. lors du clic sur le bouton de la souris. 2. NAVIGATION AUTOMATIQUE Cependant, cette mthode a pour inconvnients : il faut que toutes les animations de la diapositive se soient droules pour le passage la diapositive suivante ; votre diaporama est linaire et vous ne pouvez imposer le passage vers une diapositive qui ne se trouve pas dans la suite logique ; l'inconvnient galement d'une navigation automatique est que le timing entre les slides (diapositives) doit tre impeccable, le lecteur doit avoir suffisamment de temps pour lire les infos mais le slide ne doit pas tre trop long non plus. 2.1. Paramtrage manuel Le paramtrage par dfaut est heureusement modifiable.

2.2. Paramtrage par le code Il est possible de programmer l'annulation de la transition manuelle entre les diapositives. Le code suivant permet de dsactiver la transition manuelle dans un diaporama. VBA
Dim sld As Slide For Each sld In ActivePresentation.Slides sld.SlideShowTransition.AdvanceOnClick = msoFalse Next sld

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 31

3. LES BOUTONS D'ACTION Les boutons d'action sont des boutons prdfinis qui vont vous permettre de grer la navigation entre vos diapositives. Ceux-ci se trouvent dans la barre d'outils dessin sous PPT 2002 et 2003.

Excuter la macro : va vous permettre d'excuter une macro VBA. Action Ole : n'est pas utilise pour les boutons d'action. Activer un son : va vous permettre de lancer un son lors d'une action sur le bouton (le son doit d'abord tre insr dans la diapositive pour apparatre dans la liste).

Vous pourrez ouvrir cette fentre tout moment en effectuant un clic droit sur la souris (menu contextuel) et en slectionnant Paramtres des Actions. Le tableau suivant vous prsentera les 12 boutons d'action. Bouton d'Action Image Description Ce bouton va vous permettre de personnaliser une action grce la fentre de paramtrage des actions. Ce bouton ne comportant pas d'icne, il est possible d'crire du texte l'intrieur, pour cela afficher le menu contextuel (clic droit), et slectionnez Modifier Texte. Pour que le texte s'adapte au bouton ou l'inverse, dans le menu contextuel slectionnez Format de la Zone automatique, allez dans l'onglet Zone de texte, et slectionnez ce que vous souhaitez (renvoie la ligne, ajustement). Ce bouton prparamtr permet le retour la premire diapositive de votre diaporama Ce bouton n'a aucune action prdfinie, il peut vous permettre d'afficher une aide (lancement d'un UserForm par Macro par exemple). Ce bouton n'a aucune action prdfinie, il peut vous permettre d'afficher une information (lancement d'un UserForm par Macro par exemple). Ce bouton prparamtr permet de revenir sur la diapositive prcdente.

Vous pouvez galement Diaporama/Boutons d'action. Sous PPT 2007 :

utiliser

le

menu

Activer le menu Insertion, dans le ruban slectionner Formes, et ceux-ci se trouvent en bas de la liste droulante. 3.1. Dtail des boutons d'action PowerPoint donne la possibilit d'utiliser 12 boutons d'actions. Lorsque vous positionnez un bouton d'action sur une diapositive une fentre de paramtrage s'ouvre. Bouton Personnalis

Bouton Accueil

Bouton Aide Cette fentre va vous permettre de paramtrer l'action du bouton, cependant, certains sont dj prparamtrs. Il peut y avoir deux types d'actions : sur le clic du bouton ou sur le survol par le curseur de la souris (vous trouverez le mme type d'action pour ces deux vnements). Aucune : aucune action ne sera effectue Crer un lien hypertexte vers : vous permettra de crer un lien hypertexte vers une autre diapositive ou une url. (Pour certains boutons d'action, cette proprit est dfinie par dfaut.) Excuter le programme : va vous permettre de lancer un programme (.exe). Bouton Information

Bouton Prcdent

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 32

diapositive. Bouton Suivant Ce bouton prparamtr permet de passer la diapositive suivante. Ce bouton prparamtr permet de revenir la premire diapositive. Il a le mme effet que le bouton Accueil. Ce bouton prparamtr permet d'aller la dernire diapositive. Ce bouton prparamtr permet de revenir la dernire diapositive affiche. Ne pas confondre avec le bouton prcdent, qui revient la diapositive qui se trouve dans l'ordre du diaporama. Ce bouton n'est pas prparamtr, utilisez-le pour lancer un programme ou visualiser un autre document. Ce bouton est prparamtr, pour vous permettre de lancer un son. Une liste de sons prdfinis apparat, mais vous pouvez toujours en jouer d'autres (allez en bas de la liste droulante). Ce bouton n'est pas prparamtr, utilisez-le pour lancer une vido.

Bouton Dbut

Ensuite positionnez vos trois boutons d'action. Renommez le masque PageNormal l'aide du cinquime bouton de la barre d'outils . Puis cliquez sur Conserver le masque et ensuite cliquez sur Dsactiver le mode Masque.

Bouton Fin

Bouton Retour

Bouton Document

Toutes vos diapositives comporteront maintenant vos trois boutons d'action. Cependant, l'inconvnient de cette mthode est que la premire diapositive comporte les boutons Prcdent et Accueil. Nous allons voir comment modifier cela. Repassez en mode diapositive. Slectionnez la diapositive dans le volet Office. Slectionnez Ajouter une prsentation.

Bouton Son

Bouton Video

3.2. Affecter les boutons d'action toutes les diapositives

Vous verrez alors une deuxime prsentation identique la Si vous avez plusieurs diapositives et que vous voulez premire s'afficher la droite de celle-ci. Slectionnez-la. ajouter celles-ci les boutons "Suivant", "Prcdent" et "Accueil", cela devient fastidieux de le faire pour chaque Passez en mode masque de diapositive. diapositive. Enlevez les boutons Prcdent et Accueil. Nous allons voir diffrentes manires de raliser Puis renommez-la en PremirePage, et dsactivez le mode simplement cette opration. masque. 3.2.1. Manuellement Mais vous verrez que toutes les diapositives ont pris le Il est donc possible d'affecter manuellement nos boutons nouveau masque. d'action chaque diapositive. Pour rtablir l'ensemble : Slectionnez le premier masque et cliquez sur Pour effectuer cette opration nous allons utiliser un Appliquer toutes les diapositives. masque de diapositive. Slectionnez la premire diapositive, allez dans le dernier masque (PremirePage) et slectionnez Allez dans le menu Affichage/Masque/Masque de
Numro HS 2 Hors srie spcial rentre Page 33

Developpez Magazine est une publication de developpez.com

Appliquer aux diapositives slectionnes. Vous avez maintenant la premire diapositive avec le bouton Suivant, et les autres avec tous les boutons. De la mme manire vous pouvez faire le masque de la dernire diapositive. 3.2.2. Par programmation L'ajout de boutons d'action peut galement tre fait grce du code VBA, nous allons donc crer nos boutons par programmation et les positionner. Dans un module, on positionne en entte la dclaration des variables : VBA
' ===== variables du module ===== Dim sld As Slide Dim i As Integer Dim shp As Shape Dim intTopBtn As Integer ' dtermine la position des boutons par rapport la hauteur Dim intHeightBtn As Integer ' dtermine la hauteur de nos boutons Dim intWidthBtn As Integer ' dtermine la largeur de nos boutons

' Auteur : Starec - Philippe JOCHMANS http://starec.developpez.com ' Description : Cette procdure cre le bouton prcdent '============================================ ' ===== variables ===== Dim intLeft As Integer ' position du bouton par rapport au bord gauche intLeft = (ActivePresentation.PageSetup.SlideWidth / 2) (intWidthBtn / 2) ' ajout du bouton et positionnement Set shp = sld.Shapes.AddShape(msoShapeActionButtonHome, intLeft, intTopBtn, intWidthBtn, intHeightBtn) ' action du bouton, et mise en place de la couleur With shp .ActionSettings(ppMouseClick).Action = ppActionFirstSlide .Fill.ForeColor.RGB = RGB(200, 180, 250) .Name = "Accueil" End With End Sub Public Sub BtnSuivant() ' =========================================== ' Procedure : Module :mod_BoutonAction // Procdure : BtnSuivant ' DateTime : 07/03/2008 05:06 ' Auteur : Starec - Philippe JOCHMANS http://starec.developpez.com ' Description : Cette procdure cre le bouton prcdent '============================================ ' ===== variables ===== Dim intLeft As Integer ' position du bouton par rapport au bord gauche intLeft = (ActivePresentation.PageSetup.SlideWidth / 2) + (intWidthBtn / 2) ' ajout du bouton et positionnement Set shp = sld.Shapes.AddShape(msoShapeActionButtonForwardor Next, intLeft, intTopBtn, intWidthBtn, intHeightBtn) ' action du bouton, et mise en place de la couleur With shp .ActionSettings(ppMouseClick).Action = ppActionNextSlide .Fill.ForeColor.RGB = RGB(200, 180, 250) .Name = "Suivant" End With End Sub

Puis toujours dans ce module on positionne les routines suivantes : VBA


Public Sub BtnPrecedent() ' =========================================== ' Procedure : Module :mod_BoutonAction // Procdure : BtnPrecedent ' DateTime : 07/03/2008 05:06 ' Auteur : Starec - Philippe JOCHMANS http://starec.developpez.com ' Description : Cette procdure cre le bouton prcdent '============================================ ' ===== variables ===== Dim intLeft As Integer ' position du bouton par rapport au bord gauche intLeft = (ActivePresentation.PageSetup.SlideWidth / 2) (intWidthBtn * 1.5) ' ajout du bouton et positionnement Set shp = sld.Shapes.AddShape(msoShapeActionButtonBackorPre vious, intLeft, intTopBtn, intWidthBtn, intHeightBtn) ' action du bouton, et mise en place de la couleur With shp .ActionSettings(ppMouseClick).Action = ppActionPreviousSlide .Fill.ForeColor.RGB = RGB(200, 180, 250) .Name = "Precedent" End With End Sub Public Sub BtnAccueil() ' =========================================== ' Procedure : Module :mod_BoutonAction // Procdure : BtnAccueil ' DateTime : 07/03/2008 05:06

Ces trois procdures ont la mme structure : on cre un bouton avec la mthode AddShapes, on dtermine le type de bouton d'action, on le positionne ; ensuite on dtermine l'action du bouton, sa couleur, et son nom. Pour lancer la cration de ceux-ci dans l'ensemble du diaporama on ajoute cette procdure :
Numro HS 2 Hors srie spcial rentre Page 34

Developpez Magazine est une publication de developpez.com

VBA
Public Sub AjoutBoutonAction() ' =========================================== ' Procedure : Module :mod_BoutonAction // Procdure : AjoutBoutonAction ' DateTime : 05/03/2008 05:45 ' Auteur : Starec - Philippe JOCHMANS http://starec.developpez.com ' Description : Cette procdure va permettre d'ajouter des boutons d'action notre ' diaporama '============================================ ' ===== affectation ===== ' on rcupre le nombre de slides (diapositives) i = ActivePresentation.Slides.Count ' pour positionner le haut de nos boutons intTopBtn = ActivePresentation.PageSetup.SlideHeight - 100 ' dimensions des boutons intHeightBtn = 50 intWidthBtn = 50 For Each sld In ActivePresentation.Slides Select Case sld.SlideIndex Case 1 ' on est sur la premire diapositive Call BtnSuivant Case i ' on est sur la dernire diapositive Call BtnPrecedent Call BtnAccueil Case Else ' on est sur les autres diapositives Call BtnPrecedent Call BtnAccueil Call BtnSuivant End Select Next sld End Sub

Dim shp As Shape Dim i As Integer For i = 1 To 3 For Each sld In ActivePresentation.Slides For Each shp In sld.Shapes If shp.Name = "Precedent" Or shp.Name = "Accueil" Or shp.Name = "Suivant" Then shp.Delete End If Next shp Next sld Next i End Sub

Excutez-la, tous vous boutons seront supprims, ensuite relancez la routine de cration des boutons. Votre diaporama est maintenant nouveau oprationnel. N'oubliez pas de dcocher la case de parcours manuel (voir plus haut), ou d'inclure dans la cration de vos boutons le code qui permet d'effectuer cette opration. Toutes ces procdures ne sont valables que lors d'un parcours linaire de votre diaporama. 3.3. Formatage des boutons d'action Il n'est pas possible de modifier l'icne des boutons d'action.

Vous pouvez cependant : modifier la couleur comme n'importe quelle forme grce la barre d'outils dessin ou par l'intermdiaire du menu contextuel en slectionnant Format de la zone automatique ; ajouter du texte, mais l'icne se trouvera toujours centre, rserver au bouton personnalis ; modifier la profondeur du bouton en agissant sur le losange jaune qui apparat lorsque vous avez slectionn le bouton (l'icne sera redimensionne en consquence). Le principe est simple, on parcourt la liste des slides, et selon le cas on ajoute les boutons adquats. 4. LES IMAGES ET LES FORMES Positionnez-vous sur cette procdure et appuyez sur la la place des boutons d'action vous pouvez crer voustouche F5, vos diapositives possdent dornavant des mme vos propres boutons de navigation l'aide d'images boutons de navigation. ou de formes. Si vous devez ajouter une diapositive votre diaporama, il Nous allons tudier le cas des formes, en sachant que pour va donc falloir supprimer tous les boutons pour les recrer les images le fonctionnement est similaire. par la suite. Pour cela, positionnez cette routine dans votre module. VBA
Public Sub SupBoutonAction() ' =========================================== ' Procedure : Module :mod_BoutonAction // Procdure : SupBoutonAction ' DateTime : 05/03/2008 06:16 ' Auteur : Starec - Philippe JOCHMANS http://starec.developpez.com ' Description : Cette procdure va permettre de supprimer les boutons d'action '============================================ ' ===== dclaration ===== Dim sld As Slide

4.1. Manuellement Le positionnement manuel est similaire au positionnement des boutons d'action, avec l'utilisation des masques de diapositives. 4.1.1. Cration des formes Nous allons juste voir comment crer nos formes par un exemple. Cration des flches : Vous pouvez utilisez n'importe quel type de forme, mais graphiquement le plus parlant ce sont des flches.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 35

Vous trouverez ci-dessous la procdure pour crer une cration de la forme par d'autres paramtres. flche : Dclaration des variables : VBA
' ===== variables du module ===== Dim sld As Slide Dim i As Integer Dim shp As Shape Dim intTopBtn As Integer ' dtermine la position des boutons par rapport la hauteur Dim intHeightBtn As Integer ' dtermine la hauteur de nos boutons Dim intWidthBtn As Integer ' dtermine la largeur de nos boutons

Vous pourrez bien sr formater celle-ci votre got.

Pour ajouter du texte celle-ci, faites un clic droit sur la flche pour visualiser le menu contextuel et slectionnez Ajout des Formes : Ajouter Texte. Effectuez la mme opration pour la flche de retour, et vous pouvez utiliser une autre forme pour l'accueil. 4.1.2. Les actions sur les formes Contrairement aux boutons d'action, les formes ne sont pas prparamtres, il vous appartient donc de raliser cette opration. Pour cela, faites un clic droit sur la forme pour faire apparatre le menu contextuel, et slectionnez Paramtres des actions. Vous arrivez sur l'onglet "Cliquer avec la souris", slectionner Crer un lien hypertexte vers, et vous aurez une liste vous donnant plusieurs choix. Il ne vous reste plus qu' faire votre choix, et de cliquer sur OK en bas de la fentre. Effectuez le paramtrage pour chacun de vos boutons.

Public Sub AjoutFormes() ' =========================================== ' Procedure : Module :mod_BoutonForm // Procdure : AjoutFormes ' DateTime : 08/03/2008 07:44 ' Auteur : Starec - Philippe JOCHMANS http://starec.developpez.com ' Description : Cette routine va permettre d'ajouter les flches "suivantes" et "prcdentes" '============================================

' ===== affectation ===== ' on rcupre le nombre de slides (diapositives) i = ActivePresentation.Slides.Count ' pour positionner le haut de nos boutons intTopBtn = ActivePresentation.PageSetup.SlideHeight - 100 ' dimensions des flches intHeightBtn = 50 intWidthBtn = 100 For Each sld In ActivePresentation.Slides Select Case sld.SlideIndex Case 1 ' on est sur la premire diapositive Call FlecheSuivante Case i ' on est sur la dernire diapositive Call FlechePrecedente Case Else ' on est sur les autres diapositives Call FlechePrecedente Call FlecheSuivante End Select Next sld End Sub

Cration des deux flches : En utilisant la mthode voque sur les masques de diapositives, vous pourrez crer un masque pour chaque VBA Public Sub FlechePrecedente() type. La manipulation pour affecter l'action doit se faire lorsque vous tes en mode masque pour que celle-ci soit oprationnelle. 4.2. Par programmation Le principe sera exactement le mme que pour la cration des boutons d'action. La seule diffrence concernera la
' =========================================== ' Procedure : Module :mod_BoutonForm // Procdure : FlechePrecedente ' DateTime : 08/03/2008 07:46 ' Auteur : Starec - Philippe JOCHMANS http://starec.developpez.com ' Description : Cette procdure va permettre la cration de la flche prcdente '============================================

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 36

Suppression des flches :


' ===== variables ===== Dim intLeft As Integer ' position du bouton par rapport au bord gauche intLeft = (ActivePresentation.PageSetup.SlideWidth / 2) (intWidthBtn * 1.5) ' ajout du bouton et positionnement Set shp = sld.Shapes.AddShape(msoShapeLeftArrow, intLeft, intTopBtn, intWidthBtn, intHeightBtn) ' action du bouton, et mise en place de la couleur With shp .ActionSettings(ppMouseClick).Action = ppActionPreviousSlide .Fill.ForeColor.RGB = RGB(200, 180, 250) .Name = "Prcdente" End With ' mise en place du texte With shp.TextFrame.TextRange .Text = "Prcdente" .Font.Name = "Tahoma" .Font.Size = 12 .Font.Bold = msoTrue End With End Sub

VBA
Public Sub SupFleche() ' =========================================== ' Procedure : Module :mod_BoutonForm // Procdure : SupFleche ' DateTime : 08/03/2008 07:57 ' Auteur : Starec - Philippe JOCHMANS http://starec.developpez.com ' Description : Suppression des flches '============================================ ' ===== dclaration ===== Dim sld As Slide Dim shp As Shape Dim i As Integer For i = 1 To 2 For Each sld In ActivePresentation.Slides For Each shp In sld.Shapes If shp.Name = "Prcdente" Or shp.Name = "Suivante" Then shp.Delete End If Next shp Next sld Next i End Sub

Public Sub FlecheSuivante() ' =========================================== ' Procedure : Module :mod_BoutonForm // Procdure : FlecheSuivante ' DateTime : 08/03/2008 07:46 ' Auteur : Starec - Philippe JOCHMANS http://starec.developpez.com ' Description : Cette procdure va permettre la cration de la flche Suivante '============================================

Comme vous le voyez, le fonctionnement est similaire, les diffrences interviennent dans le type de Shape que l'on rajoute, et le texte. Vous aurez alors cela :

' ===== variables ===== Dim intLeft As Integer ' position du bouton par rapport au bord gauche intLeft = (ActivePresentation.PageSetup.SlideWidth / 2) + (intWidthBtn * 0.5) ' ajout du bouton et positionnement Set shp = sld.Shapes.AddShape(msoShapeRightArrow, intLeft, intTopBtn, intWidthBtn, intHeightBtn) ' action du bouton, et mise en place de la couleur With shp .ActionSettings(ppMouseClick).Action = ppActionNextSlide .Fill.ForeColor.RGB = RGB(200, 180, 250) .Name = "Suivante" End With ' mise en place du texte With shp.TextFrame.TextRange .Text = "Suivante" .Font.Name = "Tahoma" .Font.Size = 12 .Font.Bold = msoTrue End With End Sub

N'hsitez pas consulter l'explorateur d'objet (F2) et l'aide (F1), vous y trouverez tous les paramtres. Ces deux touches doivent tre les plus uses de votre clavier. 4.3. Cas particulier des images Le principe avec des images est exactement le mme, sauf que lorsque vous voulez ajouter une image, il vous faut utiliser la mthode AddPicture de la collection Shapes. 5. LES LIENS HYPERTEXTES Il est possible de naviguer grce des liens hypertextes (autres que ceux sur les boutons d'action). Les liens hypertextes vont vous permettre d'effectuer une action non linaire, comme on le voit sur le premier schma de cet article. Vous en trouverez un exemple et la manire de procder dans cet article : Les listes puces et numrotes dans PowerPoint (Lien 112). Les liens hypertextes sur la deuxime diapositive (la premire servant en gnral de page d'accueil), coupls avec les mthodes ci-dessus affectes un bloc de diapositives permettent de raliser des transitions non linaires facilement.
Numro HS 2 Hors srie spcial rentre Page 37

Developpez Magazine est une publication de developpez.com

6. CONCLUSION

Pensez que les personnes qui utiliseront vos diaporamas ne sont peut-tre pas habitues les manipuler. Le fait de En conclusion, lorsque vous voulez grer vous-mme la mettre des indications comme des flches ou autres navigation dans vos diaporamas, il faut rester logique. facilitera grandement l'utilisation de vos diaporamas, de Navigation linaire : choisissez les boutons plus chaque lecteur ne lit pas de la mme faon et n'a pas d'action qui sont prdfinis ou les formes. la mme vitesse de lecture. Navigation non linaire : vous pouvez raliser une application non linaire grce aux liens hypertextes qui vous permettront de naviguer comme dans une table des matires d'un Retrouvez l'article de Philippe Jochmans en ligne : document Word. Lien 113

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 38

Excel
Tutoriels et articles
Prsentation de Microsoft Office - Excel 2007 Cette page prsente l'application Microsoft Office Excel 2007.
1. Introduction important pour tre prsent ici de faon dtaille et exhaustive. D'autres articles suivront pour approfondir les Excel 2007 fait partie de la suite bureautique et base de diffrents thmes. donnes intgre Microsoft Office 2007. Cet outil puissant permet la cration, la mise en forme des 2. Gnralits feuilles de calcul ainsi que l'analyse et le partage des informations. 2.1. Le format openXML Vous pouvez ainsi : * stocker, manipuler et mettre en forme les donnes Microsoft Excel 2007 introduit un nouveau format de fichier appel OpenXML (XML ouvert Office). ncessaires vos calculs ; * trier et filtrer vos donnes afin de les analyser ; * utiliser la mise en forme conditionnelle pour Ce nouveau format : * amliore l'interaction et l'utilisation par d'autres visualiser rapidement certaines informations ; applications ; * utiliser une large panoplie de fonctions pour la * facilite l'intgration aux sources de donnes externes ; cration de formules complexes ; * rduit la taille des fichiers (technologie de * crer des tableaux et graphiques croiss dynamiques ; compression zip utilise pour stocker les documents) ; * crer des graphiques pour faire ressortir les * amliore la rcupration des contenus pour les principales tendances de vos donnes ; fichiers endommags. * consulter et manipuler les donnes dans un navigateur Web ; * convertir les feuilles de calcul au format PDF et L'extension propose par dfaut lors de l'enregistrement d'un classeur est le type .xlsx. XPS ; * partager et changer vos rsultats grce aux outils de Les autres extensions XML sont : partage. * classeur autorisant les macros (.xlsm) ; * modle par dfaut (.xltx) ; Depuis son apparition dans le milieu des annes 80, le * modle autorisant les macros (.xltm) ; tableur Microsoft a subi de nombreuses modifications. * macro complmentaire (.xlam) ; Les volutions n'ont pas toujours t majeures, loin de l, * le dernier format .xlsb, est une version binaire non mais les ajouts, amliorations et liftings successifs en ont XML. fait l'outil indispensable pour les calculs, la mise en oeuvre de fonctions complexes et l'analyse de donnes. Historique des versions Excel. * 1: 1985, sortie de la version 1 pour Macintosh. * 2: 1987, sortie de la premire version pour Windows * 3: 1990. * 4: 1992. * 5: 1993, arrive des classeurs multifeuilles et du VBA. * 7: 1995, (Excel95) mise en place du Portage 32 bits. * 8: 1997, (Excel97) nouvelle interface VBA, et apparition des UserForms. * 9: 1999, (Excel2000). * 10: 2001, (Excel2002 ou XP), mise en place de l'outil de rcupration automatique des classeurs. * 11: 2003, (Excel2003), possibilit de mapper les fichiers XML dans les classeurs. * 12: 2007, (Excel2007) de nombreuses nouveauts et volutions majeures qui vont tre dcrites dans cette page. La lettre x en fin d'extension signifie que le fichier ne contient aucune macro. La lettre m signifie que le fichier contient des macros. Si vous enregistrez et fermez votre classeur au format .xlsx alors qu'il contenait des macros, celles-ci seront perdues. Pour plus d'informations, lisez les articles d'Olivier Lebeau et Eric Grimois : Le XML dans Microsoft Office : Lien 114 ; Structure des fichiers OpenXML : Lien 115. Vous pouvez consulter les normes et les conventions de ce standard sur le site ECMA : Lien 116. 2.2. Les limites d'Excel Prsentation de Microsoft Office - Excel 2007

Ce chapitre reprend simplement quelques points pour mettre en avant l'volution importante par rapport aux Cet article propose un simple aperu des fonctionnalits anciennes versions d'Excel. d'Excel 2007, l'ensemble des nouveauts tant trop Pour plus de prcisions, utilisez l'aide Office et saisissez le
Numro HS 2 Hors srie spcial rentre Page 39

Developpez Magazine est une publication de developpez.com

mot cl limite. * Taille des feuilles de calcul : 1 048 576 lignes et 16 384 colonnes. * Nombre maximal de caractres qu'une cellule peut contenir : 32 767. * Nombre maximal de couleurs par classeur : 16 millions de couleurs (32 bits avec accs complet au spectre de couleurs 24 bits). * Nombre maximal de formats/styles de cellule uniques : 64 000. * niveau de tri : 64 pour un tri simple, illimit lors de l'utilisation de tris squentiels. * Longueur du contenu des formules : 8 192 caractres. * Niveaux de fonctions imbriqus : 64. * Points de donnes pour toutes les sries de donnes d'un graphique : 256 000. * Nombre maximal de points de donnes par srie de donnes dans les graphiques 2D : 32 000. * Points de donnes par srie de donnes pour les graphiques 3-D : 4 000. * Nombre maximal d'utilisateurs pouvant ouvrir et partager un classeur partag en mme temps : 256.

compatibilit descendante. Pour lancer la procdure de vrification : cliquez sur le bouton Office ; slectionnez le menu Prparer ; cliquez sur le bouton Activer le vrificateur de compatibilit ; une bote de dialogue va afficher tous les lments incompatibles, ainsi que des liens d'aide et de correction. Si vous utilisez une ancienne version d'Excel, vous pouvez lire, modifier et enregistrer les classeurs aux nouveaux formats Microsoft Office 2007 grce au pack de compatibilit pour Microsoft Office 2000, Office XP ou Office 2003. Tlchargez le pack de compatibilit : Lien 118. Comment ouvrir et enregistrer des Excel 2007 dans des versions antrieures d'Office : Lien 119. 2.5. La correction orthographique

Le vrificateur orthographique est commun entre les diffrentes applications Office. Lorsque vous 2.3. Enregistrer et exporter aux formats pdf et xps personnalisez une option de correction dans Excel, la Il existe un complment pour enregistrer facilement vos modification sera aussi prise en compte dans Word, fichiers aux formats PDF (Portable Document Format) et Outlook, PowerPoint et dans Publisher. XPS (XML Paper Specification). Le mode franais bnficie de trois options: Cliquez sur ce lien pour tlcharger et activer la prise en * Orthographe traditionnelle et rectifie. charge de ces formats : Lien 117. * Orthographe traditionnelle. Ces types de fichiers seront ensuite disponibles * Orthographe rectifie. directement dans le sous-menu Enregistrer sous. Pour accder la fentre de gestion des corrections : Des options permettent de sauvegarder le classeur entier, cliquez sur le bouton Office ; les feuilles slectionnes, les pages spcifies ou cliquez sur le bouton Options Excel ; seulement une plage de cellules. slectionnez le menu Vrification. Cliquez sur le bouton Publier pour enregistrer. Ou, depuis l'onglet Rvision dans le ruban, cliquez sur le bouton Orthographe puis sur le bouton Options. 3. Le bouton Office et le ruban Dans Excel 2007, la barre de menus est remplace par des onglets et un ruban qui rassemble toutes les fonctionnalits disponibles dans l'application.

2.4. Compatibilit avec les versions antrieures d'Excel Le menu de vrification est un point important dans Excel 2007 car il liste toutes les fonctionnalits risquant d'tre perdues ou dgrades si le classeur est enregistr dans une version d'Excel antrieure. Par exemple, si vous sauvegardez votre classeur dans une ancienne version d'Excel, les donnes aprs la 65536e ligne et de la 256e colonne ne seront pas prises en compte. De la mme manire, les formules qui font rfrence des cellules au-del de cette limite poseront aussi un problme. Cette nouvelle prsentation sera peut-tre droutante pour les possesseurs d'anciennes versions d'Excel. L'adaptation se fait toutefois rapidement. Passez un peu de temps reprer dans quels onglets sont ranges vos anciennes barres d'outils et familiarisez-vous avec la logique de l'application : les fonctionnalits sont regroupes par thme.

Microsoft met disposition un support pour faciliter la Une fois les points de diffrence identifis, vous pourrez prise en main du ruban : apporter les modifications ncessaires une meilleure Le guide de rfrence des commandes d'Excel 2003 et
Numro HS 2 Hors srie spcial rentre Page 40

Developpez Magazine est une publication de developpez.com

Excel 2007 : Lien 120. groupe lors du travail collaboratif. Cliquez sur le lien Dmarrer le guide pour visualiser la prsentation Flash. En slectionnant les images de la barre * le bouton Chiffrement protge le classeur par un mot d'outils Excel 2003, l'quivalence Excel 2007 s'affiche de passe. l'cran. * le bouton Signature numrique garantit Sinon, pour gagner du temps, vous pouvez toujours utiliser l'authentification et l'intgrit des classeurs. les classiques raccourcis clavier afin d'atteindre vos menus. * le bouton Marquer comme final permet de spcifier Enfin, des infobulles dtailles dcrivent les la proprit Etat du classeur comme Final. fonctionnalits lorsque vous passez le curseur de la souris Le fichier est alors uniquement accessible en lecture sur les menus et les lments de l'application. Cela vous seule. aidera vous reprer dans ce nouvel environnement. * le bouton Activer le vrificateur de compatibilit est une option est importante car elle liste toutes les 3.1. Le bouton Office fonctionnalits risquant d'tre perdues ou dgrades si le Le bouton Office remplace le menu Fichier. Ce bouton est classeur est enregistr dans une version d'Excel antrieure. constitu d'un menu et d'une barre d'accs rapide personnalisable. Le sous-menu Publier gre la distribution et le partage des classeurs. Il permet aussi d'accder : * aux options Excel ; 3.1.3. Les options Excel * aux documents rcents (les fichiers peuvent tre fixs dans la liste grce un bouton "punaise"). Dsormais, vous accdez aux options d'Excel partir du bouton Office. 3.1.1. La barre d'accs rapide La barre d'accs rapide contient trois boutons par dfaut (Enregistrer le classeur, Annuler les changements et Rtablir les changements). Faites un clic droit sur l'objet afin d'accder l'option de personnalisation, puis choisissez les boutons qui En plus des options classiques, quelques lments sont signaler : apparatront dans la barre d'outils. Dans le sous-menu Standard : * vous pouvez personnaliser le jeu de couleurs d'Excel Le sous-menu Nouveau permet d'ouvrir un classeur (Bleu, Argent ou noir) ; vierge, un modle personnel ou un des modles * cochez l'option Afficher l'onglet dveloppeur dans complmentaires disponibles sur le site Microsoft Office le ruban pour grer vos projets VBA ; Online. * vous pouvez paramtrer les langues utiliser. 3.1.2. Description des menus Le sous-menu Enregistrer sous propose de sauvegarder le classeur au format de votre choix : * au standard openXML ; * compatible avec les anciennes versions d'Excel ; * au format pdf (si le complment a t install) ; * aux autres formats (csv, txt, html, xla, slk...). Le sous-menu Personnaliser permet de modifier les boutons qui apparaissent dans la barre d'accs rapide. * Slectionnez les commandes dans les diffrentes listes, puis cliquez sur Ajouter ou Supprimer afin de personnaliser la barre. Cette transaction est aussi accessible en faisant un clic droit sur le bouton Office, le ruban ou sur les onglets. gre les macros

Le format prsent par dfaut est .xlsx. Cliquez sur le bouton Autres formats pour afficher la bote de dialogue Le sous-menu Complments "Enregistrer sous". complmentaires.

Le sous-menu Prparer contient les outils d'aide la Le sous-menu Enregistrement : distribution du classeur : * vous pouvez spcifier un format de fichier par dfaut pour la sauvegarde ; * le bouton Proprits pour lire ou modifier vos * il est possible de paramtrer la rcupration donnes personnelles. automatique des classeurs (option existante depuis Cliquez sur l'option Proprits du classeurs/Proprits Excel2002). avances pour afficher la bote de dialogue Proprits du classeur. 3.2. Le ruban * le bouton Inspecter le document vrifie la prsence de donnes confidentielles : Les commentaires, les contenus masqus, et les informations d'identification qui vous permettent de rdiger ou de modifier des documents en Le ruban propose des groupes de boutons, arrangs dans neuf onglets. Certains groupes possdent une petite icne dans l'angle infrieur droit. Cliquez dessus pour faire apparaitre les botes de dialogues associes.
Numro HS 2 Hors srie spcial rentre Page 41

Developpez Magazine est une publication de developpez.com

Le menu contextuel du ruban permet de paramtrer la barre d'outils Accs rapide et de masquer le ruban pour un gain de place l'cran.

* Dfinir une couleur d'onglet. * Verrouiller les cellules. * Protger la feuille. * Dfinir le format des cellules.

Des onglets supplmentaires spcifiques sont accessibles quand certains objets sont slectionns (les images, formes Le groupe dition : automatiques, SmartArt, graphiques...). * Accs rapide aux fonctions Somme, Moyenne, Nb, Max, Min. Si vous avez besoin d'aide, profitez des infobulles qui * Supprimer les lments de la cellule. dtaillent les fonctionnalits lorsque le curseur de la souris * Trier des valeurs ou des couleurs. passe sur les menus. * Filtrer. Le passage de la souris sur certains boutons contextuels * Rechercher et remplacer dans la feuille. permet aussi de prvisualiser dynamiquement le rsultat * Atteindre. qui sera appliqu lors de la validation. * Afficher le volet de slection (gestion des objets contenus dans la feuille). 3.2.1. L'onglet Accueil 3.2.2. L'onglet Insertion L'onglet Accueil rassemble les commandes gnrales pour la saisie et mise en forme du tableur. L'onglet Insertion contient les objets pouvant tre ajouts dans une feuille Excel.

Le groupe Presse papier : * Copier, couper, Coller. * Reproduire la mise en forme. * Afficher le volet Presse-papiers Office.

Le groupe Tableaux : * Insertion de tableaux croiss dynamiques. * Insertion de tableau.

Le groupe Illustrations : Le groupe Police : * Insertion d'images et de ClipArt. * Le type de police. * Insertion de formes. * La taille de la police. * Insertion de SmartArt. * Augmenter et diminuer progressivement la taille de la police. Le groupe Graphiques : * Gestion des bordures de cellules. * En colonne. * Mise en forme des donnes (gras, soulign, italique) * En ligne. * Couleur de remplissage et la couleur de la police. * En secteurs. * En barres. Le groupe Alignement : * En aires. * Gestion des alignements verticaux et horizontaux. * En nuage de points. * Orientation du texte. * Autres types de graphiques (Surface, Anneau, Bulle, * Augmenter ou diminuer le retrait. Radar). * Renvoyer la ligne automatiquement. * Fusionner les cellules. Le groupe Liens hypertextes : * Insre un lien hypertexte dans la cellule slectionne. Le groupe Nombre : * Le format de la cellule Le groupe Texte : * Ajout et rduction des dcimales. * Insertion des zones de texte. * Insertion des enttes et pieds de page. Le groupe Style : * Insertion des textes WordArt. * La mise en forme conditionnelle. * Insertion des lignes de signature. * La mise en forme de tableaux. * Insertion des objets. * Les styles de cellules. * Insertion de symboles. Le groupe Cellules : * Insrer des cellules, des lignes, des colonnes, des 3.2.3. L'onglet Mise en page feuilles. Cet onglet gre la mise en forme de la feuille de calcul. * Supprimer des cellules, des lignes, des colonnes, des feuilles. * Paramtrer la taille des cellules. * Masquer des cellules, des lignes, des colonnes, des feuilles. * Afficher des cellules, des lignes, des colonnes, des Le groupe Thmes : feuilles. * Liste des thmes prdfinis. * Renommer la feuille. * Dplacer ou copier la feuille.
Developpez Magazine est une publication de developpez.com
Numro HS 2 Hors srie spcial rentre Page 42

Le groupe Mise en page : 3.2.5. L'onglet Donnes * Orientation (portrait ou paysage). L'onglet Donnes gre les donnes du classeur et les * Marges donnes externes. * Dfinition de la taille du papier (A4, enveloppes) * Zone d'impression. * Gestion des sauts de page. * Gestion des images d'arrire-plan. * L'impression des titres (lignes et colonnes reproduire sur chaque page imprime). Le groupe Donnes externes : * Cration de connexions vers des sources externes Le groupe Mise l'chelle : (Access, fichiers txt et csv, partir de sites web). * Gestions des connexions existantes. Le groupe Options de la feuille de calcul : * Afficher ou masquer le quadrillage. Le groupe Connexions : * Imprimer le quadrillage. * Actualisation des informations provenant des sources * Afficher ou masquer les enttes de colonnes et de de donnes. lignes. * Proprit des plages de donnes. * Imprimer les enttes de colonnes et de lignes. * Grer toutes les connexions pour le classeur (ajout, modification, suppression). Le groupe Organiser : * Mise en page des objets contenus dans la feuille. Le groupe Trier et filtrer : * Mettre au premier plan ou l'arrire-plan. * Trier des valeurs ou des couleurs. * Afficher le volet de slection (gestion des objets * Filtrer. contenus dans la feuille). * Aligner les objets. Le groupe Outils de donnes : * Grouper les objets. * Rpartir le contenu d'une cellule dans des colonnes * Rotation des objets. distinctes (convertir). * Supprimer les doublons. 3.2.4. L'onglet Formules * Cration des listes de validation. * Consolider. L'onglet Formules regroupe toutes les fonctions classes * Analyser les scnarios. par genre et les options de gestion. Le groupe Plan : * Grer les plans (grouper et dissocier). * Application d'un sous-total. Le groupe Bibliothque de fonctions : Le groupe Analyse : * Liste des fonctions regroupes par catgorie. * Utilisation de l'utilitaire d'analyse pour les donnes * Afficher la bote de dialogue pour insrer une financires et scientifiques (Funcres). formule. 3.2.6. L'onglet Rvision Le groupe Noms dfinis : L'onglet Rvision permet la vrification, la gestion des * Grer les cellules et les plages nommes (ajout, annotations et la protection du classeur. modification, consultation, suppression). Le groupe Audit de formules : * Reprer les antcdents et les dpendants. * Supprimer les flches d'audit. * Afficher les formules la place de leur rsultat. * Vrifier et reprer les erreurs. * valuer les formules. * Utilisation des fentres espions.

Le groupe Calcul : * Les modes de calcul (automatique, automatique sauf sur les tables de donnes, manuel) Le groupe Commentaires : * Calculer le classeur maintenant (F9). * Gestion des commentaires (ajouter, afficher, masquer, * Calculer la feuille maintenant (Maj+F9). supprimer). Le groupe Solutions : Le groupe Modifications : * Effectuer des conversions vers et partir de la devise * Protger la feuille. Euro. * Protger le classeur. * Protger et partager le classeur. * Grer les plages dverrouilles par un mot de passe
Numro HS 2 Hors srie spcial rentre Page 43

Le groupe Vrification : * Vrification de l'orthographe. * Rechercher (dans les dictionnaires, les encyclopdies et les traductions). * Dictionnaire des synonymes. * Traduction du texte slectionn.

Developpez Magazine est une publication de developpez.com

lorsque la feuille est protge. * Suivi des modifications. 3.2.7. L'onglet Affichage

Nota: Les contrles Formulaires sont toujours disponibles dans Excel2007 mais il est prfrable d'utiliser les contrles ActiveX qui sont plus simples d'emploi et possdent plus d'options.

L'onglet Affichage gre la mise en forme de la page Le groupe XML : l'cran. * Importer et exporter des fichiers xml. * Actualiser les donnes. * Mapper dans le classeur. Si l'onglet Dveloppeur n'apparait pas dans le ruban : Cliquez sur le bouton Office, Le groupe Affichages classeur : puis sur le bouton Options Excel. * Afficher en mode normal ou en mode aperu des Cliquez sur le menu Standard. sauts de page. Cochez l'option Afficher l'onglet Dveloppeur dans le * Affichage en mode "Mise en page". ruban. * Afficher en mode plein cran (Nota: la fermeture du Cliquez sur le bouton OK pour valider. mode plein cran est place dans le menu contextuel de la feuille). Pour grer les macros complmentaires : Cliquez le bouton Office. Le groupe Afficher/Masquer : Cliquez sur le bouton Options Excel. * Afficher/Masquer le quadrillage. Slectionnez le menu Complments. * Afficher/Masquer la barre de formules. Choisissez Complments Excel dans le menu * Afficher/Masquer les enttes de lignes et de colonnes. droulant Grer (en bas de la fentre). * Afficher/Masquer les rgles. Cliquez sur le bouton Atteindre. Le groupe Zoom : Le groupe Fentre : * Figer les volets. * Ouvrir le classeur dans une deuxime fentre. * Rorganiser les classeurs (horizontal, vertical, mosaque, cascade). * Fractionner. * Masquer la fentre. * Afficher deux feuilles cte cte. * Synchroniser le dfilement de deux classeurs. * Enregistrer l'espace de travail. * Basculer vers un autre classeur ouvert. Le groupe Macros : * Afficher la liste des macros. * Utiliser l'enregistreur de macros. 3.2.8. L'onglet Dveloppeur Slectionnez simplement les bords de la barre de formules Comme son nom l'indique, cet onglet permet de grer vos afin de modifier sa taille. macros. Le menu droulant sur la droite (dont la taille est aussi extensible) permet d'accder aux dernires fonctions utilises. 4. La feuille de calcul Le groupe Code : 4.1. Gnralits * Accder l'diteur de macros (Alt+F11). * Afficher la classique bote de dialogue qui liste les Pour viter les risques d'erreur lors de la saisie des macros excutables (Alt+F8). formules, Excel 2007 dispose d'un outil de saisie semi* Utiliser l'enregistreur de macros. automatique. * Grer la scurit des macros. Lorsque vous rdigez le dbut de la formule, l'application propose la liste des fonctions correspondantes. Cette Le groupe Contrles : nouveaut est trs apprciable. On remarquera que les * Insrer des contrles Formulaires ou ActiveX. cellules et plages nommes apparaissent aussi dans la liste * Activer ou dsactiver le mode cration. (ProductionAnnee dans la copie d'cran ci-dessous). * Afficher la fentre Proprits. * Visualiser le code de la feuille active. 3.2.9. L'onglet Complments L'onglet Complments donne accs complmentaires que vous avez actives. aux macros

3.3. La barre de formules La barre de formules est maintenant extensible horizontalement et verticalement. Il est possible de rdiger des formules plus longues et comportant plus de niveaux d'imbrication qu'auparavant.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 44

son contenu. 4.3. Le menu contextuel des cellules Il est dsormais possible de supprimer les doublons Le nouveau menu contextuel (clic droit dans une cellule) s'est enrichi d'une barre de mise en forme. facilement: Slectionnez votre plage de cellules. Cliquez sur l'onglet Donnes dans le ruban. Cliquez sur le bouton Supprimer les doublons, dans le groupe Outils de donnes. Une option permet de prciser si la premire cellule correspond un entte (elle ne sera pas prise en compte lors de la suppression). Cette barre correspond au groupe Police, dans l'onglet Cliquez sur le bouton OK pour valider. Accueil. Le menu contextuel dispose aussi de nouvelles options: * Filtrer * Trier * Nommer une plage 4.2. La barre d'tat et la barre d'onglets 4.4. Les tableaux La barre d'onglets dispose de quelques fonctionnalits supplmentaires: Excel permet de convertir une plage de cellules en tableau ("Liste" dans Excel 2003). Les tableaux facilitent le classement et l'exploitation de vos donnes. Slectionnez les cellules puis cliquez sur le bouton "Tableau" dans le groupe Tableaux de l'onglet Insertion. (Ou sur le bouton "Mettre sous la forme de tableau" dans le groupe Style de l'onglet Accueil). Choisissez un style dans la liste. La plage est automatiquement mise en forme en fonction du style que vous avez slectionn. Un filtre automatique est activ par dfaut dans la nouvelle table. Vous pouvez ensuite utiliser la puissance des filtres et des tris pour traiter le contenu des cellules (voir chapitre 4.7).

Le menu contextuel contient un accs rapide pour protger la feuille. Une feuille peut tre ajoute directement en cliquant sur le dernier onglet, sur la droite de la barre (ou en utilisant le raccourci clavier Maj+F11). Le menu qui liste les feuilles du classeur (clic droit sur la gauche de la barre d'onglets) existait dj dans les versions prcdentes d'Excel, mais il est toujours intressant de rappeler cette option qui permet d'atteindre rapidement une feuille, surtout quand le classeur en contient beaucoup. La barre d'tat a aussi volu:

Un nouvel onglet, apparait dans le ruban lorsque vous slectionnez n'importe quelle cellule du tableau. L'application comprend que les modifications concernent tout le tableau. Le menu de Zoom, et notamment son curseur, permet de modifier la zone d'affichage trs facilement. Vous pouvez basculer entre trois modes d'affichage : Normal, Mise en page et Aperu des sauts de page. Le Le groupe Proprits : * Renommer le tableau qui sert de rfrence (sans mode Mise en page est trs intressant car vous travaillez espace ni caractre spcial). sur la feuille de calcul tout en voyant ce que donnera * Redimensionner le tableau. exactement la page lorsqu'elle sera imprime. Ce mode permet aussi d'accder aux champs d'entte et de Le groupe Outils : pied de page. * Synthtiser avec un tableau crois dynamique. * Supprimer les doublons. Sur la gauche de la barre se trouve le bouton pour * Convertir en plage (annule la table). dmarrer et arrter l'enregistreur de macros. Faites un clic droit dans la barre d'tat pour personnaliser
Numro HS 2 Hors srie spcial rentre Page 45

Developpez Magazine est une publication de developpez.com

Le groupe Donnes de table externe : * Exporter vers une liste SharePoint ou un diagramme Visio. * Actualiser. * Spcifier le mode de mise jour des donnes. * Dconnecter le tableau du serveur.

les modifications s'effectuent en temps rel. Vous pouvez spcifier plusieurs critres de mise en forme conditionnelle qui s'appliqueront la plage.

Pour utiliser une formule : Slectionnez la ou les cellules. Cliquez sur l'option Nouvelle rgle dans le menu du Le groupe Options de style de tableau : bouton Mise en forme conditionnelle. * Activer ou dsactiver la ligne d'entte. Slectionnez Utiliser une formule... dans le champ * Appliquer une mise en forme pour la premire et la Type de rgle. dernire colonne. Saisissez votre formule. * Appliquer des lignes ou des colonnes bandes Choisissez le format de mise en forme (bouton (alternance de couleurs). Format). * Activer ou dsactiver la ligne des totaux. Cliquez sur le bouton OK pour valider. La ligne de totaux, et les formules qu'elle contient, s'adapte automatiquement lorsque vous redimensionnez le tableau. Vous pouvez dfinir un type de calcul particulier pour chaque cellule de la ligne de totaux. Le groupe Styles de tableau : * Choisir un autre style dans la galerie. Les noms de tableau sont accessibles dans le gestionnaire de noms (Onglet Formules/Groupe Noms dfinis) et aussi visibles dans la liste de saisie semi-automatique des formules. Vous pouvez donc spcifier le nom du tableau (qui est en fait une plage nomme) dans vos formules : =RECHERCHEV("mimi";Tableau1;3;0) 4.5. La mise en forme conditionnelle Le nouvel outil de mise en forme conditionnelle dispose d'une large panoplie de rgles afin de visualiser et d'analyser les relations ou les tendances entre les donnes. Les mises en forme conditionnelles sont faciles et rapides appliquer. Vous pouvez obtenir des synthses cohrentes et d'une grande qualit visuelle, en quelques clics de souris. 4.6. La police, les thmes et les styles Le type de police La police de caractres utilise dans Office 2007 bnficie de la technologie ClearType par dfaut. Les polices ClearType facilitent la lecture de texte (lissage). Si dans certaines configurations des caractres ne s'affichent pas ou sont flouts, vous pouvez dsactiver ClearType dans les options Excel (menu Standard). Les thmes Les thmes sont des ensembles prdfinis de couleurs, de polices, de traits et d'effets de remplissage qui peuvent tre appliqus la feuille de calcul ou des objets spcifiques. Les thmes sont communs toutes les applications Office 2007. La galerie est compose de 20 thmes par dfaut. Si les modles proposs ne vous conviennent pas, vous pouvez en tlcharger d'autres sur le site Microsoft Office Online : Slectionnez sur le bouton Thmes dans l'onglet Mise en page. Cliquez sur le lien Autres thmes sur Microsoft Office Online. Choisissez le thme qui vous intresse et suivez les instructions de tlchargement. Lorsque vous slectionnez de nouveau le bouton Thmes dans l'onglet Mise en page, le thme tlcharg apparait dans le champ Personnalis. Les thmes sont utiles pour standardiser vos prsentations et respecter vos chartes graphiques. Les styles

Le bouton "Mise en forme conditionnelle" se trouve dans le groupe Style de l'onglet Accueil. Aprs avoir slectionn une colonne de votre tableau, vous pouvez utiliser les rgles prdfinies dans le menu : * Faire ressortir les valeurs (suprieures, comprises entre, contenant, en doublon, infrieures...) par rapport une variable que vous spcifiez. * Faire ressortir les valeurs (les plus leves et plus faibles en nombre ou en pourcentage, suprieures et infrieures la moyenne...) par rapport une variable que vous spcifiez. * Appliquer des relations visuelles (nuances de couleurs, icnes indicatrices). * Appliquer une barre de donnes dans chaque cellule, qui correspond la grandeur de la valeur par rapport la srie.

Si les thmes sont communs toutes les applications Office, les styles sont eux conus pour mettre en forme les lments spcifiques Excel * Graphiques L'application calcule la mise en forme automatiquement, * Tableaux et s'adapte au contenu des cellules. Les prvisualisations et * Cellules
Developpez Magazine est une publication de developpez.com
Numro HS 2 Hors srie spcial rentre Page 46

* Tableaux croiss dynamiques * SmartArt * Formes Le bouton Styles de cellules se trouve dans le groupe Style de l'onglet Accueil. Un choix important de styles prdfinis est mis votre disposition. Vous pouvez facilement crer et personnaliser vos styles si aucun de ceux proposs ne vous convient. 4.7. Les tris et les filtres Les tris

Filtre automatique. Cliquez sur le bouton OK pour valider. 5. Les graphiques Le nouvel outil de conception des graphiques permet une construction rapide et d'une grande qualit visuelle.

Vous pouvez facilement classer les donnes dans la feuille de calcul en utilisant les tris. De nouvelles options ont t ajoutes : tri par couleur de cellule ou de police, et jusqu' 64 niveaux (contre trois Vous pouvez profiter des nombreuses options disponibles : dans les versions prcdentes). * Choix du type de graphique. * Rendu des couleurs et des images. * Personnalisation des couleurs par thme ou au choix dans une large palette. * Effets visuels (Fonction d'affichage 3D, rotations, ombres adoucies, transparences...). * Gestion des modles et des graphiques par dfaut. Les filtres Le moteur de cration des graphiques est le mme dans Office Word et PowerPoint 2007. Vous pouvez donc crer Profitez aussi des amliorations apportes aux capacits de des graphiques de la mme manire, dans ces applications. filtrage : * Par couleur. Le menu de cration des graphiques est situ dans l'onglet * Personnalis en fonction du type de donnes (dates, Insertion. texte, numrique). * Augmentation des critres de filtre.

Un nouveau groupe d'onglets est accessible lorsque le graphique est slectionn :

Les options du filtre s'adaptent en fonction du type de donnes contenu dans la colonne : C'est partir de ces onglets que vous allez modifier et * Filtres textuels. personnaliser vos graphiques. * Filtres numriques. * Filtres chronologiques pour les dates. Onglet Cration : * Modifier le type de graphique. L'application est capable d'analyser automatiquement les * Enregistrer comme modle. dates par jour, semaine, mois, semestre ou anne ce qui * Intervertir les lignes est les colonnes. facilite les filtres sur ce type de donnes. * Grer les plages de donnes sources. * Dispositions du graphique. * Slection du style de graphique depuis une galerie. * Dplacer le graphique (dans un onglet graphique ou incorpor dans la feuille de calcul). Onglet Disposition : * Mise en forme de la slection. Pour dissocier la hirarchie de dates dans le Filtre * Insertion d'images de zones de texte et de formes. (transformation en liste non hirarchique) : * Gestion des tiquettes, du titre du graphique, des Cliquez sur le Bouton Office. lgendes, des tables de donnes. Cliquez sur le bouton Options Excel. * Gestion des axes et quadrillages. Slectionnez le menu Options avances. * Gestion des planchers et parois, fonctions d'affichage Dans la partie Afficher les options pour ce classeur, 3D et des effets visuels. Choisissez le classeur. * Mise en uvre des courbes de tendance, barres Dcochez l'option Grouper les dates dans le menu d'erreur.
Numro HS 2 Hors srie spcial rentre Page 47

Developpez Magazine est une publication de developpez.com

* Proprits pour renommer le graphique. Onglet Mise en forme : * Styles de formes, contours, remplissages, effets. * Styles WordArt pour les tiquettes, le titre du graphique et les lgendes. * Gestion des graphiques : liste des graphiques dans un volet de slection, avec possibilit de changer les titres et masquer/rafficher les graphiques. * Modification de la taille du graphique. Vous pouvez aussi accder aux options du graphique partir du menu contextuel (clic droit dans le graphique). Un menu contextuel diffrent s'affiche en fonction de la zone slectionne.

Deux nouveaux onglets (Cration et Format) sont accessibles lorsqu'un diagramme SmartArt est slectionn. Ceux-ci contiennent une large palette d'outils pour la cration et la mise en forme des objets.

L'option Slectionner des donnes (aussi accessible par le groupe Outils de graphique/Cration/ Donnes/Slectionner des donnes) permet d'afficher la bote de dialogue pour grer les sources de donnes. * Dfinir la plage de donnes. * Ajouter, modifier, dplacer ou supprimer des sries. * Intervertir les lignes et les colonnes. * Modifier les tiquettes de l'axe des abscisses. * Grer les cellules vides et les cellules masques.

Il est possible d'afficher le rsultat d'une cellule dans un SmartArt : * Insrez un diagramme SmartArt dans la feuille de calcul. * Appliquez votre mise en forme et finalisez l'aspect visuel. * Slectionnez ensuite la bordure encadrant l'ensemble des formes. * Utilisez le raccourci clavier Ctrl+A. * Toutes les zones sont ainsi slectionnes. * Effectuez un Copier. * Slectionnez une cellule dans la feuille de calcul. * Collez. * Vous obtenez une copie du SmartArt, mais de type forme automatique classique. * Vous pouvez ce stade supprimer le "modle" initial si vous le souhaitez. * Slectionnez la zone de texte dans les diffrentes formes et spcifiez la rfrence une cellule, dans la barre de formule. * Validez la formule. * Dsormais, le rsultat de la cellule Feuil3!$A$1 s'affiche dans la forme.

6. Les SmartArt Excel 2007 intgre la fonctionnalit SmartArt qui propose une vaste galerie de pyramides, de diagrammes et d'organigrammes, placer dans les feuilles de calcul. Cet nouvel outil permet l'illustration et la mise en valeur de vos rsultats. Cliquez sur l'onglet Insertion. L'icne SmartArt est situe dans le groupe Illustration. Les diagrammes sont classs par catgorie : * Tous * Liste * Processus * Cycle * Hirarchie * Relation * Matrice * Pyramide

7. Les tableaux et graphiques croiss dynamiques Les tableaux croiss dynamiques (TCD) servent synthtiser et analyser des lignes d'information partir des paramtres que vous avez spcifis. Comme les autres outils de l'application Excel, les tableaux croiss dynamiques bnficient aussi d'une nouvelle interface. Vous pouvez crer un tableau crois dynamique partir de l'onglet Insertion. Deux onglets spcifiques (Options et Cration) sont accessibles lorsqu'une cellule du TCD est slectionne.

L'onglet Options Le groupe Options du tableau crois dynamique : * Modifier le nom du TCD. * Afficher la bote de dialogue Options du TCD. Le groupe Champ actif : * Modifier le nom du champ. * Dvelopper ou rduire tous les lments du champ actif. * Afficher la bote de dialogue Paramtres de champs.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 48

Le groupe Groupe : * Crer un groupe contenant les lments slectionns. * Dissocier le groupe. * Grouper les champs numriques ou date. Le groupe Trier : Le groupe Donnes : * Actualiser le TCD. * Changer la source de donnes. Le groupe Actions : * Supprimer les champs, les mises en forme et les filtres. * Slectionner un lment du TCD (tiquettes, valeurs, TCD complet). * Dplacer le TCD dans le classeur. Le groupe Outils : * Crer un graphique crois dynamique. * Crer et modifier les champs et lments calculs. * Lister les formules. * Travailler sur TCD connect une source de donnes OLAP.

analyser et mettre en forme vos donnes : * Appliquer une mise en forme conditionnelle. * Trier la colonne de la cellule slectionne. * Annuler les actions effectues pour changer l'orientation de l'analyse. Consultez le tutoriel qui dcrit en dtail les tableaux croiss dynamiques dans Excel 2007 : Lien 121. 8. L'aide L'accs la fentre d'aide Office est reprsent par une icne bleue, de forme ronde et contenant un point d'interrogation. L'aide est aussi toujours accessible par le raccourci clavier F1. De nombreux exemples trs dtaills sont disponibles, permettant de rpondre vos questions et aussi de dcouvrir toutes les fonctions de l'application. Une partie de l'aide est stocke sur le poste de travail. Certaines rubriques complmentaires sont hberges en ligne, sur le site Office Online. En activant la connexion, vous avez accs un plus grand nombre de procdures d'aide. On peut imaginer le formidable potentiel que cela reprsente si cette base de connaissance en ligne est rgulirement actualise et complte.

Le groupe Masquer/Afficher : * Afficher ou masquer la liste des champs. * Afficher ou masquer les boutons +/-. Le bouton de connexion au site Office Online est plac * Afficher ou masquer les enttes de champ des lignes dans le coin infrieur droit de la fentre d'aide. Vous et colonnes. pouvez paramtrer une utilisation de l'aide, en local ou en ligne, depuis le menu L'onglet Cration Le groupe Disposition : * Paramtrer l'affichage et la disposition des soustotaux. * Activer ou dsactiver les lignes et les colonnes. * Ajuster la disposition du TCD (compacte, mode plan, tabulaire). * Ajouter ou supprimer des sauts de ligne aprs chaque lment.

9. Conclusion

Les nouvelles fonctionnalits sont multiples dans cette dernire version d'Excel. Cet article a peine effleur les possibilits offertes par l'application. Toutes les astuces et les subtilits restent dcouvrir au fil Le groupe Options de style de tableau crois de vos projets. dynamique : * Afficher ou masquer la mise en forme des lignes et Cette version est une tape importante dans l'volution de l'application Excel, axe sur l'analyse des donnes, la mise colonnes. en forme visuelle et le partage des rsultats. Le groupe Styles de tableau crois dynamique : Retrouvez l'article de SilkyRoad en ligne : Lien 122 * Choisir un style dans la galerie. Le contenu du TCD est gr partir du volet Liste de champs de tableau crois dynamique. Slectionnez les champs inclure dans le rapport.

Vous pouvez ensuite utiliser les fonctions pour synthtiser,

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 49

Access
Tutoriels et articles
Crer des requtes simples Cet article est le premier d'une srie ddie aux dbutants. Ce premier volet se propose de prsenter les diffrents types de requtes sous Access et de voir comment on peut : - crer des requtes simples ; - trier les donnes dans la structure de la requte ; - imprimer les rsultats de la requte.
1. INTRODUCTION Souvent la source des formulaires, des listes droulantes, des zones de listes, des tats, la requte est un outil indispensable connatre. Je vais donc, dans cette srie d'articles, montrer comment gnrer des requtes et les manipuler. Voici les titres des diffrents articles qui composent cette srie : 1) Crer des requtes simples ; 2) Utiliser des oprateurs dans les champs calculs et dans les critres ; 3) Manipuler les jointures ; 4) Crer des requtes paramtres ; 5) Manipuler les diffrents types de requtes. Je ne parlerai pas des assistants de cration de requtes, l'objectif tant de comprendre comment s'articule une requte et comment on la manipule. 2. VOCABULAIRE Une requte est une instruction SQL permettant de slectionner un ensemble de donnes, rpondant un ou plusieurs critres, issues d'une ou plusieurs tables. La requte peut afficher tout ou partie de l'ensemble des champs dans une structure totalement diffrente de la structure de l'enregistrement des tables "source" et en y appliquant une rgle de tri (contenant de une dix cls). La requte est cre par l'intermdiaire d'une interface conviviale que l'on appelle QBE Enregistrements Ensemble des donnes organises suivant une structure concernant un individu de la population. Crer des requtes simples

Structure de Ensemble des champs dcrivant un l'enregistrement individu de la population Information lmentaire gnrique concernant un individu de la population. Exemple : le champ "NomEmploye" ou encore le champ "CodePostal". Remarque : On ne stocke qu'une seule information par champ. Structured Query Language : langage d'interrogation des bases de donnes. Pour plus d'informations sur le langage SQL je vous conseille de lire l'article de SQLPro : Le SQL de A Z - Les fondements (Lien 124) Valeur de slection applique un champ. Exemple : CodePostal > = 45000 Nom du champ sur lequel sera excut le tri. Exemple : Trier sur le CodePostal par ordre croissant Sigle de l'expression Query by Example Interface permettant l'utilisateur de crer ses requtes en manipulant directement les champs dans une structure. La syntaxe SQL tant gnre automatiquement par Access en arrire-plan.

Champ

SQL

Critre

Cl

Expression Base de donnes

Dfinition Ensemble d'informations concernant une population organises en tables. Ensemble des donnes organises en enregistrements. Chaque table stocke les donnes se rapportant un objet. Lorsqu'une information prsente une redondance, on cre une nouvelle table. Pour plus d'informations sur la conception des tables lire l'article de : Maxence Hubiche : Access - Les bases (Lien 123) QBE

3. L'ENVIRONNEMENT

Table

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 50

Pour crer une nouvelle requte (versions antrieures Access 2007) : - cliquez sur l'onglet "Requtes" (1) puis - cliquez soit sur "Crer une requte en mode Cration" (2) - Cliquez soit sur "Nouveau" (3) (Access ouvre une boite de dialogue donnant accs alors plusieurs assistants).

cran de travail : 1. Volet des tables : contient toutes les tables sources de la requte ; 2. Tables "source" : contiennent les champs disponibles ( noter la cl primaire affiche en gras) ; 3. La jointure : c'est la relation qui existe entre les deux tables. (Ce sujet sera vu en dtail dans un article spcifique) ; 4. La structure de la requte : regroupe tous les champs ncessaires l'extraction des informations souhaites ; 5. La zone de critres : partie de l'cran dans lequel nous pourrons combiner les diffrentes valeurs de slection. 3.1.2. La barre d'outils

Pour crer une nouvelle requte (version 2007) : - cliquez dans le ruban sur l'onglet "Crer" (1) - cliquez sur l'outil "Cration de requte" (2) 3.1. L'cran QBE QBE (Query by example) : interface graphique facilitant la cration des requtes et la gnration de la syntaxe SQL

Nous allons identifier les outils avec lesquels nous allons principalement travailler. 1. Permet de changer le mode d'affichage et de passer du mode cration au mode feuille de donnes (entre autres) ; 2. Permet de changer le type de la requte en cours de cration ; 3. Permet d'excuter la requte (Je reviendrai sur la diffrence entre cet outil et l'outil (1) correspondant3. l'affichage en feuille de donnes ; 4. Permet d'ajouter une table la requte en cours ; Lors de l'appel la cration de la nouvelle requte, Access 5. Permet d'ajouter la ligne "Regroupement" afin de nous demande de slectionner une ou plusieurs tables gnrer des calculs statistiques dans la requte ; (voire mme une ou plusieurs requtes). 6. Affiche la fentre des proprits de la requte ou du champ slectionn ; 3.1.1. Les zones de travail 7. Ouvre la fentre du gnrateur d'expression facilitant la cration d'expression calcule. En cliquant sur la partie liste droulante des boutons (1) et (2), Access ouvre des sous-menus dcouvrant d'autres outils.

Nous allons identifier les diffrents lments avec lesquels nous travaillerons lors de la cration d'une requte. Commenons par recrer l'cran ci-contre gauche. (Tlchargez et ouvrez la base exemple : Bouquins) 1. Cliquez sur le bouton Requtes. 2. Cliquez sur "Crer une requte en mode cration". 3. Slectionnez les tables T_Auteurs et T_Ouvrages. 4. Cliquez sur le bouton Ajouter. 5. En double-cliquant sur les noms de champs des tables situes dans la partie haute de l'cran, 5) ceux-ci apparaissent dans la structure de la requte.

Dans le sous-menu "Affichage", nous trouvons dans l'ordre : - Affiche le mode cration c'est--dire la structure de la requte ; - Affiche le rsultat de la requte slection sous forme d'une feuille de donnes (comme dans Excel) ; - ( remarquer que ce bouton affichera les enregistrements concerns s'il s'agit d'une requte Action (Mise jour, Suppression, Ajout).) - Affiche la syntaxe SQL gnre par Access (trs Nous pouvons maintenant passer l'identification de notre pratique pour la rcupration et l'implantation dans le code
Developpez Magazine est une publication de developpez.com
Numro HS 2 Hors srie spcial rentre Page 51

VBA) ; Slectionner tous les champs : - Affiche un Tableau Crois en rapport avec les donnes rcupres par la requte ; - Affiche un Graphique Crois en rapport avec les donnes rcupres par la requte.

Dans le sous-menu "Type de requte", nous trouvons dans l'ordre : - Requte Slection : il s'agit de la requte de base permettant d'extraire des enregistrements en fonction d'un ou plusieurs critres ; - Requte Analyse croise : requte statistique sur deux ou plusieurs niveaux de regroupements ; - Requte Cration de table : comme son nom l'indique, permettra de transformer l'extraction obtenue en donnes d'une nouvelle table ; - Requte Mise jour : permettra de mettre jour l'ensemble des enregistrements d'une table en fonction d'un ou plusieurs critres ; - Requte Ajout : permettra de rcuprer des donnes d'une table et de les ajouter dans une autre table de la base en cours ou dans une autre base de donnes ; - Requte Suppression : permettra de supprimer tous les enregistrements d'une table rpondant aux critres poss.

Double-clic sur le nom de la table. L'ensemble des champs est slectionn. Clic maintenu sur la zone slectionne et glissez dans la zone de structure de la requte. Slections multiples :

Slectionnez les champs comme on slectionne les fichiers dans l'explorateur de fichiers. (Utilisation des touches SHIFT et CTRL) 3.2. Cration de la structure de la requte On remarquera que si un champ est dj slectionn, on La structure de la requte est compose des diffrents pourra le dslectionner en maintenant CTRL et en champs slectionns dans les tables "source". recliquant sur celui-ci. Voyons ci-dessous les diffrentes mthodes permettant d'insrer ou d'ajouter des champs la structure. Insrer un Champ : Utiliser le Caractre * :

Clic maintenu sur le champ insrer dans la structure et Double-clic sur l'toile en haut des champs, glisser sur le nom du champ qui doit se dcaler. L'toile vient s'afficher dans le premier champ dans la zone de structure. Ajouter un champ : Cette toile reprsente l'ensemble des champs de la requte Il suffit de double-cliquer sur le nom du champ ajouter. Celui-ci vient s'implanter aprs le dernier champ de la structure.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 52

Dplacer un champ - tape 1 :

Version 2007 :

1. Cliquez dans le ruban sur l'onglet Crer. 2. Cliquez sur l'outil : Cration de requte. Cliquez sur le slecteur de champ, petite barre grise, plac Access ouvre l'cran QBE et une bote de dialogue affichant l'ensemble des tables disponibles. au-dessus du champ concern. Dplacer un champ - tape 2 :

Sans bouger la souris, cliquez nouveau sur la slection (le pointeur change de forme (cf. la loupe sur l'image)) et 1. Double-cliquez sur la table T_Auteur. glissez pour amener la ligne d'insertion l'endroit souhait 2. Fermez la bote de dialogue des tables. puis lchez la souris. 4. CRATION DE REQUTES SIMPLES Dans ce chapitre nous allons crer quelques exemples de requtes simples. - Requte monotable ; - Requte multitables avec tri. 4.1. Requte monotable Il s'agit en fait d'une requte sur une seule table. Couramment utilise comme source pour les listes droulantes, elle permet de ne slectionner qu'une partie des champs de la table en changeant l'ordre de ceux-ci ou en appliquant des rgles de tris. Avant de crer la structure de la requte, dfinissons notre objectif : Nous voudrions extraire de la table T_Auteurs, le Nom et le Prnom de celui-ci mais seulement ceux ayant vcu au IXXe sicle. 4.1.1. Cration de la requte Suivant la version, procdez comme suit : Versions antrieures 2007 :

1. Double-cliquez sur les diffrents champs devant faire partie de la requte. 2. Indiquez dans la zone critres, sous le champ concern, la valeur du critre de slection. 4.1.2. Enregistrement de la requte Quelle que soit la version d'Access, la gnration d'une requte engendre l'ajout d'un nouvel objet qui pourra tre mmoris pour une rutilisation. Ainsi, lorsque notre nouvelle requte est mise au point, il suffit de fermer celleci pour qu'Access nous propose d'enregistrer notre travail. Le nom de la requte sera limit 64 caractres (espaces compris) et sera toujours prcd du prfixe "R_" ou "req" ou "qry". Enregistrer votre premire requte sous le nom : R_AuteursDu19eme. Deux remarques sur l'enregistrement de la requte. 1. Le fait de donner un prfixe permet par la suite de retrouver par ordre les tables, les requtes et les tats. 1. On sait ainsi toujours quel type d'objet on manipule. 2. Remarquez que dans le nom, j'ai fait abstraction des espaces mais pour un confort de lecture j'ai mis des majuscules chaque mot. 2. Cela me facilitera la tche plus tard lorsqu'il faudra faire
Numro HS 2 Hors srie spcial rentre Page 53

1. Cliquez sur l'onglet Requtes. 2. Cliquez sur Crer une requte en mode cration. 3. ou cliquez sur l'outil Nouveau.

Developpez Magazine est une publication de developpez.com

appel au nom d'objet dans les macros ou dans la 2. saisissez un intitul pour la discussion. Que celui-ci programmation. soit clair et explicite ; 2. Je serai ainsi dispens de frapper les [] pour encadrer le 3. commencez et finissez toujours par un petit mot nom. gentil ; 4. dans le corps de votre texte, cliquez sur le bouton # (marqu par la loupe en haut dans la barre d'outils). 4.1.3. La syntaxe SQL 4. Deux balises [CODE][/CODE] apparaissent. Faites Quelle que soit la version, Access gnre en arrire-plan le alors CTRL V (correspond la commande Coller). code SQL qui sera enregistr lors de la phase prcdente. 4. Votre syntaxe s'affiche. Vous pouvez ajouter dans la L'objectif, pour nous, ne sera pas de manipuler celui-ci premire balise la mention =SQL (voir la seconde loupe mais de : sur l'image). 1. savoir le visualiser ; 2. savoir le rcuprer pour le coller dans un Post lors Relisez votre message et validez-le. d'une demande de soutien dans un forum tel que celui-ci : Lien 125 4.1.3.3. Coller du code SQL dans une requte Aprs avoir demand de l'aide ou des explications sur votre forum prfr, une rponse vous aura t trs vraisemblablement donne. Une version corrige de votre code pourra mme faire partie de la rponse. Afin d'viter toute erreur de transcription, je vous conseille de Copier/Coller la solution propose. Passez en mode cration de la requte. En cliquant le Voici ci-dessous les diffrentes tapes de la manipulation. bouton droit de la souris dans la zone de tables, choisissez dans le menu contextuel Mode SQL. L'image ci-dessus nous montre l'instruction qui sera enregistre. J'y ai mis trois repres : 1. reprsente la clause SELECT. 1. Ce sont les champs slectionns qui seront affichs dans le rsultat de la requte ; 2. reprsente la clause FROM. 2. Contient le nom de la ou des tables "source" ; 3. reprsente la clause WHERE. 1. Slectionnez la partie de code qui vous intresse. 3. Partie contenant les critres de slection. 2. Appliquez le raccourci Ctrl C (correspond la commande Copier). 4.1.3.2. Rcuprer le code pour le coller 3. Revenez dans votre fentre Access. 4. Crez une nouvelle requte (cela prservera votre Slectionnez par un cliquer-glisser l'ensemble du texte requte originale). affich dans la fentre. 5. Au moment de slectionner les tables, fermez la bote Appliquez le raccourci : Ctrl C (correspond la de dialogue (l'interface QBE est affiche sans table). commande Copier). 6. Cliquez le bouton droit de la souris dans la zone de partir de maintenant, cette rcupration du texte peut tables et choisissez Mode SQL dans le menu contextuel tre replace dans n'importe quelle application. Voyons comment la placer dans un post en cours de (une fentre s'affiche avec le mot SELECT slectionn). 7. Appliquez le raccourci Ctrl V (correspond la composition sur DVP. Connectez-vous sur le Forum ACCESS de DVP et condition d'tre inscrit, vous pouvez commande Coller) ; (vous retrouvez le code issu de la rponse du Forum). ouvrir votre discussion. 8. Raffichez votre requte en mode Cration. Dans un premier temps, vous choisissez le bon sous-forum 8. Vous retrouvez votre environnement de travail (en l'occurrence ici : Lien 126). habituel dans l'interface QBE c'est--dire : Cliquez sur le bouton : Nouvelle discussion. 8. - Tables ; 8. - Jointures ; 8. - Champs ; 8. - Critres. 4.1.3.1. Retrouver le code SQL 4.2. Requte multitable On peut remarquer dans notre modle relationnel que certaines tables contiennent des informations complmentaires. Exemples : Vous dcouvrez l'image ci-dessus sur laquelle je ferai La table T_Auteurs contient une information dont le dtail se trouve dans la table T_Nationalit. quatre remarques : 1. choisissez dans la liste droulante la version La table T_Emprunts contient des informations dont le dtail se trouve dans la table T_Livres et dans d'Access avec laquelle vous travaillez ; T_Adherents.
Numro HS 2 Hors srie spcial rentre Page 54

Developpez Magazine est une publication de developpez.com

La requte multitable va nous permettre de recrer une information complte en rcuprant les donnes de chacune des tables. Avant de crer la structure de la requte, dfinissons notre objectif. Nous voudrions obtenir la liste de nos auteurs avec le libell de leur nationalit. Cette requte affichera : - le prnom de l'auteur ; - le nom de l'auteur ; - l'poque ; - la nationalit. 4.2.1. Cration de la requte

patienter, je vous encourage vous plonger dans le tuto de : Maxence Hubiche : Lien 127. 5. TRIER LES DONNES D'UNE REQUTE Cette partie de l'article s'attachera montrer comment gnrer des tris partir de la structure de la requte : 1. Tri monocl ; 2. Tri multicl. 5.1. Tri monocl Afin d'illustrer la mthode, nous allons crer une requte qui nous affichera le Nom et le Prnom de l'auteur tri par ORDRE CROISSANT sur le champ Epoque.

Comme prcdemment, crez une nouvelle requte et affichez les diffrentes tables qui seront ncessaires pour la cration du travail demand. Double-cliquez sur tous les champs ncessaires (cf. image Pour gnrer un tri sur une seule cl dans une requte, il ci-contre). suffit : 1. d'implanter les champs ncessaires ; 1. Access affiche la jointure entre les deux tables et le type 2. dans la ligne tri, cliquer sous le champ cl ; de relation qui les lie. 3. dans la liste droulante, choisir l'ordre de tri 2. Dans la ligne des tables, sous les champs, on retrouve appliquer les tables sources des champs slectionns. 4.2.2. Remarques sur la requte Je voudrais attirer votre attention sur la "liaison" entre les deux tables slectionnes pour la requte. On pourra distinguer trois cas. 1) La relation est tablie dans la fentre du Modle relationnel en paramtrant l'intgrit rfrentielle qui est un garant de la cohrence des donnes. Ce qui signifie que : 1. tout enregistrement Fils doit avoir un enregistrement Pre ; 2. il est impossible de supprimer un enregistrement Pre sans supprimer le ou les enregistrements Fils attachs. On retrouvera alors la relation affiche avec les symboles indiquant les cardinalits de la relation. 2) La jointure sera automatique condition que dans les deux tables : 1. il y a un champ identique ayant le mme nom ; 2. le mme type ; 3. la mme taille ; 4. l'un des deux est une cl primaire. 3)Access ne gre pas automatiquement la jointure. La jointure se fera manuellement. Dans ce cas, il faudra cliquer maintenu sur le premier champ de la jointure de la premire table et le glisser sur le champ correspondant dans la seconde table. Access ne vrifie rien dans ce cas (on pourrait ainsi joindre un champ numrique avec un champ de type Texte). Nous reviendrons plus en dtail sur la manipulation des jointures dans les requtes dans un autre article. Pour
Numro HS 2 Hors srie spcial rentre Page 55

On peut aussi changer l'ordre de tri en double cliquant dans la ligne tri sous le champ concern 5.2. Tri multicl Comme prcdemment, l'exemple nous permettra de bien saisir la manipulation. On se propose donc de crer un catalogue pour notre bibliothque. Il nous faut faire apparatre dans notre structure les champs suivants : - le CodeLivre (table : T_Ouvrages) ; - le Titre du livre (table : T_Ouvrages) ; - le Nom de l'auteur (table : T_Auteur) ; - le Prnom de l'auteur (table : T_Auteur) ; - l'Epoque (table : T_Auteur) ; - la Nationalit de l'auteur (table : T_Nationalite) ; - le Genre du livre (table : T_Genre) ; - la Catgorie de lecteur (table : T_Categorie). Ce Catalogue sera tri par Catgorie, Genre, Nom de l'auteur, Titre. Cette requte sera enregistre sous le nom : R_CatalogueGeneral.

Developpez Magazine est une publication de developpez.com

Dans l'image ci-dessus, nous retrouvons les diffrents Voyons le rsultat obtenu dans l'image ci-dessous : champs que nous souhaitons intgrer dans notre requte. 1. Nous remarquerons au passage les jointures qui nous indiquent qu'une intgrit rfrentielle a t applique lors de la cration des relations. 1) (Voir ci-dessus : Les remarques sur la requte (Lien 128)) 2. Nous affectons les cls de tri comme indiqu prcdemment. Voyons ci-dessous le rsultat obtenu : Ainsi pour trier suivant un ordre particulier tout en prservant une structure de requte, il suffira de rpter les champs cls dans l'ordre hirarchique souhait et de dsactiver l'affichage de ceux-ci. 6. IMPRIMER LE RSULTAT DE LA REQUTE 6.1. Un peu de mise en forme Bien que nous ayons appliqu les contraintes de tri, il semblerait que le rsultat ne soit pas trs probant. En effet, la premire rgle impose tait : Trier par catgorie. En observant le rsultat, la requte retourne les enregistrements tris sur le titre. En fait, Access lit les cls de tri de la gauche vers la droite. Ainsi les cls sont appliques dans l'ordre suivant : 1. Titre ; 2. Nom de l'auteur ; 3. Genre ; 4. Catgorie . Or nous avons une organisation respecter : Ce Catalogue sera tri par Catgorie, Genre, Nom de l'auteur, Titre Il faut donc mettre les champs dans l'ordre des cls que l'on souhaite appliquer mais cela va bouleverser l'ordre des champs dans la requte. Pour viter ce souci, nous allons redessiner notre requte. Voyons ci-dessous la nouvelle organisation : Attention !!! Quelle que soit la version, toute application de mise en forme s'appliquera l'ensemble de la feuille de donnes. Nanmoins, un petit progrs avec Access 2007, nous pourrons faire une mise en forme par requte. 6.1.1. Versions antrieures 2007 Bote de dialogue :

Rsultat obtenu :

Je ferai trois remarques propos de la structure de la requte ci-dessus. 1. Les champs correspondant aux cls de tri ont t doubls la fin de la structure de la requte en respectant l'ordre hirarchique souhait ; 2. La mention Croissant a t retire sous les trois champs prcdents ; 3. La mention Croissant a t ajoute sous les nouveaux champs insrs et j'ai dsactiv l'option Affichage.

Aprs avoir excut la requte, cliquez dans le menu FORMAT puis sur la commande Feuille de donnes... Dans la bote de dialogue, cliquez dans l'option correspondant au type de bordure souhaite. 6.1.2. Version Access 2007 Dans l'onglet Accueil on dcouvre deux outils qui vont nous permettre de mettre en forme rapidement le rsultat afin de faire une impression correcte sans devoir se lancer dans la conception d'un tat.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 56

Menu :

Rsultat obtenu :

Tout d'abord l'onglet "Marges". Pour cette bote de dialogue, je ferai deux remarques : 1. les marges sont indiques en millimtres ; 2. l'option indique par la loupe sert imprimer le contenu sur un papier primprim. 2) Ceci ne nous proccupe pas pour l'instant.

Dans le groupe Police, cliquez sur l'outil Quadrillage et choisissez le type de bordures appliquer. Menu :

Puis l'onglet "Pages". Comme prcdemment deux remarques s'imposent pour cette bote de dialogue : 1. par dfaut l'orientation "Portrait" est active. 2. il est possible de choisir une imprimante spcifique. Nous ne pourrons pas alterner deux couleurs comme dans Access 2007. Rsultat obtenu : 6.2.2. Version Access 2007

Dans le groupe Police, cliquez sur l'outil Autres couleurs d'arrire-plan/remplissage et choisissez dans la palette la Pour avoir accs l'aperu avant impression, il faut cliquer couleur appliquer. Cet outil va faciliter la mise en sur le bouton Office. vidence des lignes en appliquant une couleur alternative Dans la fentre affiche, cliquez 1. Imprimer ; sur deux lignes. 2. Aperu avant impression. 6.2. Mise en Page et Impression Access affiche alors la fentre ci-dessous qui nous Aprs avoir prpar la mise en forme, nous allons faire un permettra en quelques clics de mettre en page notre peu de mise en page. document. 6.2.1. Versions Antrieures 2007 Cliquez sur le menu FICHIER puis sur la commande Mise en Page Une bote de dialogue deux onglets s'affiche.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 57

Cette image nous indique cinq repres. 1. Permet de changer l'orientation du document l'impression (le logo nous indique la signification des expressions Portrait ou Paysage). 2. Permet de choisir la faon dont l'aperu doit afficher les pages imprimer l'cran (donne une vue d'ensemble du rsultat imprim). 3. Permet de choisir des marges prdfinies. 4. Affiche la bote de dialogue de mise en page afin de personnaliser les marges (attention, les marges sont indiques en millimtres). 5. Lance l'impression.

remarquerez alors que le signe + se transforme en signe -. Il suffit alors de cliquer pour faire un zoom arrire. 7. CONCLUSION Ce premier volet vous permet donc de crer vos requtes, de les trier et d'imprimer le rsultat sans vous lancer dans la gnration d'un tat. Dans le second volet nous aborderons l'utilisation des oprateurs dans les critres de slection. 8. TLCHARGEMENT

Vous pouvez tlcharger la base Bouquins afin de vous Dans la loupe, vous pouvez remarquer que le curseur s'est amuser faire quelques requtes sans risque : Lien 129. transform en loupe contenant un signe +. Il vous suffit de cliquer sur un point de l'aperu pour Retrouvez l'article de Jean Ballat en ligne : Lien 130 provoquer un zoom avant partir de ce point. Vous

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 58

C/C++
Tutoriels et articles
Bien dbuter en C++ Vous souhaitez apprendre le C++ mais ne savez pas comment vous y prendre, par quoi commencer ? Cet article est fait pour vous ! Des outils les plus adapts jusqu'aux meilleures ressources pour apprendre, cet article vous donnera toutes les pistes ncessaires pour effectuer un apprentissage correct du C++.
1. Qu'est-ce que le C++ ? Le C++ est un langage de programmation trs rpandu et trs utilis : on s'en sert pour raliser des programmes embarqus dans des appareils mobiles comme pour des jeux vido, des logiciels de gestion de donnes comme des compilateurs pour d'autres langages de programmation. Le C++ est un langage o l'on peut plus ou moins tout faire, et de diffrentes faons, ce qui fait sa puissance mais en le rendant de fait plus difficile apprendre. Accelerated C++ (Lien 134) de Koenig & Moo pour une introduction rapide ou C++ Primer, 4e dition (Lien 135) pour une introduction plus souple. 3. Les cours en ligne sur le C++ Bien dbuter en C++

Il y a un certain nombre de cours en ligne de bonne qualit : Lien 136. Certains utilisent l'approche historique : on apprend le C++ en tant que sorte "d'volution" du C, qui n'est plus l'approche apprcie aujourd'hui. De plus, un C'est au dbut des annes 80 que Bjarne Stroustrup a cours, aussi bon soit-il, ne remplacera pas un bon livre. invent le "C with classes" : ce moment-l, il ne s'agissait que d'un C auquel on avait rajout des classes et Deux des cours hbergs sur Developpez sont assez de l'hritage. Depuis plus de 20 ans, le langage C++ a complets, malgr le fait qu'ils utilisent l'approche normment volu et il a t normalis. Aujourd'hui, C et historique (ce qui vous demandera de garder un certain C++ sont deux langages trs, trs diffrents bien qu'ils recul par rapport aux pratiques du C qu'ils peuvent partagent un peu d'histoire. C'est pourquoi dans cette page reprendre) : le mgacours de Christian Casteyde nous vous proposons des ressources qui vous permettront (Lien 137) ainsi que Penser en C++ (qui est la traduction d'apprendre le C++ "moderne", et non plus en tant que d'un livre) de Bruce Eckel (Lien 138). Je recommanderais langage qui hrite du C avec un apprentissage du C au personnellement Penser en C++ que je trouve lgrement pralable. En effet, il est mme dconseill pour un plus correct et prcis, mais ces deux cours vous formeront dbutant d'apprendre le C avant le C++ si c'est pour trs convenablement aux bases du C++, vous permettant apprendre le C++ au final. de vous reposer sur de bonnes bases pour la suite de votre apprentissage. Le C++ est un langage multiparadigmes : objet, fonctionnel, gnrique sont trs communs en C++. Il est Pour terminer, quelles que soient les sources o vous d'une richesse incroyable mais il faut connatre au mieux puiserez vos informations, il vous faudra garder un certain les rgles du jeu pour crire des logiciels solides, que l'on recul et garder le meilleur de chacune car La vrit n'est pourra faire voluer facilement. nulle part. 2. Les livres C++ Il n'existe pas un livre C++ qui convient tous les profils, en revanche, nous vous en prsentons ici selon diffrents critres, afin de choisir celui qui vous conviendra le mieux et qui rendra votre apprentissage le plus efficace possible. Vous trouverez une liste de livres C++ sur la page livres C++ : Lien 131. Si vous n'avez jamais programm avant, ou presque pas, nous vous conseillons C++ je me lance (Lien 132) de Francis Glassborrow, bien qu'il date un peu il s'avre trs efficace pour les dbutants en programmation. Il se compltera ensuite trs bien avec un ouvrage de rfrence sur le C++. Programmation - Principes et pratique avec C++ (Lien 133) de Bjarne Stroustrup est un excellent livre pour apprendre programmer que vous soyez grand dbutant ou ayez un niveau intermdiaire. Si vous avez dj programm et que vous lisez l'anglais, vous pouvez vous tourner vers 4. Ce n'est pas suffisant ? Non, un cours et/ou un livre sur le C++ ne sont pas suffisants. En effet, ces derniers rpondent au problme du "comment" (comment crire un logiciel qui fait ceci ou cela), alors qu'il y a aussi le problme du "pourquoi". Il vous faudra imprativement, si vous tes un dbutant total en programmation, vous munir d'un ou plusieurs ouvrages et/ou cours sur : l'algorithmique et les structures de donnes : il vous faudra souvent, lorsque vous programmerez, stocker des donnes de manire intelligente et efficace, mais surtout approprie l'usage qui en est fait. Connaitre les structures de donnes les plus utilises ainsi que leurs caractristiques est un lment trs important. De mme, connatre les bases de l'algorithmique (variables, boucles, complexit, invariants...) est tout aussi ncessaire pour que vous criviez de bons programmes. Vous pouvez vous rfrer la page Algorithmique pour ce faire : Lien 139 ; la conception logicielle : il vous faudra savoir
Numro HS 2 Hors srie spcial rentre Page 59

Developpez Magazine est une publication de developpez.com

Par ailleurs, c'est une mauvaise ide de se lancer dans le C++ en ayant comme objectif immdiat de programmer un clone du dernier jeu la mode. Bien qu'il y ait de fortes chances qu'il soit effectivement crit en C++, il a probablement demand des annes de travail des quipes 5. Les outils C++ de programmeurs C++ expriments. Il faut apprendre Le C++ existe depuis plus de 20 ans. Par consquent, il y a petit petit, mettre en application ce que l'on apprend, une quantit phnomnale d'outils pour crire du code C+ faire un effort de comprhension. +, le compiler, le dboguer, le documenter, l'analyser, etc. Voici donc les recommandations de l'quipe ce sujet. Ne 7. Les bibliothques sont prsents ici que les outils gratuits ; vous pouvez trouver une liste plus complte et incluant les produits Le C++ n'est pas comme le Visual Basic ou similaire : au payants sur la page outils : Lien 141. dbut, tout ce que vous aurez, c'est une console. De base, Environnement de dveloppement intgr en C++, on ne peut pas ouvrir une fentre ou envoyer un (compilateur + diteur de code source, au email. Il faut pour cela faire appel ce que l'on appelle des minimum, qui vous mche le travail dont vous bibliothques. Ce sont des ensembles de fonctions et n'avez en gnral pas vous soucier) : Microsoft classes crites en C++ qui vous permettront d'effectuer des Visual C++ Express (Windows seulement) tches prcises. Nous vous recommandons aussi de faire (Lien 142) ou Code::Blocks (Windows, Linux, l'effort de vous concentrer sur le langage pendant un moment avant de vouloir crer des applications 3D ou Mac) (Lien 143). diteur de texte (permet simplement d'crire du autres clients de messagerie instantane... Car code, souvent avec de la coloration syntaxique) : gnralement ces bibliothques sont crites par des Notepad++ (Windows) (Lien 144), diteurs de personnes exprimentes et il n'est pas trivial de s'en servir texte prfournis comme Emacs, VI(M), Kate, correctement, malgr les documentations qui les accompagnent. Une fois que vous aurez un niveau Gedit (Linux - selon la distribution). Compilateur (transforme du code C++ en code satisfaisant en C++, vous pourrez consulter la page comprhensible par votre ordinateur) : Visual C+ Bibliothques C++ (Lien 153) puis la page Cours sur les + (Windows) (Lien 145), MinGW (Windows) bibliothques C++ (Lien 154) pour vous former. (Lien 146), Intel C++ Compiler (Windows, 8. Je voudrais aller plus loin ! Linux) (Lien 147) ou g++ (Linux) (Lien 148). Dbogueur (permet d'inspecter en dtail Vous aimez le langage et voudriez comprendre plus en l'excution de vos programmes, trop peu utilis profondeur comment tout cela fonctionne ? Vous souhaitez par les dbutants bien que trs utile) : celui dcouvrir des techniques avances, faire en sorte que le intgr Visual C++ (Windows), GNU GDB langage n'ait plus de secrets pour vous ? Alors voici (Linux) (Lien 149). quelques liens qui vous aideront acqurir une Gnrateur de documentation (gnre un comprhension profonde du C++. ensemble de fichiers HTML depuis votre code ainsi que les commentaires qui l'accompagnent) : FAQ Doxygen (Lien 150). La F.A.Q C++ aborde galement un certain nombre de sujets avancs : Lien 151. Il vous est conseill, dans un premier temps, d'utiliser un La FAQ Comeau Computing, en anglais : diteur de code et le compilateur ct. En effet, cela vous Lien 155. vitera de nombreux problmes une fois que vous C++ FAQ Lite, en anglais (Lien 156), et sa entamerez des manipulations plus compliques que de traduction partielle : Lien 157. connatre, au moins dans les grandes lignes, le La FAQ de Bjarne Stroustrup, crateur du langage fonctionnement de la compilation d'un programme C++, (Lien 158) et plus gnralement sa page ddie les options essentielles du compilateur, etc. aux ressources sur le C++, en anglais : Lien 159. Articles 6. Il me reste des questions... Les tutoriels C++ abordent pour certains des Alors vous avez bien appris grce un bon livre et/ou un techniques et sujets assez avancs sur le C++ : bon cours, mais il vous reste des questions ? Dans ce cas, Lien 137. nous vous recommandons d'aller consulter la Foire Aux Artima > C++ Source : contient de nombreux Questions C++ (Lien 151) qui aborde des sujets divers et articles, en anglais, de grands noms du C++ sur varis propos du C++, depuis les petites astuces de base des sujets gnralement assez avancs : Lien 160. jusqu' des explications profondes sur les mcanismes du Dr Dobb's Journal > C++ : mme chose que le C++. Il y a galement de nombreux tutoriels sur le C++ prcdent : Lien 161. (Lien 136) qui abordent des aspects spcifiques afin de Voici de plus quelques livres qui dcortiquent certains combler les lacunes de certains cours ou livres sur des aspects du C++ de manire trs intressante et que nous points bien prcis du langage. Enfin, si vous n'avez vous recommandons. toujours pas trouv de rponse vos questions, n'hsitez

organiser intelligemment les diffrentes parties de vos programmes de sorte pouvoir facilement introduire des volutions dans ces derniers, par exemple. Pour ce faire, il y a galement une certaine connaissance acqurir et mettre en pratique. Vous pouvez vous rfrer la page Conception pour ce faire : Lien 140.

pas vous rendre sur le forum C++ (Lien 152), lieu d'entraide convivial, pour nous faire part de vos difficults et de vos questions.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 60

Livres deux paradigmes principaux de C++, la programmation oriente objet et la La srie Effective C++, More Effective C++ et programmation gnrique, s'avre puissante et Effective STL de Scott Meyers : elle aborde des efficace pour le dveloppement C++ quotidien. aspects-cls du langage C++, tels que la bibliothque standard, la programmation oriente Pour terminer, vous plonger dans du code crit par d'autres objet, les exceptions, etc. Le but est de montrer (expriments si possible) ne pourra vous tre que les erreurs ne pas faire et d'enseigner les bonnes bnfique, afin d'largir votre vision du C++, d'apprendre des petites techniques qui font la diffrence, etc. Regarder pratiques du C++. La srie Exceptional C++, More Exceptional C+ le code de bibliothques C++ ou bien de petits logiciels ou + and Exceptional C++ Style de Herb Sutter : jeux vous sera ainsi trs bnfique. sensiblement de mme nature que la srie 9. Conclusion d'ouvrages de Scott Meyers. C++ Coding Standards, de Herb Sutter et Andrei Vous avez dsormais toutes les cartes en main pour Alexandrescu : cet ouvrage enseigne les bonnes effectuer un apprentissage du C++ sur mesure, efficace. lignes de conduite en C++, sans trop rentrer dans Comme pour l'apprentissage de n'importe quel langage, les dtails comme cela est fait dans les deux sries nous vous conseillons de mettre en pratique autant que d'ouvrages ci-dessus. ncessaire pour votre comprhension. Enfin, n'oubliez pas Modern C++ Design de Andrei Alexandrescu et que le C++ est riche et par consquent complexe, donc C++ Templates : The Complete Guide de David peut-tre ressentirez-vous des difficults certains Vandevoorde et Nicolai Josuttis abordent la moments ; toutefois, cela fait sa force et c'est pourquoi il conception gnrique en C++ et vous prsentent est important de surmonter ces difficults. en profondeur les templates du C++. Multi-Paradigm Design for C++, de James O. Retrouvez l'article d'Alp Mestan en ligne : Lien 162 Coplien : montre comment la combinaison des Microsoft Visual C++ 2010 Express : Tlchargement, installation et configuration

Microsoft Visual C++ 2010 Express : Tlchargement, installation et configuration Ce tutoriel prsente la procdure d'installation et de configuration de Visual C++ Express Edition 2010, l'environnement de dveloppement C++ gratuit de Microsoft. Poursuivant la mme politique de mise disposition d'une version gratuite, la sortie de Visual Studio 2010 s'est accompagne des versions Express : Visual C++ 2010, Visual Basic 2010, Visual C# 2010, Visual Web Developer 2010 et Visual Studio 2010 Express for Windows Phone CTP. Nous abordons ici l'installation de Visual C++ Express 2010. Visual C++ Express 2010 constitue un environnement de dveloppement complet en C et C++.
1. Avant-propos Apparues en 2005, les versions Express de Visual Studio tendent la gamme des environnements de dveloppement proposs par Microsoft. Gratuites et disponibles pour diffrents langages, elles offrent un environnement de dveloppement suffisamment mature pour des projets personnels ou semi-professionnels. Ainsi, la sortie de Visual Studion 2010 s'est tout naturellement accompagne de celle de Visual C++ Express 2010. Bien sr, le studio est moins complet que les versions payantes, mais le compilateur est rput tre le mme et, de toute faon, reste un bon outil de dveloppement sur PC Windows. Vous trouverez un tableau des diffrentes versions sur le site de Microsoft : Lien 163. 2. Installer Visual C++ Express 2010 2.1. Tlchargement Visual C++ Express est disponible au tlchargement sur le site de Microsoft : Lien 164. Pour raliser cette prsentation, nous avons tlcharg la version anglaise de Visual C++ Express 2010. Notre point de dpart est par consquent : vc_web.exe ! 2.2. Installation L'installation peut dmarrer en excutant le fichier que nous venons de tlcharger : double-cliquez sur vc_web.exe. Ce petit fichier de 3 Mo n'est pas encore l'installateur proprement parler. Il dclenche le tlchargement des composants ncessaires l'installation du produit :

Une fois ces premiers tlchargements termins, un assistant va nous guider tout le long de l'installation :

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 61

Aprs avoir cliqu sur suivant, nous arrivons sur les termes du contrat de la licence :

Microsoft Windows Installer 4.5. Update (x86) Windows XP ; .NET Framework 4 Multi-Targeting Pack ; Microsoft Visual C++ 2010 Express ; Microsoft SQL Server Compact 3.5 SP2 (x86) ENU ; Microsoft SilverLight ; Microsoft Help Viewer 1.0 x86.

Si d'aventure vous souhaitez dsinstaller la version Visual C++ Express Edition 2010, il faut veiller dsinstaller ces diffrents produits partir du gestionnaire d'ajout et de suppression des programmes. Mais terminons d'abord cette Veillez bien lire les diffrents lments et en installation. comprendre la teneur. Ceci fait, indiquez-le l'assistant et Une fois l'tape prcdente franchie, la procdure se passez l'tape suivante : dcompose en deux phases. Au dpart, l'ensemble des composants est tlcharg :

Lors de l'installation de Visual C++ Express 2010, il vous est propos d'installer galement Microsoft Silverlight et Microsoft SQL Server 2008 Express Service Pack 1. Nous avons choisi de ne pas installer SQL Server mais d'installer Silverlight. Vous devez donc cocher la case correspondant Silverlight et dcocher celle de SQL Server. Il faut choisir maintenant le rpertoire de destination :

Selon le volume total de donnes tlcharger et le dbit de votre liaison Internet, ce tlchargement peut tre plus ou moins long. La petite barre situe gauche de la liste indique les lments dj tlchargs (petite coche verte), l'lment en cours de tlchargement (la flche bleue) et les lments restant tlcharger (les deux points gris) :

Outre le rpertoire d'installation, cette bote de dialogue nous donne deux informations intressantes. D'abord, le volume de donnes tlcharges : ici un peu plus de 150 Mo. Nous allons donc devoir faire preuve de plus ou moins de patience selon la qualit de la connexion Internet... Ensuite, la liste dtaille explicitement tous les composants ncessaires au fonctionnement de Visual C++ Express 2010. Cette liste dpend des lments ventuellement dj prsents. Pour votre installation, cette liste peut varier puisqu'elle est directement lie la configuration de votre poste. Ici, nous sommes parti d'un PC neuf sur lequel tout ou presque tait tlcharger et installer. Par consquent, ce sont pas moins de dix composants qui sont traits : Microsoft Application Error Reporting ; VC 9.0 Runtime (x86) ; Microsoft .Net Framework 4 ; Microsoft Windows Installer 4.5 (x86) - Windows XP ;

Une fois les tlchargements des diffrents composants termins, l'installation commence. La mme fentre d'avancement devrait viter le dpaysement :

Selon votre environnement, certains composants peuvent ncessiter le redmarrage du systme pour valider leur installation :

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 62

Puis voil la premire page affiche : Cliquez simplement sur la demande de redmarrage. L'installateur arrte et redmarre le systme. cette reprise, l'installation repart par ce message :

ce moment de l'installation, Visual C++ Express 2010 n'est valide que pour 30 jours. Pour prenniser cette Puis l'installation se poursuit avec la fentre d'avancement installation et pouvoir bnficier de cet outil sans dure de limitation, vous devez vous enregistrer auprs de maintenant bien connue : Microsoft. Cet enregistrement est gratuit et n'aboutit pas remplir votre bote aux lettres de publicit. Allez dans le menu Help (Aide) et choisissez l'option d'enregistrement du produit :

Une fois la liste des composants grene, l'installation de Une bote de dialogue vous invite alors saisir une cl d'enregistrement. Pour l'obtenir, il faut appuyer sur le Visual C++ Express 2010 se termine : bouton ddi cet effet :

3. Premier lancement et enregistrement Il est temps de lancer Visual C++ Express 2010. L'icne peut se trouver sur votre bureau, sur la barre de lancement rapide ou dans le menu dmarrer. Si vous ne la trouvez pas, le programme de lancement se trouve (en fonction du rpertoire d'installation) en suivant ce chemin : C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE. L'excutable lanant le studio de dveloppement est VCExpress.exe.

Votre navigateur internet s'ouvre alors sur la page d'enregistrement :

Vous vous connectez avec votre identifiant MSN. Si vous Le dmarrage de Visual C++ Express 2010 est lgrement n'en avez pas, vous pouvez en crer un. plus lent que son prdcesseur Visual C++ Express 2008 mais cela reste trs raisonnable. Cela commence par Une fois connect, le site vous fournit votre identifiant. Slectionnez-le et copiez-le dans le presse-papier : l'affichage de l'image suivante :

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 63

4.3. Page d'accueil La page affiche au dmarrage de Visual C++ Express 2010 peut tre modifie :

Il ne vous reste plus qu' le coller dans la zone d'dition demandant la cl d'enregistrement et valider :

4.4. Rpertoire des projets Dans l'onglet Gnral des options de configuration pour les projets et solutions, vous pouvez spcifier le rpertoire o Visual C++ Express 2010 doit crer ceux-ci : Un message vient vous confirmer de la russite de l'enregistrement :

4. lments de configuration 4.5. Configuration des rpertoires des bibliothques 4.1. Configuration basique/expert La configuration des rpertoires de recherche des fichiers Premire surprise : au premier lancement, le menu de d'en-ttes (.h) pour les bibliothques tierces ne peut plus se Visual C++ Express 2010 semble bien allg par rapport faire au niveau global de Visual C++ Express 2010 mais se aux versions prcdentes. L'I.D.E. propose de fonctionner situe dsormais au niveau projet : en mode basic ou en mode expert. Pour faciliter la configuration, positionnons-nous en mode expert :

Voyons donc comment crer un nouveau projet. 4.2. Sauvegarde des paramtres de configuration Il est possible de spcifier le rpertoire et le fichier o sont sauvegards les paramtres de configuration : Retrouvez la suite de l'article de 3DArchi en ligne : Lien 165

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 64

Qt
Tutoriels et articles
Dbuter dans la cration d'interfaces graphiques avec Qt 4 Ce tutoriel fournit une introduction la programmation d'interfaces graphiques (IHM, interface homme-machine) utilisant la bote outils Qt. Il ne couvre pas tout ; l'accent est mis sur la philosophie de la programmation IHM, et les fonctionnalits de Qt sont introduites au fur et mesure. Certaines fonctionnalits, bien qu'elles soient souvent utilises, ne sont pas couvertes par ce tutoriel d'introduction Qt.
1. Prsentation Ce tutoriel fournit une introduction la programmation d'interfaces graphiques (IHM, Interface Homme-Machine) utilisant la bote outils Qt. Il ne couvre pas tout ; l'accent est mis sur la philosophie de la programmation IHM, et les fonctionnalits de Qt sont introduites au fur et mesure. Certaines fonctionnalits, bien que souvent utilises, ne sont pas couvertes par ce tutoriel d'introduction Qt. 1.1. Installer Qt La meilleure manire d'installer Qt est d'utiliser le Qt SDK. Vous pouvez le tlcharger pour votre plateforme sur le site de Nokia : Lien 170. Ainsi, vous aurez une installation complte de Qt, ce qui comprend toutes les bibliothques qui constituent Qt, un compilateur (GCC/MinGW) et un environnement de compilation (Qt Creator). Dbuter dans la cration d'interfaces graphiques avec Qt 4

Le premier chapitre commence avec un programme 2. Hello World minimal de type hello world et les suivants Sources : Lien 171. introduisent de nouveaux concepts, jusqu'au chapitre 14, o le hello world du premier chapitre va se transformer Fichiers en un jeu de 650 lignes de code. tutorials/tutorial/t1/main.cpp tutorials/tutorial/t1/t1.pro Si vous dbutez compltement avec Qt, commencez par lire Comment apprendre Qt si vous ne l'avez pas dj fait : Ce premier programme est un simple exemple de Hello World. Il contient juste le minimum pour crer une Lien 166. application Qt. Voici un aperu du programme : Le code source du tutoriel est situ dans le rpertoire examples/tutorials/tutorial de Qt 4.4. Pour les autres versions, vous pouvez tlcharger les sources sous la forme d'une archive RAR (Lien 167) ou TAR.BZ2 (Lien 168). Chapitres : 1. hello world ; 2. terminer proprement l'application ; 3. valeurs usuelles ; 4. soyons widgets ; 5. les widgets ; 6. construire des widgets en vrac ! 7. une chose mne une autre ; 8. prparer le champ de bataille ; 9. avec un canon, on peut tout faire ; 10. doux comme un agneau ; 11. tire-lui dessus ! 12. accrochons des briques en l'air ; 13. game over ; 14. face au mur. Ce petit jeu ne ressemble pas beaucoup aux applications IHM modernes. Il utilise quelques techniques IHM, mais nous vous recommandons, quand vous aurez bien travaill avec lui, de jeter un il l'exemple de l'Application (Lien 169), qui prsente une petite application IHM, avec des menus, des barres d'outils, une barre de statut, et bien d'autres encore. Et voil le code source complet de l'application :
#include <QApplication> #include <QPushButton> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hello world!"); hello.show(); return app.exec(); }

2.1. Analyse du code ligne par ligne


#include <Qapplication>

Cette ligne inclut la dfinition de la classe QApplication. Il doit y avoir une instance de QApplication dans toute application qui possde une IHM avec Qt. QApplication gre diffrentes ressources au niveau de l'application, comme la police de caractres par dfaut ou le curseur.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 65

#include <QPushButton>

Cette ligne inclut la dfinition de la classe QPushButton. Pour chaque classe faisant partie de l'API publique de Qt, il y a un fichier d'en-tte de mme nom contenant sa dfinition. QPushButton est un bouton d'interface graphique que l'utilisateur peut presser et relcher. Il gre lui-mme son propre look and feel, comme n'importe quel QWidget. Un widget est un composant de l'interface graphique qui peut grer une entre de l'utilisateur et dessiner. Le programmeur peut changer tout le look and feel du widget ou seulement une partie de celui-ci (la couleur, par exemple), ainsi que son contenu. Un QPushButton peut afficher du texte ou un QIcon.
int main(int argc, char *argv[]){

l'application. QCoreApplication est une classe de base de QApplication. Elle implmente les fonctionnalits non lies l'IHM et peut tre utilise pour le dveloppement d'applications sans IHM. Dans QCoreApplication::exec(), Qt reoit et traite les vnements systme et les renvoie aux widgets appropris. Vous devriez maintenant compiler et lancer le programme. 2.2. Les variables d'environnement Si vous utilisez la ligne de commande pour dvelopper des applications Qt, vous devez vous assurer que les librairies et les excutables de Qt sont accessibles votre environnement en ajoutant le chemin du rpertoire bin de Qt votre variable PATH. Cette opration est dcrite dans les instructions d'installation de votre plate-forme. Sous Windows, ceci est automatique si vous utilisez la fentre de commande depuis le menu Dmarrer > (Tous les) Programmes > Qt. Si vous utilisez la fentre de commande depuis Dmarrer > Excuter > command ou cmd, vous devrez paramtrer vous-mme la variable PATH ou utiliser le script du Qt SDK qtenv.bat, comme dcrit ciaprs.

La fonction main() est le point d'entre du programme. Le plus souvent, l'utilisation de cette fonction ne ncessite que quelques initialisations avant de passer la main la bibliothque Qt, qui indique ensuite au programme, par le biais d'vnements, les actions demandes par l'utilisateur. Le paramtre argc est le nombre d'arguments de la ligne de commande et argv est le tableau contenant les arguments 2.3. Compiler l'application de la ligne de commande. C'est une proprit standard du Les exemples de ce tutoriel sont situs dans le rpertoire C++. examples/tutorials/tutorial de Qt. Si vous avez install Qt partir d'un excutable, les exemples ont galement t QApplication app(argc, argv); installs. Si vous avez compil Qt vous-mme, les app est l'instance de QApplication de ce programme. Elle exemples ont t compils en mme temps. Dans les deux est cre ici. Les arguments argc et argv sont passs au cas, en modifiant et en recompilant vous-mme ces constructeur de QApplication pour qu'il puisse traiter exemples, vous en apprendrez beaucoup sur la faon certains arguments de ligne de commande standard d'utiliser Qt. Dans le cas o vous auriez copi le(s) (comme -display sous X11). Tous les arguments de ligne fichier(s) .cpp et .h d'un exemple dans un autre rpertoire de commande reconnus par Qt sont enlevs de argv, et pour y apporter vos modifications, la prochaine tape sera argc est dcrment en consquence. Voir la de crer un makefile pour Qt dans ce rpertoire. La documentation de QApplication::arguments() pour plus de cration d'un makefile pour Qt utilise la commande qmake, dtails : Lien 172. L'instance de QApplication doit tre un outil de compilation fourni avec Qt. Pour crer un cre avant toute utilisation d'une quelconque makefile, lancez les deux commandes suivantes dans le rpertoire contenant vos sources modifies : fonctionnalit d'IHM de Qt.
QPushButton hello("Hello world!"); qmake -project qmake make # ou nmake

Aprs la cration de la QApplication, voil la premire ligne de code lie l'IHM : un bouton est cr. Le bouton affiche le texte "Hello world!". Comme, dans le constructeur de QPushButton, on n'a pas spcifi un second argument pour prciser la fentre parente du bouton, ce bouton sera lui-mme une fentre, avec son propre cadre et sa barre de titre. La taille du bouton est dtermine par dfaut. On pourrait appeler QWidget::move() pour assigner un emplacement spcifique au widget, mais nous laissons ici le systme choisir une position.
hello.show();

La premire commande ordonne qmake de crer un fichier de projet (.pro). La seconde commande ordonne qmake d'utiliser le fichier .pro pour crer un makefile adapt la plateforme et au compilateur. Vous n'avez plus qu' lancer make (nmake si vous tes sous Visual Studio) pour compiler le programme et vous pourrez ensuite lancer votre premire application Qt ! Il n'y a pas d'emplacement spcifique pour vos fichiers, c'est vous de le dterminer en fonction de votre systme, qmake s'y adaptera. Il suffit de le lancer la racine de vos sources.

Un widget n'est jamais visible quand on le cre. Il faut Il est possible que vous deviez spcifier une variable appeler QWidget::show() pour le rendre visible. d'environnement, QMAKESPEC, qui correspond votre plateforme (le triplet systme d'exploitation, compilateur, return app.exec();} bitness). De mme, il est probable que vous deviez modifier votre C'est ici que le main() passe le contrle Qt. PATH avant d'appeler qmake, sous peine d'erreurs, sous QCoreApplication::exec() finira en mme temps que Windows. Si vous utilisez le Qt SDK, vous devriez utiliser
Numro HS 2 Hors srie spcial rentre Page 66

Developpez Magazine est une publication de developpez.com

le script qtenv.bat contenu dans le dossier Dossier Vous pourrez trouver l'excutable release dans le dossier d'installation du Qt SDK\bin, soit gnralement un chemin release la racine de vos sources. du genre C:\Qt\2010.05\bin. Ce script dfinira aussi la variable QMAKESPEC en fonction de ce qui est 2.5. Exercices ncessaire pour votre environnement. Essayez de dimensionner la fentre. Si vous tes sous X11, essayez de lancer le programme avec l'option -geometry 2.4. Lancer l'application (par exemple, -geometry 100x200+10+20). Quand vous lancerez cet exemple, vous verrez une petite fentre affichant un seul bouton. Sur le bouton, vous Retrouvez la suite de l'article de nokia traduit par l'quipe pourrez lire le fameux : "Hello world!". Qt de Developpez.com en ligne : Lien 173 PySide Simplissimus

PySide Simplissimus PySide Simplissimus : des tutoriels d'une dizaine de minutes pour un dbutant par un dbutant.
1. Les articles originaux 3. Prrequis

Le Qt Developer Network est un rseau de dveloppeurs L'exemple le plus important quand on apprend un langage utilisant Qt afin de partager leur savoir sur ce framework. est l'cul Hello World . Il peut aussi occasionnellement Vous pouvez le consulter en anglais : Lien 174. tre le plus difficile de tous, s'il n'y a pas de tutoriel dj prt. Mme pour un Hello World, il y a des prrequis ! Nokia, Qt, Qt Quarterly et leurs logos sont des marques Tout d'abord, on doit installer PySide. dposes de Nokia Corporation en Finlande et/ou dans les autres pays. Les autres marques dposes sont dtenues 3.1. Installer PySide par leurs propritaires respectifs. Avant de jouer avec PySide, il faut installer ce qui suit : Qt : Lien 186 ; Cet article est la traduction de PySideSimplicissimus : 10 Python : Lien 187 ; min newbie to newbie Tutorials (Lien 175), PySide : Lien 188. PySideSimplicissimus Module 1 Prerequisites (Lien 176), Setting up PySide (Lien 177), Your first PySide Pour vrifier si PySide est bien install, entrez simplement application (Lien 178). cette commande dans une console Python : 2. Table des matires
import PySide

2.1. Prrequis

Si aucune erreur n'est retourne, vous devriez avoir install Avant de commencer programmer, il y a des prrequis. PySide avec succs et pouvez commencer dvelopper Dans cette section ddie, quelques liens pour aller plus avec Qt et Python. Il est possible aussi de vrifier la version de PySide : loin ainsi qu'un exemple Hello World. la suite sont proposs quelques petits exemples. import PySide moins que a ne soit prcis, ils devraient prendre une print PySide.__version__ dizaine de minutes. Cela pourrait prendre plus de temps, en fonction de divers facteurs, dont la connaissance de Le rsultat devrait tre quelque chose comme 1.0.0. PySide. 3.2. Hello World 2.2. Suite des tutoriels Une version de PySide tant installe sur votre ordinateur, Fermer : Lien 179 propos de : Lien 180 Montrer la licence : Lien 181 Combiner : Lien 182 Combinaisons alternatives : Lien 183 Combiner tout en un : Lien 184 Une application d'ingnierie (presque) pratique : Lien 185
#!/usr/bin/pythonimport sys from PySide.QtCore import * from PySide.QtGui import * app = QApplication(sys.argv) # Create a Label and show it label = QLabel("Hello World") label.show() Numro HS 2 Hors srie spcial rentre Page 67

vous pouvez commencer dvelopper des applications avec Qt en Python. Comme tout autre framework de programmation, commenons par le traditionnel Hello World. Voici un exemple simple de Hello World dans PySide :

Developpez Magazine est une publication de developpez.com

# Enter Qt application main loop app.exec_() sys.exit()

n'a pas besoin de lui passer des arguments, on peut le laisser tel quel. Aprs la cration de l'objet de l'application, on cre un objet QLabel. Il s'agit d'un widget qui peut prsenter du texte (simple ou riche, comme du HTML) et des images. Notez que, aprs la cration du label, on peut appeler la mthode show() qui va prsenter le label l'utilisateur.

Avec les applications desktop PySide, le fichier doit dbuter en important PySide.QtCore et PySide.QtGui. Ces classes contiennent les fonctions principales pour construire des applications PySide. Par exemple, PySide.QtGui contient des fonctions pour grer des widgets, alors que PySide.QtCore contient des mthodes pour grer des signaux et des slots et contrler l'application.

Finalement, on appelle app.exec_(), qui va entrer dans la boucle principale Qt et commencer excuter le code Qt. En ralit, c'est seulement partir de ce moment que le label est montr, mais ce point peut tre ignor pour le Aprs ces imports, on cre une QApplication, l'application moment. Qt principale. Comme Qt peut recevoir des arguments depuis la ligne de commande, on peut passer n'importe Retrouvez l'article de nokia traduit par Thibaut Cuvelier quel argument l'objet QApplication. Habituellement, on en ligne : Lien 189 PySide Simplissimus : fermer

PySide Simplissimus : fermer Ceci ne vous prendra pas plus de cinq minutes : le but de ce programme est de faire en sorte qu'un clic sur le pushButton arrte l'excution de ce programme. Comme toujours, on commence dans le Qt Designer. On appelle le programme d'une manire plutt fleurie, quitter, ainsi le designer cre une MainWindow avec un bouton qui est enregistr en tant que quitter.ui.
1. L'article original Le Qt Developer Network est un rseau de dveloppeurs utilisant Qt afin de partager leur savoir sur ce framework. Vous pouvez le consulter en anglais : Lien 174.
frame = MainWindow() frame.show() app.exec_()

Juste pour que ce soit difficile, on a utilis une procdure alternative pour crer une forme lisible par Python du Nokia, Qt, Qt Quarterly et leurs logos sont des marques fichier ui_quitter.py. Le nom de fichier est pratique, car il dposes de Nokia Corporation en Finlande et/ou dans les suffit de se souvenir d'un seul nom : quitter. autres pays. Les autres marques dposes sont dtenues par leurs propritaires respectifs. Note : si vous n'avez pas les setuptools installs, vous recevrez cette erreur lors de l'excution de pyside-uic : Cet article est la traduction de Close : Lien 190. 2. Fermer Le fichier Qt Designer est disponible : Lien 191. On peut le transformer en fichier Python excutable :
pyside-uic quitter.ui -o ui_quitter.py Traceback (most recent call last): File "c:\Python26\Scripts\pyside-uic-script.py", line 5, in <module> from pkg_resources import load_entry_point ImportError: No module named pkg_resources

Les setuptools sont librement disponibles : Lien 192. En lanant le programme, vous trouverez qu'il peut tre ferm de la manire habituelle par la croix ou bien en cliquant sur le bouton. Voici une image de la GUI :

Une fois le code gnr, on peut l'utiliser :


#!/usr/bin/env python # quitter.py - provide a button to quit this "program" import sys from PySide.QtGui import QMainWindow, QPushButton, QApplication from ui_quitter import Ui_MainWindow class MainWindow(QMainWindow, Ui_MainWindow): def __init__(self, parent=None): super(MainWindow, self).__init__(parent) self.setupUi(self) if __name__ == '__main__': app = QApplication(sys.argv)

Maintenant, regardons de plus prs le code. O est le code qui fait que le bouton ferme le programme ? Ce n'est srement pas dans le listing. La raison de cette absence est qu'il a t cr par Qt Designer, qui possde un diteur de signaux et de slots. On l'a utilis de manire furtive pour connecter le signal PushButton.click() au slot MainWindow.close(). Il est inclus dans le fichier quitter.ui et, suite la conversion,
Numro HS 2 Hors srie spcial rentre Page 68

Developpez Magazine est une publication de developpez.com

dans ui_quitter.py. Depuis ce fichier, on importe la classe Ui_MainWindow, l'un des anctres de notre classe MainWindow. On utilise l'hritage multiple de Python pour faciliter l'utilisation des mthodes dans le module ui_quitter.py.

immdiatement au-dessus de MainWindow et ainsi l'arbre tout entier.

Vous remarquerez que la mthode init de MainWindow spcifie l'anctre None. C'est le genre d'indication que l'on donne PySide pour dire que MainWindow est bien la Il y a toujours d'autres manires de procder et on pourrait fentre principale du programme. viter le double hritage, mais pourquoi ne pas l'utiliser quand il est bien commode ? L'hrit creuse de plus en Retrouvez l'article de nokia traduit par Thibaut Cuvelier plus profondment dans l'hritage et initialise l'anctre en ligne : Lien 179 Les bases de PyQt

Les bases de PyQt Cet article est rserv aux dbutants. On va y dcouvrir ce qu'est PyQt, ce qu'il fait et les composants principaux qu'il vaut mieux connatre avant de l'utiliser.
1. Avertissement bien d'autres. Si vous tes intress par PyQt mais sans savoir ce qu'il en Des scripts pour les ressources, interfaces et traductions est, il est prfrable de lire l'introduction : Lien 193. sont aussi fournis, pour compatibilit avec son pendant C++. 2. Qu'est-ce que PyQt ? PyQt est un module Python qui permet d'accder la 4. Le module QtCore bibliothque Qt de Nokia. On peut l'importer directement : Il s'agit d'un framework applicatif multiplateforme : une mme application PyQt fonctionne sans problme sous OS X, Linux et Windows.
from PyQt4 import QtCore

Il contient toutes les classes essentielles et C'est aussi un gros module de plus de trois cents classes, multiplateformes qui forment le squelette de toute application PyQt. Elles vont des chanes de caractres la de six mille fonctions. gestion des processus, des entres et des sorties, ainsi que Il fournit un ensemble complet de classes utiles qui diverses structures de donnes. fournissent des interfaces pour l'accs aux fichiers, parser du XML, des structures de donnes et plus, ainsi que des Quelques exemples de classes : QString : elle stocke et manipule des chanes de outils comme Qt Designer, Qt Assistant et Qt Linguist caractres ; pour concevoir des interfaces, accder l'aider et faciliter QFile : elle effectue des oprations d'entre et de les traductions. sortie sur des fichiers ; QProcess : elle lance des programmes externes ; C'est donc un framework complet : il fournit des classes QRect : une classe gomtrique de rectangle ; qui grent les types basiques de donnes comme celles qui effectuent des tests unitaires. QDate : elle fournit des fonctions sur les dates. PyQt est dvelopp par Phil Thompson, chez Riverbank On peut videmment trouver la liste complte des classes Computing Limited : Lien 194. de QtCore : Lien 195. 3. Que comprend PyQt ? Les composants majeurs de PyQt sont : le module QtGui, pour tout ce qui concerne les GUI ; le module QtCore, pour tout ce qui ne concerne pas les GUI ; l'espace de noms Qt, pour les types et autres identifiants ; les outils Qt, pour d'autres tches varies. 5. Le module QtGui On peut l'importer directement :
from PyQt4 import QtGui

Il contient tous les lments GUI fournis par Qt, d'un simple label la complexe vue graphique. Tous les lments de GUI dans PyQt sont appels des widgets .

Quelques exemples : QLabel : un simple widget affichant une image ou Le paquet PyQt dans Python, une fois install, peut tre un texte riche ; facilement import : QLineEdit : une zone d'entre sur une ligne ; import PyQt4 QPushButton : un bouton standard qui peut tre press ; D'autres modules plus spcialiss sont aussi disponibles : QCheckBox : une simple case cocher, avec QtHelp, QtOpenGL, QtScript, QtXml, QtSql, QtTest et deux ou trois tats.
Numro HS 2 Hors srie spcial rentre Page 69

Developpez Magazine est une publication de developpez.com

QtGui tend de manire naturelle QtCore, en donnant chacune de ses fonctionnalits une interface graphique. On peut videmment trouver la liste complte des classes de QtGui : Lien 196. 6. L'espace de noms Qt On peut l'importer directement :
from PyQt4.QtCore import Qt

Sinon, il est accessible via l'espace de noms QtCore.Qt. Il contient tous les identifiants, aux objectifs divers, des comportements GUI pour la plupart. Ces constantes fournissent de multiples options utilisables pour dfinir le comportement d'un widget, sa position, etc.

Qt Linguist aide traduire les chanes des applications en diffrentes langues, fournissant ainsi une internationalisation facile d'un produit.

Quelques exemples : Alignment : pour aligner le texte sur un widget de diffrentes manires ; Axis : pour choisir l'axe X, Y ou Z pour une transformation ; BrushStyle : pour choisir un style de pinceau Tous ces outils sont installs avec le framework Qt, pas PyQt, qui ne fait que fournir des scripts pour les porter appropri ; UIEffect : pour dfinir des effets comme une Python. animation, un dgrad, etc. 8. Notes On peut videmment trouver la liste complte des La meilleure manire d'apprendre utiliser Qt est de identifiants de Qt : Lien 197. suivre la documentation, par exemple avec Qt Assistant, qui vient avec lui. Bien que prvue pour le C++, l'utilisation que l'on en fait en Python n'est pas trs Qt Designer est prvu pour concevoir des GUI et les diffrente. Qt n'est pas seulement partout sur toutes les sauvegarder dans un format XML (.ui), qui peut alors tre plateformes, il est aussi sur tous les langages, Ruby, Python, C++, Java et d'autres. converti en fichier source Python avec le script pyuic4. 7. Les outils de Qt Si vous voulez vous rfrer un livre, Rapid GUI Programming with Python and Qt, de Mark Summerfield (Lien 198) ou GUI Programming with Python: Qt Edition, de Boudewijn Rempt (Lien 199). Mon prfr, cependant, est C++ GUI Programming with Qt, de Jasmin Blanchette et Mark Summerfield (Lien 200). Bien qu'il soit en C++, il a une bonne approche. Retrouvez l'article de Harsh traduit par Thibaut Cuvelier Qt Assistant fournit toutes les rfrences de toutes les en ligne : Lien 201 classes avec recherche, ainsi que d'autres documents utiles sur la bibliothque Qt. Un outil trs utile pour un programmeur.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 70

Web smantique
Tutoriels et articles
Introduction au Web smantique Nous allons voir ici ce qu'est le Web smantique. Il faut savoir que ce domaine est tout neuf et encore trop peu connu. Je vais donc ici vous faire dcouvrir ce monde mystrieux.
1. Introduction ralit. Compte tenu de l'ambition d'un tel projet, cette ide suscite quelques rsistances et controverses qui sont Le Web smantique (plus techniquement appel le Web classiquement rencontres ds qu'on aborde des de donnes ) permet aux machines de comprendre la problmatiques lies au domaine de l'intelligence smantique, la signification de l'information sur le Web. Il artificielle. tend le rseau des hyperliens entre des pages Web classiques par un rseau de lien entre donnes structures Aprs cette confrence, mise part la mise en place des permettant ainsi aux agents automatiss d'accder plus recommandations ncessaires la construction des intelligemment aux diffrentes sources de donnes documents, le W3C nouvellement cr entame les contenues sur le Web et, de cette manire, d'effectuer des premires rflexions sur la mise en place du Web tches (recherche, apprentissage, etc.) plus prcises pour smantique. Ces rflexions aboutissent la publication les utilisateurs. Le terme a t invent par Tim Bernersd'un premier draft de recommandations sur le Web Lee, co-inventeur du Web et directeur du W3C, qui smantique en octobre 1997 et d'une seconde en avril supervise l'laboration des propositions de standards du 1998. Cette mme anne, Tim Berners-Lee publie un Web smantique. document sur les toutes premires moutures de ce qui sera plus tard appel le Web smantique. Ces moutures La plupart du temps, lorsque l'on prononce le terme de consistent mettre en place les diffrentes technologies du Web smantique, on parle des diffrentes technologies qui Web smantique. Dans ce document, il prsente le Web se cachent derrire. Parmi les plus connues, on peut citer smantique comme une sorte d'extension du Web des RDF (Ressource Description Framework) qui correspond documents, qui constitue une base de donnes l'chelle un modle d'information, et les formats d'changes de mondiale, afin que toutes les machines puissent mieux lier donnes en RDF pour communiquer entre diffrentes les donnes du Web. Cette feuille de route se matrialise applications (RDF/XML, RDF/JSON, N3, Turtle, Npar une reprsentation graphique, le layer cake , qui Triples et d'autres). Dans le domaine du Web smantique, montre l'agencement des diffrentes briques la smantique des donnes est dcrite par des ontologies technologiques du Web smantique. ce terme sera dfini plus loin dans l'article - avec des langages prvus pour fournir une description formelle de concepts, termes ou relations d'un domaine quelconque. Ces langages sont RDFS (Ressource Description Framework Schema) et OWL (Web Ontology Language). Il existe aussi des langages de description des donnes structures dans du XHTML afin que des outils effectuent un traitement automatique de ces diffrentes donnes. Ces langages sont RDFa et Microformat et, nouvellement arriv avec HTML 5, Microdata. Voici d'ailleurs un article qui vous introduit le langage RDFa (Lien 202) et un autre sur les Microdata (Lien 203). Ensuite, pour finir avec la liste des technologies, il existe un langage de requte, au mme titre que SQL pour les bases de donnes relationnelles, SPARQL, qui effectue des requtes mais sur layer cake des triplets RDF. Il en existe d'autres (RQL et RDQL), mais ils sont bien moins utiliss. Par ailleurs, en 1999, Tim Berners-Lee publie le livre Weaving the Web dans lequel il dresse un portrait du Web 2. Histoire du Web smantique et les pistes pour son avenir. Les ides du Web smantique n'en sont videmment pas absentes. C'est d'ailleurs cette En 1994, lors de la premire confrence WWW Genve, mme anne qu'il nona sa clbre citation : plus prcisment au CERN, a lieu l'annonce de la cration du W3C. C'est d'ailleurs cette priode que Tim BernersI have a dream for the Web [in which computers] become Lee dresse les objectifs du W3C et montre les besoins capable of analyzing all the data on the Web the content, d'ajouter de la smantique au Web futur. Il montre alors en links, and transactions between people and computers. A quoi les liens hypertextes ou, plus prcisment, la faon "Semantic Web", which should make this possible, has yet dont on met en relation les documents sur le Web est trop to emerge, but when it does, the day-to-day mechanisms of limite pour permettre aux machines de relier trade, bureaucracy and our daily lives will be handled by automatiquement les donnes contenues sur le Web la
Numro HS 2 Hors srie spcial rentre Page 71

Introduction au Web smantique

Developpez Magazine est une publication de developpez.com

machines talking to machines. The "intelligent agents" utilisateurs, sans qu'ils se doutent du danger que peut people have touted for ages will finally materialize. reprsenter cette action. J'ai fait un rve pour le Web [dans lequel les ordinateurs] deviennent capables d'analyser toutes les donnes sur le Web - le contenu, les liens et les transactions entre les personnes et les ordinateurs. Un Web smantique , qui devrait rendre cela possible, n'est pas encore sorti, mais, quand ce sera le cas, les mcanismes d'change au jour le jour, la bureaucratie et notre vie quotidienne seront traits par des machines qui parlent d'autres machines. Certains nous ont vant depuis des lustres les agents intelligents et cela va enfin se concrtiser. Citation provenant de : Lien 204 6. L'ontologie, outil principal du Web smantique 3. Objectifs du Web smantique Un des principaux objectifs du Web smantique est de permettre aux utilisateurs d'utiliser la totalit du potentiel du Web : ainsi, ils pourront trouver, partager et combiner des informations plus facilement. Aujourd'hui tout le monde est capable d'utiliser des forums, d'utiliser des rseaux sociaux, de chatter, de faire des recherches ou mme d'acheter diffrents produits. Nanmoins, il serait mieux que la machine fasse tout ceci la place de l'homme, car actuellement, les machines ont besoin de l'homme pour effectuer ces tches. La raison principale est que les pages Web actuelles sont conues pour tre lisibles par des tres humains et non par des machines. Le Web smantique a donc comme principal objectif que ces mmes machines puissent raliser seules toutes les tches fastidieuses comme la recherche ou l'association d'informations et d'agir sur le Web lui-mme. Nous allons dans cette partie expliquer de manire non technique ce qu'est une ontologie. 6.1. Dfinition L'ontologie est la base de ce que l'on appelle la reprsentation des connaissances. Ce domaine est n de la volont des chercheurs de reprsenter diverses connaissances du monde actuel, de faon ce qu'elles soient utilisables par des ordinateurs, pour qu'ils puissent effectuer des raisonnements sur ces connaissances. Ces connaissances sont exprimes sous forme de symboles auxquels on donne une smantique (un sens). Le Web smantique est aussi critiqu cause de sa lourdeur : les langages utiliss pour le Web smantique sont trs verbeux car drivs du XML et donc souvent pnible utiliser. De ce fait, l'criture d'ontologies est souvent trs problmatique car elle exige une spcialisation dans un domaine particulier et, lorsque l'on ne matrise pas ce domaine, elle devient trs difficile crer. Ainsi, certaines personnes disent qu'il est prfrable d'utiliser des words tags (ce sont une srie de mots cls qui permettent de qualifier une ressource) la place des ontologies.

Imaginons la problmatique suivante : vous voulez interroger une base de donnes contenant diverses ressources (textes, images, vidos...) et une requte (question ou mot(s) cl(s)), comment trouver les donnes 4. Le Web smantique et le Web 3.0 se trouvant dans cette base qui correspondent cette La communaut du Web dans son ensemble tendance requte ? dire que les deux termes " Web smantique " et " Web 3.0 " reprsentent peu prs le mme concept, si ce n'est pas totalement interchangeable. La dfinition continue de Par exemple tapez dans votre moteur de recherche prfr varier en fonction des gens avec qui vous parlez. L'avis les mots suivants : ordinateur portable puis laptop . gnral est que le Web 3.0 est trs certainement la Vous pouvez vous apercevoir que les rsultats ne sont pas prochaine grande rvolution, mais il se trouve que, pour le du tout les mmes, alors que, vu que les deux mots moment, ce ne sont que des spculations quant ce qu'il reprsentent la mme chose, on pourrait s'attendre pourrait tre. Il y aura encore de grosses amliorations, trouver les mmes rponses. mais en gardant la plupart des proprits du Web 2.0. Il y en a certains qui prtendent que le Web 3.0 sera plus applicatif et centrera ses efforts vers des environnements Que se passe-t-il ? En fait, le moteur de recherche compare plus graphiques, d'autres qui prtendent qu'il sera plus ax des mots sans prendre en compte leur smantique (sens). Il sur la recherche d'information gographique bases sur la excute uniquement une recherche strictement syntaxique golocalisation ou encore mme utiliser les nombreux et donc sans rflexion car ordinateur portable et progrs en intelligence artificielle. laptop reprsentent le mme concept (la mme chose), que nous appellerons maintenant des classes pour respecter la terminologie du Web smantique. Plus 5. Le Web smantique souvent critiqu prcisment, on peut dire que la relation de spcialisation Comme vous avez pu le deviner, le Web smantique sur les classes n'est pas gre. Par exemple, notebook permet tous d'en savoir plus sur les sujets qui les est une spcialisation de la classe gnrale laptop . intressent. Cela signifie a contrario que diverses Ainsi, pour raisonner, il ne faut plus se baser sur les mots institutions peuvent rcolter des informations sur vous mais sur les classes. Mais que signifie raisonner ? librement et donc constituer des dossiers. Ces institutions Raisonner c'est utiliser sa raison pour dmontrer quelque peuvent tre des agences de publicit, de scurit ou mme chose. C'est un terme trs souvent employ en intelligence des services de renseignements. Et ceci tout en restant artificielle. dans la lgalit car, dans 90 % des cas, ces informations sont mises en ligne volontairement ou non par les
Numro HS 2 Hors srie spcial rentre Page 72

Developpez Magazine est une publication de developpez.com

Illustration en comparant deux moteurs de recherche : Avec Orange :

Avec Google :

Maintenant admettons quelques rgles, logiques pour un humain sur ces classes et proprits : rgle 1 : si une classe "Male" appartient une proprit "brotherOf" avec une classe "Female" alors la classe "Female" appartient la proprit "sisterOf" avec la classe "Male" ; rgle 2 : rciproque de la rgle 1 ; rgle 3 : si une classe "Adult" appartient une proprit "parentOf" avec une classe "Human" alors la classe "Human" appartient la proprit "childOf" avec la classe "Adult" ; rgle 4 : rciproque de la rgle 3.

Vous pouvez donc voir que sur le moteur d'Orange, la premire occurrence est la rponse notre question et qu'ensuite il y a les rponses rsultant de la recherche syntaxique. Alors que sur Google il n'y a que la recherche syntaxique. Cette diffrence et tout simplement due l'utilisation d'ontologies de la part du moteur d'Orange.

De cette manire, on peut facilement imaginer toutes les rgles possibles entre ces proprits et classes. Pour finir prenons quelques instances : {Bart, Lisa, Homer}. On dit ensuite que l'instance "Bart" appartient la classe "Boy", "Lisa" appartient la classe "Girl" et "Homer" appartient la classe "Man". On dit ensuite que "Bart" est le frre de "Lisa" et que "Bart" et "Lisa" sont les enfants de "Homer" Ainsi pour rsoudre ce problme on construit ce que l'on avec nos proprits. appelle des bases de connaissances qui sont constitues : d'une ontologie : une collection de classes et de Notre ontologie ainsi construite, il nous est maintenant relations (que nous appellerons proprit pour les facile d'effectuer les requtes suivantes dessus : mmes raisons que concept) entre ces classes ; est-ce que Lisa est la sur de Bart ? de rgles : une expression de contraintes sur les est-ce que Homer est un parent de Lisa et Bart ? proprits et les classes de l'ontologie ; de faits : des instances de l'ontologie. Bien entendu cette ontologie est ridiculement petite et facile compare aux ontologies de domaines plus complexes. Mais, maintenant que vous savez ce qu'est une Faisons maintenant un petit exemple d'ontologie sur la ontologie, vous pouvez vous amuser continuer famille Simpson pour illustrer tout ceci. Tout d'abord les l'ontologie de la famille Simpson en ajoutant des concepts : {Human, Child, Boy, Girl, Male, Man, Female, proprits, des classes, des rgles et des instances. Woman, Adult} qui nous donne la reprsentation suivante 6.3. Quelques ontologies dj existantes entre ces classes : 6.2. Exemple de construction d'une ontologie Je vous donne ici une liste non exhaustive des ontologies existantes : FOAF : Lien 205 ; EVENT : Lien 206 ; DC : Lien 207 ; OAN : Lien 208 ; D2R : Lien 209 ; VCARD : Lien 210 ; CREATIVE COMMONS : Lien 211. 7. Conclusion Vous en savez maintenant beaucoup plus sur le Web smantique et j'espre que je vous ai donn envie d'en apprendre plus sur ce domaine encore trop mconnu. Retrouvez l'article de Julien Plu en ligne : Lien 212

Ensuite, occupons-nous des proprits : {relatedWith(Human, Human), siblingOf(Human, Human), sisterOf(Female,Human), brotherOf(Male,Human), ancestorOf(Adult, Human), parentOf(Adult, Human), fatherOf(Man, Human), motherOf(Woman, Human), marriedTo(Adult, Adult), childOf(Human, Adult)}. Ce qui nous donne la reprsentation suivante entre ces proprits :

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 73

Introduction au RDF et l'API RDF de Jena

Introduction au RDF et l'API RDF de Jena Ceci est un tutoriel introductif la fois au framework de description de ressources (RDF, Resource Description Framework) du W3C et Jena, une API Java pour RDF. Il est crit pour le dveloppeur peu familier RDF et qui apprend le mieux en prototypant ou, pour d'autres raisons, dsire aller rapidement l'implmentation. Une certaine habitude XML et Java est requise. Implmenter trop vite, sans d'abord comprendre le modle de donnes de RDF, mne la frustration, la dception. Cependant, tudier le modle de donnes seul est assez difficile et mne gnralement des nigmes mtaphysiques tortueuses. Il vaut mieux approcher la comprhension du modle de donnes et de son utilisation en parallle, apprendre un peu du modle et l'essayer, puis passer au morceau suivant. Ainsi, la thorie complte la pratique et la pratique complte la thorie. Le modle de donnes est assez simple, cette approche ne devrait pas prendre trop de temps. RDF possde une syntaxe XML et tous ceux qui sont familiers avec XML le prendront pour tel. C'est une erreur. RDF devrait tre compris en termes de son modle de donnes. Des donnes RDF peuvent tre reprsentes en XML, mais comprendre la syntaxe est secondaire celle du modle de donnes. Une implmentation de l'API Jena, incluant le code source de travail pour tous les exemples de ce tutoriel, peut tre tlcharge depuis le site officiel de Jena : Lien 213.
1. L'article original bizarre. Cet article est la traduction de An Introduction to RDF and Les ressources possdent des proprits. Dans ces the Jena RDF API : Lien 214. exemples, on s'intresse au type de proprits qui pourraient apparatre sur la carte de visite de ce John 2. Introduction Smith. La premire figure montre une proprit, son nom RDF est un standard (d'un point de vue purement complet. Une proprit est reprsente par un arc, nomm technique, une recommandation du W3C) pour la avec la proprit. Le nom de la proprit est aussi une description de ressources. Qu'est-ce qu'une ressource ? URI, mais une URI plutt longue et encombrante, le C'est une question plutt profonde et la dfinition prcise diagramme montre donc une forme XML. La partie avant : est toujours l'objet de tumultueux dbats. Pour notre s'appelle le prfixe d'espace de noms et reprsente un utilisation, on peut imaginer qu'une ressource est quelque espace de noms. La partie aprs : est appele un nom local chose que l'on peut identifier. Vous tes une ressource, au et reprsente un nom dans cet espace. Les proprits sont mme titre que votre page d'accueil, ce tutoriel ou la habituellement reprsentes dans cette forme qname dans du RDF XML et c'est un raccourci pratique pour les baleine blanche de Moby Dick. reprsenter dans des diagrammes et du texte. Strictement Nos exemples seront des personnes. Ils utilisent une parlant, cependant, les proprits sont identifies par une reprsentation RDF des VCARDS : Lien 215. RDF se URI. La forme nsprefix:localname est un raccourci pour reprsente le mieux sous la forme de nuds et de cette URI de l'espace de noms concatn au nom local. Il diagrammes en arcs. Une VCARD simple pourrait n'y a pas besoin que l'URI de la proprit donne accs quelque chose par le biais d'un navigateur. ressembler ceci en RDF : Chaque proprit a une valeur. Dans ce cas, la valeur est littrale, soit, pour le moment, une chane de caractres. Ces littrales sont montres dans des rectangles. Jena est une API Java qui peut tre utilise pour crer et manipuler des graphes RDF comme celui-ci. Jane possde des classes pour reprsenter des graphes, des ressources, des proprits et des littrales. Les interfaces reprsentant des ressources, des proprits et des littrales sont VCARD en RDF respectivement nommes Resource, Property et Literal. La ressource, John Smith, est reprsente comme une Dans Jena, un graphe est appel un modle et est ellipse et est identifie par un identifiant de ressource reprsent par l'interface Model. uniforme (URI, Uniform Resource Identifiant), dans ce cas http://.../JohnSmith. Si vous essayez d'accder cette Le code pour crer ce graphe (ou modle) est simple : ressource dans votre navigateur, vous n'y arriverez probablement pas ; rsistant la tentation du poisson static String personURI = "http://somewhere/JohnSmith"; d'avril, il serait tonnant qu'un navigateur puisse vous static String fullName = "John Smith"; amener John Smith. Si vous n'tes pas familier aux URI, Model model = ModelFactory.createDefaultModel(); prenez-les simplement comme des noms d'apparence assez
Numro HS 2 Hors srie spcial rentre Page 74

Developpez Magazine est une publication de developpez.com

Resource johnSmith = model.createResource(personURI); johnSmith.addProperty(VCARD.FN, fullName);

Il commence avec des dfinitions de constantes et ensuite cre un modle vide en utilisant la mthode createDefaultModel() de ModelFactory pour crer un modle en mmoire. Jena contient d'autres implmentations de l'interface Model, par exemple celle qui utilise une base de donnes relationnelle (SGBDR) : ces types de modles sont aussi disponibles depuis ModelFactory. La ressource John Smith est alors cre et une proprit y est ajoute. La proprit est fournie par une classe constante VCARD, qui dtient les objets reprsentant toutes les dfinitions dans le schma VCARD. Jena fournit des classes constantes pour d'autres schmas bien connus, comme RDF et RDF Schema eux-mmes, Dublin Core et DAML.

String personURI = "http://somewhere/JohnSmith"; String givenName = "John"; String familyName = "Smith"; String fullName = givenName + " " + familyName; Model model = ModelFactory.createDefaultModel(); Resource johnSmith = model.createResource(personURI) .addProperty(VCARD.FN, fullName) .addProperty(VCARD.N, model.createResource() .addProperty(VCARD.Given, givenName) .addProperty(VCARD.Family, familyName));

Le code de travail de cet exemple peut tre trouv comme tutorial-2 dans le mme rpertoire de la distribution Jena : Lien 217. 3. Dclaration (statement)

Chaque arc dans un modle RDF est appel une Le code pour crer la ressource et ajouter la proprit peut dclaration. Chacune affirme un fait propos d'une tre crit d'une manire plus compacte avec un style en ressource. Une dclaration se dcompose en trois parties : le sujet est la ressource que quitte l'arc ; cascade : le prdicat est la proprit qui donne un nom Resource johnSmith = l'arc ; model.createResource(personURI) l'objet est la ressource ou la valeur littrale .addProperty(VCARD.FN, fullName); pointe par l'arc. Le code de travail pour cet exemple peut tre trouv dans le rpertoire /src-examples de la distribution Jena, dans le fichier Tutorial01 : Lien 216. Comme exercice, prenez ce code et modifiez-le pour crer une VCARD simple vousmme. Maintenant, ajoutons un peu de dtails cette VCARD, en explorant d'autres fonctionnalits de Jena et de RDF. Dans ce premier exemple, la valeur de la proprit tait littrale ; les proprits RDF peuvent aussi prendre d'autres ressources comme valeur. En utilisant une technique RDF courante, cet exemple montre comment reprsenter les diffrentes parties du nom de John Smith : Une telle dclaration est donc parfois appele un triplet, cause de ces trois parties. Un modle RDF est reprsent comme un ensemble de ces dclarations. Chaque appel addProperty() ajoute une autre dclaration au modle. Puisqu'un modle est un ensemble de dclarations, ajouter une dclaration en double n'a pas d'effet. Les interfaces de modle de Jena dfinissent une mthode listStatements(), qui retourne un StmtIterator, un driv de la classe Java Iterator sur toutes les dclarations dans un modle. StmtIterator possde une mthode nextStatement(), qui retourne la dclaration suivante de l'itrateur (le mme que next() retournerait, dj cast en Statement). L'interface Statement fournit des mthodes d'accs au sujet, au prdicat et l'objet de la dclaration. Maintenant, on va utiliser cette interface pour tendre le deuxime exemple, lister toutes les dclarations cres et les afficher. Le code complet se trouve dans tutorial 3 : Lien 218.
StmtIterator iter = model.listStatements();while (iter.hasNext()) { Statement stmt = iter.nextStatement(); // get next statement Resource subject = stmt.getSubject(); // get the subject Property predicate = stmt.getPredicate(); // get the predicate RDFNode object = stmt.getObject(); // get the object System.out.print(subject.toString()); System.out.print(" " + predicate.toString() + " "); if (object instanceof Resource) { System.out.print(object.toString()); } else { // object is a literal Numro HS 2 Hors srie spcial rentre Page 75

Ici, on a ajout une nouvelle proprit, vcard:N, pour reprsenter la structure du nom de John Smith. Il y a plusieurs choses dignes d'intrt dans ce modle. Notez que la proprit vcard:N prend une ressource comme valeur. Notez aussi que l'ellipse reprsentant le nom compos n'a pas d'URI. On appelle cela un nud anonyme. Le code Jena pour construire cet exemple est encore une fois trs simple. Quelques dclarations et puis la cration du modle vide.

Developpez Magazine est une publication de developpez.com

System.out.print(" \"" + object.toString() + "\""); } System.out.println(" ."); }

http://www.w3.org/2001/vcard-rdf/3.0#FN "John Smith" .

Puisque l'objet d'une dclaration peut tre une ressource ou une valeur littrale, la mthode getObject() retourne un objet de type RDFNode, une superclasse commune Resource et Literal. L'objet sous-jacent est du type appropri, ainsi le code utilise instanceof pour dterminer lequel et le traiter en fonction. Quand il est lanc, ce programme devrait produire une sortie comme ceci :
http://somewhere/JohnSmith http://www.w3.org/2001/vcard-rdf/3.0#N anon:14df86:ecc3dee17b:-7fff . anon:14df86:ecc3dee17b:-7fff http://www.w3.org/2001/vcard-rdf/3.0#Family "Smith" . anon:14df86:ecc3dee17b:-7fff http://www.w3.org/2001/vcard-rdf/3.0#Given "John" . http://somewhere/JohnSmith

Maintenant, vous savez pourquoi il est plus simple de dessiner des modles. En y regardant de plus prs, on peut voir que chaque ligne consiste en trois champs, reprsentant le sujet, le prdicat et l'objet de chaque dclaration. Il y a quatre arcs dans le modle, donc quatre dclarations. anon:14df86:ecc3dee17b:-7fff est un identifiant interne gnr par Jena. Il ne s'agit pas d'une URI et il ne devrait pas tre confondu avec une URI. Il s'agit simplement d'une dnomination interne utilise par l'implmentation de Jena. Le groupe de travail du W3C sur RDFCore (Lien 219) a dfini une notation simple et similaire, les N-triplets : Lien 220. Le nom signifie triple notation . On verra dans la prochaine section que Jena a un module d'criture de N-triplets incorpor. Retrouvez la suite de l'article de Brian McBride, Daniel Boothby et Chris Dollin traduit par Thibaut Cuvelier et Julien Plu en ligne : Lien 221

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 76

Business Intelligence
Tutoriels et articles
Initiation au dcisionnel (Business Intelligence, DataWarehouse, OLAP) Ce tutoriel a pour objectif de vous expliquer les objectifs du dcisionnel ainsi que le jargon qui va avec. Dans une deuxime partie, je passe un tutoriel qui traite l'analyse OLAP qui est partie intgrante du dcisionnel.
1. Introduction Vous avez certainement d entendre parler d'au moins d'un de ces trois termes qui sont intimement lis : Business intelligence, Datawarehouse et Analyse OLAP. En effet, depuis les annes 2000-2001, le march du dcisionnel ne cesse d'exploser en France (et partout d'ailleurs) surtout avec l'investissement de plusieurs grandes socits qui souhaitent instaurer un systme de Business Intelligence (B.I.) dans leur organisation. Ce systme difficile mettre en uvre, demandant une expertise et ncessitant une matrise d'ouvrage de la part des informaticiens 2.3. Architecture des systmes dcisionnels concepteurs du systme rend souvent difficile le recrutement de ces profils. Mais c'est quoi le dcisionnel ? Comment y dbuter ? Eh bien je vais tenter dans cet article de donner un aperu de tout ce jargon souvent mconnu et n'ayant souvent pas d'quivalents franais et j'essaierai aprs un bref aspect thorique, de passer un aspect pratique traitant l'analyse OLAP avec Analysis Services de Microsoft. leurs clients, de les fidliser, etc. Et pour cela, ils ont besoin d'indicateurs et des donnes rsumes de leurs activits (ils n'ont souvent besoin de dtail que pour des cas spcifiques). Par exemple, contrairement aux systmes relationnels (ou base gestion) o les utilisateurs chercheront connatre leurs transactions pour faire un bilan, les systmes dcisionnels quant eux cherchent plutt donner un aperu global pour connatre les tendances des clients (d'o l'opposition des deux modes [quantitatif contre qualitatif] ). Initiation au dcisionnel (Business Intelligence, DataWarehouse, OLAP)

NB : la deuxime partie de cet article a t ralise avec la Exemple d'architecture dcisionnelle version 7.0 de SQL Server. tant encore nouveau dans la version 2005, j'attends encore un moment pour raliser une Voici une architecture de systme dcisionnel trs utilise. nouvelle version de cette partie pratique avec SQL Server Dans cette architecture, on dispose d'un entrept de 2005. donnes ou DataWarehouse (gnralement, il s'agit plutt d'un datamart qui est plus petit que le DW et qui concerne 2. Aspect thorique un domaine bien particulier [finance, ressources humaines, Dans cet aspect thorique nous allons un peu expliquer etc.] ). L'entrept (ou encore info-centre !) centralise les l'utilit du dcisionnel, des acteurs du dcisionnel et des donnes issues de plusieurs sources (bases de production de l'entreprise, fichiers textes, documents web [html, xml, architectures usuelles. sgml, etc.] etc.). Ces donnes sont fusionnes dans l'entrept qui est gnralement une grosse base de donnes 2.1. Pourquoi le dcisionnel ? (SQL Server, Oracle, etc.). Ensuite, une fois l'entrept Tout d'abord, rappelons-le, le dcisionnel ne concerne confectionn, des donnes sont extraites dans des serveurs souvent que les entreprises qui grent un historique de d'analyse ou serveurs OLAP sous forme de cubes de leurs vnements passs (faits, transactions, etc.). Les donnes (Analysis Server, EssBase, etc.) afin d'tre entreprises qui viennent de natre n'ont souvent pas besoin analyses. Enfin, des gnrateurs d'tats (Business de faire du dcisionnel car elles n'ont pas encore besoin de Objects, Crystal Report, etc.) sont utiliss afin de prsenter catgoriser ou de fidliser leurs clients. Le souci majeur l'tude aux utilisateurs finaux ou dcideurs (ex. : analystes pour elles serait plutt d'avoir le maximum de clients et marketing). c'est aprs en avoir rcupr un grand nombre qu'elles penseront certainement les fidliser et leur proposer 2.3.1. Les sources de donnes d'autres produits susceptibles de les intresser. C'est ce que l'on appelle Customer RelationShip Management (CRM Les sources de donnes sont souvent diverses et varies et le but est de trouver des outils ETL (Extraction / ou gestion des relations clients). Transformation / Loading) afin de les extraire, de les nettoyer, de les transformer et de les mettre dans l'entrept 2.2. Qui a besoin du dcisionnel ? de donnes (DTS de SQL Server est un exemple d'outil Comme cela peut se deviner, les dcideurs sont les ETL.). Des outils comme Datastage ou Talend (monde principaux utilisateurs des systmes dcisionnels. Les open source) sont spcialiss en la matire. dcideurs sont gnralement des marketeurs ou analystes en gnral. Ces derniers tablissent gnralement des plans marketing qui leur permettent de mieux cibler
Numro HS 2 Hors srie spcial rentre Page 77

Developpez Magazine est une publication de developpez.com

2.3.2. L'entrept de donnes

Il est le cur du systme dcisionnel et demande une analyse profonde de la part de la matrise d'ouvrage. La conception d'un DataWarehouse diffre de la conception d'une base de donnes relationnelle. En effet, alors que les bases de donnes relationnelles tendent le plus souvent tre normalises, les bases de donnes 2.3.5. Quelques termes usuels du dcisionnel multidimensionnelles, elles, sont plutt dnormalises, respectant le modle en toile ou le modle en flocon. datawarehouse : entrept de donnes. Voici ci-dessous un exemple de schma d'un entrept de donnes : datamart : petit entrept de donnes l'chelle d'un dpartement ou succursale d'une grande socit. Gnralement un datamart dverse ses donnes chez sa mre qui est le datawarehouse.

d'analyse. Au passage, je rappelle que travaillant gnralement avec SQL Server et Analysis Services, le langage de requtage multidimensionnel a pour nom MDX (qui ressemble au SQL mais n'est pas du SQL). Les tats permettent galement de faire de l'exploration (navigation) de donnes (notamment du Rollup / Drill-Down).

OLTP : OnLine Transactonal Processing. Il s'agit des traitements transactionnels. Par exemple, les logiciels des caisses enregistreuses des chanes de magasins font du OLTP. OLAP : OnLine Analytical Processing. Oppos l'OLTP, faire de l'OLAP signifie faire de l'analyse de donnes. Analyser les ventes, dtecter les fraudes, prospecter des clients font partie du processus OLAP. ETL : un outil ETL (Extraction / Transformation / Loading) permet partir de diverses sources de donnes, d'extraire de l'information, de faire des transformations afin de nettoyer les donnes et de charger des donnes utiles dans l'entrept de donnes. Les sources de donnes peuvent tre diverses (HTML, XML, base de donnes, fichiers texte, tableurs, ERP, etc.). Serveur d'analyse : un serveur d'analyse ou serveur OLAP est un serveur de base de donnes multidimensionnelle. Exemple : Analysis Server est un serveur de bases multidimensionnelles. Base de donnes multidimensionnelle : une base de donnes multidimensionnelle par opposition une base de donnes relationnelle est une base dnormalise ou il existe une table centrale (table de faits) lie toutes les autres tables (tables de dimensions). Table de faits : comme son nom l'indique, une table de faits est une table contenant tous les faits du SI et dont dpendent toutes les autres tables. Cette table ne contient que des cls trangres venant des tables de dimensions et des valeurs numriques appeles mesures. Exemple de table de faits : table des ventes Tables de dimensions : les tables de dimensions sont des tables servant d'axes d'analyse. On peut par exemple analyser les ventes (table de faits) suivant l'axe des temps (table de dimensions) pour indiquer par exemple pendant quel trimestre de l'anne les ventes ont explos.

Modle physique d'un schma en toile. Le modle physique ci-dessus contient une table centrale laquelle toutes les autres tables sont lies (modle en toile). La table centrale (ici table VENTE) est appele la table des faits et contient toutes les autres cls des autres tables. Cette table de faits contient aussi une ou plusieurs valeurs numriques particulires (ici prix et nb_articles) appeles mesures. Gnralement un niveau de granularit est aussi dfini pour la table des faits (regroupe-t-on par exemple un ensemble de ventes de mme type pour en faire un enregistrement ? Les enregistrements sont-ils unitaires (un enregistrement par transaction ?). Les autres tables du modle sont appeles tables de dimensions. Ici par exemple, on dispose des dimensions CLIENTS, PRODUITS et TEMPS. Une dimension Temps est presque toujours prsente dans les bases multidimensionnelles tout simplement parce qu'on analyse les donnes dans le temps. 2.3.3. Le serveur OLAP ou serveur d'analyse OLAP (On-Line Analytical Processing) est oppos OLTP (On-Line Transactional Processing) et a pour but d'organiser les donnes analyser par domaine/thme et d'en ressortir des rsultats pertinents pour le dcideur. Les rsultats sont donc des rsums et peuvent tre obtenus par diffrents algorithmes de datamining (fouille de donnes) du serveur d'analyse. On peut par exemple tablir le rsultat suivant : Les clients qui achtent gnralement du beurre et du pain achtent aussi du lait . Ces rsultats pourraient amener l'organisation (ici en l'occurrence une grande distribution) disposer ses rayons de telle faon qu' ct de l'emplacement du beurre, elle mettra le pain et le lait. 2.3.4. Le gnrateur d'tats

Mesure : une mesure est une quantit prsente dans la table de faits qui permet de mesurer les faits. Par exemple, Le gnrateur d'tat permet seulement de mieux nombre de ventes ou prix unitaire sont des exemples de apprhender le rsultat de l'analyse. L'utilisateur final mesures. n'tant pas forcment un informaticien, il aura plus de facilit dans des tats Business Objects (ou mme dans des Cube : un cube de donnes est une structure feuilles de donnes Excel) avec des diagrammes et courbes dimensionnelle comme une table est une structure statistiques que d'aller directement requter dans le serveur
Numro HS 2 Hors srie spcial rentre Page 78

Developpez Magazine est une publication de developpez.com

relationnelle. Un cube est constitu d'une ou plusieurs tables de faits avec leurs tables de dimensions. On peut par exemple considrer un cube vente contenant sa table de faits vente et ses tables de dimensions clients , rgion et temps .

Drill-down: faire un drill-down, c'est avoir un niveau de dtails sur les donnes. Par exemple Supposons qu'on veuille voir le dtail des ventes pour le premier trimestre de l'anne 1997. On dit qu'on fait un drill-down sur l'axe (ou dimension) temps. C'est--dire qu'on ne veut pas voir seulement les donnes de l'anne 1997 mais descendre Niveau de hirarchie : un niveau de hirarchie se dfinit un niveau de dtail plus bas. au niveau des tables de dimensions. Cela permet d'agrger les donnes. Par exemple, supposons qu'on ait la Roll-up: rollup est le contraire de drill-down. C'est donc dimension rgion contenant la liste des villes, on pourrait faire de l'agrgation (ou rsum) des donnes. faire un niveau de hirarchie (niveau 1) classant les villes en rgions, ensuite un niveau plus bas qui les classerait en Retrouvez l'article de Mohamed Taslimanka Sylla en dpartements (niveau 2). ligne : Lien 222

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 79

Solutions d'entreprise
Dfinitions Enterprise Ressource Planning ou Progiciel de Gestion Intgr
manant d'un concepteur unique, un ERP est un progiciel qui permet de grer l'ensemble des processus d'une entreprise intgrant l'ensemble de ses fonctions comme la gestion des ressources humaines, la gestion financire et comptable, l'aide la dcision, la vente, la distribution, l'approvisionnement, la production ou encore du ecommerce. focalise sur la relation entre un produit/service et son client ou encore la notorit et l'image de marque. Grce aux nombreuses fonctionnalits offertes par le CRM telles que la gestion des prospects, gestion des clients et de leurs achats, de reporting... Il est possible pour l'entreprise de personnaliser l'offre, sous forme de publicits ou encore d'e-mails afin de fidliser un maximum le client, d'amliorer leur satisfaction et par la mme occasion d'accrotre l'efficacit des employs et par consquent d'augmenter les ventes.

Le principe fondateur d'un ERP est de construire des Quelques exemples d'outils CRM : Microsoft CRM applications informatiques correspondant aux diverses SalesForce fonctions cites prcdemment de manire modulaire Oracle/PeopleSoft crm sachant que ces modules sont indpendants entre eux, tout en partageant une base de donnes unique et commune au Sage crm sens logique. SAP CRM Selligent L'autre principe qui caractrise un ERP est l'usage de ce Siebel qu'on appelle un moteur de workflow et qui permet, ... lorsqu'une donne est enregistre dans le SI, de la propager dans les modules qui en ont l'utilit, selon une Tutoriels CRM/GRC : Lien 225 programmation prdfinie. Ainsi, on peut parler d'ERP lorsqu'on est en prsence d'un Business Intelligence ou informatique SI compos de plusieurs applications partageant une seule dcisionnelle et mme base de donnes, par le biais d'un systme automatis prdfini et ventuellement paramtrable, un Partie de l'informatique consistant effectuer du reporting automatis et des analyses numriques partir de donnes moteur de workflow. existantes. Il existe des ERP propritaires et Open Source. Pour en Idalement, les donnes sont extraites par un ETL citer quelques-uns : (Extract, Transform and Load) des bases de production ou autres sources (fichiers plats, tableurs, etc.) et intgres ERP Propritaires dans un Datawarehouse, agrges dans un ou plusieurs SAP Datamart . Elles sont lues soit directement par un outil de Oracle/PeopleSoft reporting, soit travers une couche smantique pour une Navision de Microsoft analyse ad hoc. Sage Adonix Cegid Les limites de la BI ne sont pas clairement dfinies. Si Open Source l'ensemble des lments cits ci-dessus en font clairement Compiere partie, d'autres types d'outils logiciels (le Performance ERP5 Management, la consolidation statutaire, l'laboration OpenERP budgtaire et autres outils financiers, le datamining, la segmentation et autres outils statistiques) sont parfois Dolibarr considrs comme de la BI et parfois comme relevant de OpenBravo domaines autonomes. Mais de plus en plus, la tendance est la concentration des diteurs et une convergence de ces Forums ERP/PGI : Lien 223 outils. Tutoriels ERP/PGI : Lien 224

Customer Relationship Managment ou Gestion Relation Client

Forums Business Intelligence : Lien 226 Tutoriels Business Intelligence : Lien 227

Un CRM, soit Customer Relationship Management ou Electronic Document Management ou encore GRC pour Gestion de la Relation Client, est un Gestion lectronique des documents outil rvolutionnaire dans le domaine du marketing. En effet, un CRM dpasse l'approche marketing traditionnelle La gestion lectronique de document est un systme permettant l'intgration, l'organisation et la hirarchisation,
Developpez Magazine est une publication de developpez.com
Numro HS 2 Hors srie spcial rentre Page 80

le stockage et l'archivage de documents en particulier ds que le traitement est appliqu sur d'importants volumes documentaires. Tout document numrique peut tre gr par un systme de GED (courrier lectronique, pdf, word, images, etc.). Ce type de systme est utilis pour de gros volumes documentaires mais aussi afin de faciliter le travail collaboratif (par exemple lors de validation documentaire) au sein d'une quipe ou d'une entreprise. Quelques exemples d'outils ECM/GED : Nuxeo Oracle/PeopleSof

Maarch KnowledgeTree Freedom IBM (DB2 Content Manager, Content Manager OnDemand) Forrester EMC Documentum SyGED

Forums ECM/GED : Lien 228 Retrouvez ces dfinitions sur la rubrique Solutions d'entreprise : Lien 229

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 81

Pascal
Tutoriels et articles
Introduction la Programmation Oriente Objet Dans ce tutoriel vous apprendrez manier la Programmation Oriente Objet, ou POO pour les intimes, dans le cadre du langage Pascal Orient Objet. Loin d'tre aussi complexe qu'elle peut le laisser transparatre, la POO peut se matriser rapidement au point de ne plus pouvoir s'en passer.
1. Avant-Propos Si la programmation dite procdurale est constitue de procdures et fonctions sans liens particuliers agissant sur des donnes dissocies pouvant mener rapidement des difficults en cas de modification de la structure des donnes, la programmation objet, pour sa part, tourne autour d'une unique entit : l'objet, offrant de nouvelles perspectives, et que je vous invite dcouvrir de suite... Attention ! Borland a longtemps employ le nom de Pascal Objet pour Delphi. Celui-ci a t rcemment renomm langage Delphi. Nous n'aborderons pas dans ce tutoriel une approche spcifique Delphi. Nous nous orienterons plus vers une approche gnrale du Pascal, tous compilateurs Pascal confondus sitt que ceux-ci supportent la Programmation Oriente Objet, comme c'est le cas pour Turbo Pascal, Free Pascal, GNU Pascal... et bien sr Delphi. 2. Vue d'ensemble de la POO Avant de rentrer plus avant dans le sujet qui nous intresse, nous allons commencer par poser un certain nombre de bases. 2.1. L'objet Il est impossible de parler de Programmation Oriente Objet sans parler d'objet, bien entendu. Tchons donc de donner une dfinition aussi complte que possible d'un objet. Un objet est avant tout une structure de donnes. Autrement, il s'agit d'une entit charge de grer des donnes, de les classer, et de les stocker sous une certaine forme. En cela, rien ne distingue un objet d'une quelconque autre structure de donnes. La principale diffrence vient du fait que l'objet regroupe les donnes et les moyens de traitement de ces donnes. 2.2. Objet et classe Avec la notion d'objet, il convient d'amener la notion de classe. Cette notion de classe n'est apparue dans le langage Pascal qu'avec l'avnement du langage Delphi et de sa nouvelle approche de la Programmation Oriente Objet. Elle est totalement absente du Pascal standard. Les mthodes : Les mthodes sont les lments d'un objet qui servent d'interface entre les donnes et le programme. Sous ce nom obscur se cachent simplement des procdures ou fonctions destines traiter les donnes. Les champs et les mthodes d'un objet sont ses membres. Si nous rsumons, un objet est donc un type servant stocker des donnes dans des champs et les grer au travers des mthodes. Si on se rapproche du Pascal, un objet n'est donc qu'une extension volue des enregistrements (type record) disposant de procdures et fonctions pour grer les champs qu'il contient. On notera souvent les membres d'un objet Objet.Membre de faon lever toute ambigut quant au propritaire du membre considr. Introduction la Programmation Oriente Objet

Ce que l'on a pu nommer jusqu' prsent objet est, pour Delphi, une classe d'objet. Il s'agit donc du type proprement parler. L'objet en lui-mme est une instance de classe, plus simplement un exemplaire d'une classe, sa Un objet rassemble de fait deux lments de la reprsentation en mmoire. programmation procdurale. Par consquent, on dclare comme type une classe, et on dclare des variables de ce type appeles des objets. Les champs : Si cette distinction est bien prendre en considration lors Les champs sont l'objet ce que les variables sont de la programmation en Delphi, elle peut toutefois tre un programme : ce sont eux qui ont en charge totalement ignore avec la plupart des autres compilateurs les donnes grer. Tout comme n'importe quelle Pascal. En effet, ceux-ci ne s'appuient que sur les notions autre variable, un champ peut possder un type d'objet et d'instance d'objet. quelconque dfini au pralable : nombre, caractre... ou mme un type objet.
Numro HS 2 Hors srie spcial rentre Page 82

Developpez Magazine est une publication de developpez.com

Nous adopterons par consquent ici ce point de vue qui On peut supposer que cet objet Btiment dispose d'un simplifie le vocabulaire et la comprhension. ensemble de mthodes destines sa gestion. On pourrait ainsi dfinir entre autres des mthodes pour : On pourra remarquer que Free Pascal pour sa part dfinit ouvrir le Btiment ; une classe comme un "pointeur vers un objet ou un fermer le Btiment ; enregistrement". agrandir le Btiment. 2.3. Les trois fondamentaux de la POO La Programmation Oriente Objet est dirige par trois fondamentaux qu'il convient de toujours garder l'esprit : encapsulation, hritage et polymorphisme. Houl ! Inutile de fuir en voyant cela, car en fait, ils ne cachent que des choses relativement simples. Nous allons tenter de les expliquer tout de suite. 2.3.1. Encapsulation Derrire ce terme se cache le concept mme de l'objet : runir sous la mme entit les donnes et les moyens de les grer, savoir les champs et les mthodes. L'encapsulation introduit donc une nouvelle manire de grer des donnes. Il ne s'agit plus de dclarer des donnes gnrales puis un ensemble de procdures et fonctions destines les grer de manire spare, mais bien de runir le tout sous le couvert d'une seule et mme entit. Si l'encapsulation est dj une ralit dans les langages procduraux (comme le Pascal non objet par exemple) au travers des units et autres librairies, il prend une toute nouvelle dimension avec l'objet. En effet, sous ce nouveau concept se cache galement un autre lment prendre en compte : pouvoir masquer aux yeux d'un programmeur extrieur tous les rouages d'un objet et donc l'ensemble des procdures et fonctions destines la gestion interne de l'objet, auxquelles le programmeur final n'aura pas avoir accs. L'encapsulation permet donc de masquer un certain nombre de champs et mthodes tout en laissant visibles d'autres champs et mthodes. Nous verrons ceci un peu plus loin. Grce au concept d'hritage, cet objet Btiment va pouvoir donner naissance un ou des descendants. Ces descendants vont tous bnficier des caractristiques propres de leur anctre, savoir ses champs et mthodes. Cependant, les descendants conservent la possibilit de possder leurs propres champs et mthodes. Tout comme un enfant hrite des caractristiques de ses parents et dveloppe les siennes, un objet peut hriter des caractristiques de son anctre, mais aussi en dvelopper de nouvelles, ou bien encore se spcialiser. Ainsi, si l'on poursuit notre exemple, nous allons pouvoir crer un objet Maison. Ce nouvel objet est toujours considr comme un Btiment, il possde donc toujours des murs, un toit, une porte, les champs Adresse ou Superficie et les mthodes destines par exemple Ouvrir le Btiment. Toutefois, si notre nouvel objet est toujours un Btiment, il n'en reste pas moins qu'il s'agit d'une Maison. On peut donc lui adjoindre d'autres champs et mthodes, et par exemple : nombre de fentres ; nombre d'tages ; nombre de pices ; possde ou non un jardin ; possde une cave. Notre Btiment a ici bien volu. Il s'est spcialis. Avec notre Maison, nous sommes alls plus avant dans les dtails, et elle est mme de nous offrir des services plus volus. Nous avons complt ce qui n'tait qu'un squelette.

Pour conclure, l'encapsulation permet de garder une cohrence dans la gestion de l'objet, tout en assurant Ce processus d'hritage peut bien sr tre rpt. l'intgrit des donnes qui ne pourront tre accdes qu'au Autrement dit, il est tout fait possible de dclarer travers des mthodes visibles. prsent un descendant de Maison, dveloppant sa spcialisation : un Chalet ou encore une Villa. Mais de la mme manire, il n'y a pas de restrictions thoriques concernant le nombre de descendants pour un objet. Ainsi, pourquoi ne pas dclarer des objets Immeuble ou encore Usine dont l'anctre commun serait toujours Btiment. 2.3.2. Hritage Ce concept d'hritage ouvre donc la porte un nouveau Si l'encapsulation pouvait se faire manuellement (grce genre de programmation. la dfinition d'une unit par exemple), il en va tout autrement de l'hritage. Cette notion est celle qui On notera qu'une fois qu'un champ ou une mthode sont s'explique le mieux au travers d'un exemple. Considrons dfinis, il ou elle le reste pour tous les descendants, quel un objet Btiment. Cet objet est pour le moins gnrique, que soit leur degr d'loignement. et sa dfinition reste assez vague. On peut toutefois lui associer divers champs, dont par exemple : les murs ; le toit ; une porte ; l'adresse ; la superficie.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 83

2.3.3. Polymorphisme

objet un autre. De fait, seules les donnes diffrent d'une instance une autre, la "machinerie" reste la mme, ce qui Le terme polymorphisme est certainement celui que l'on permet de ne pas occuper inutilement la mmoire. apprhende le plus. Mais il ne faut pas s'arrter cela. Afin de mieux le cerner, il suffit d'analyser la structure du mot : Certaines remarques sont prendre en considration poly comme plusieurs et morphisme comme forme. Le concernant les constructeurs. polymorphisme traite de la capacit de l'objet possder Un objet peut ne pas avoir de constructeur plusieurs formes. explicite. Dans ce cas, c'est le compilateur qui se charge de crer de manire statique les liens Cette capacit drive directement du principe d'hritage vu entre champs et mthodes. prcdemment. En effet, comme on le sait dj, un objet Un objet peut avoir plusieurs constructeurs : va hriter des champs et mthodes de ses anctres. Mais c'est l'utilisateur qui dcidera du constructeur un objet garde toujours la capacit de pouvoir redfinir appeler. La prsence de constructeurs multiples une mthode afin de la rcrire, ou de la complter. peut sembler saugrenue de prime abord, leur rle On voit donc apparatre ici ce concept de tant identique. Cependant, comme pour toute polymorphisme : choisir en fonction des besoins quelle mthode, un constructeur peut tre surcharg, et mthode anctre appeler, et ce au cours mme de donc effectuer diverses actions en plus de la l'excution. Le comportement de l'objet devient donc construction mme de l'objet. On utilise ainsi modifiable volont. gnralement les constructeurs pour initialiser les Le polymorphisme, en d'autres termes, est donc la champs de l'objet. diffrentes initialisations capacit du systme choisir dynamiquement la mthode peuvent donc correspondre diffrents qui correspond au type rel de l'objet en cours. Ainsi, si constructeurs. l'on considre un objet Vhicule et ses descendants Bateau, S'il n'est pas ncessaire de fournir un constructeur Avion, Voiture possdant tous une mthode Avancer, le pour un objet statique, il devient obligatoire en systme appellera la fonction Avancer spcifique suivant cas de gestion dynamique, car le diagramme que le vhicule est un Bateau, un Avion ou bien une d'hritage ne peut tre construit de manire Voiture. correcte que lors de l'excution, et non lors de la compilation. Attention ! Le concept de polymorphisme ne doit pas tre confondu avec celui d'hritage multiple. En effet, l'hritage multiple 3.1.2. Destructeurs - non support par le Pascal standard - permet un objet Le destructeur est le pendant du constructeur : il se d'hriter des membres (champs et mthodes) de plusieurs charge de dtruire l'instance de l'objet. La mmoire objets la fois, alors que le polymorphisme rside dans la alloue pour le diagramme d'hritage est libre. Certains capacit d'un objet modifier son comportement propre et compilateurs peuvent galement se servir des destructeurs celui de ses descendants au cours de l'excution. pour liminer de la mmoire le code correspondant aux mthodes d'un type d'objet si plus aucune instance de cet objet ne rside en mmoire. L encore, diffrentes remarques doivent tre gardes l'esprit. Tout comme pour les constructeurs, un objet peut ne pas avoir de destructeur. Une fois encore, c'est le compilateur qui se chargera de la destruction statique de l'objet. Un objet peut possder plusieurs destructeurs. Leur rle commun reste identique, mais peut s'y ajouter la destruction de certaines variables internes pouvant diffrer d'un destructeur l'autre. La plupart du temps, un constructeur distinct est associ un destructeur distinct. En cas d'utilisation dynamique, un destructeur s'impose pour dtruire le diagramme cr par le constructeur.

3. Diffrents types de mthodes Parmi les diffrentes mthodes d'un objet se distinguent deux types de mthodes bien particulires et remplissant un rle prcis dans sa gestion : les constructeurs et les destructeurs. 3.1. Constructeurs et destructeurs 3.1.1. Constructeurs

Comme leur nom l'indique, les constructeurs servent construire l'objet en mmoire. Un constructeur va donc se charger de mettre en place les donnes, d'associer les mthodes avec les champs et de crer le diagramme 3.2. Pointeur interne d'hritage de l'objet, autrement dit de mettre en place Trs souvent, les objets sont utiliss de manire toutes les liaisons entre les anctres et les descendants. dynamique, et ne sont donc crs que lors de l'excution. Si les mthodes sont toujours communes aux instances Il faut savoir que s'il peut exister en mmoire plusieurs d'un mme type objet, il n'en est pas de mme pour les instances d'un mme type objet, autrement dit plusieurs donnes. variables du mme type, seule une copie des mthodes est conserve en mmoire, de sorte que chaque instance se Il peut donc se rvler indispensable pour un objet de rfre la mme zone mmoire en ce qui concerne les pouvoir se rfrencer lui-mme. Pour cela, toute instance mthodes. Bien entendu, les champs sont distincts d'un
Numro HS 2 Hors srie spcial rentre Page 84

Developpez Magazine est une publication de developpez.com

dispose d'un pointeur interne vers elle-mme. Ce pointeur peut prendre diffrentes appellations. En Pascal, il s'agira du pointeur Self. D'autres langages pourront le nommer this, comme le C++...

s'est-il pass ? Lors de la cration du programme, le compilateur s'est arrt sur notre appel Ouvrir. Ayant dclar un objet Btiment, le compilateur ignore tout du comportement du programme lors de son excution, et par consquent ignore que la variable de type pointeur vers Btiment contiendra l'excution un objet Maison. De fait, il effectue une liaison vers Btiment.Ouvrir alors que nous utilisons une Maison !

La solution, vous l'aurez compris, rside dans l'utilisation des mthodes virtuelles. Grce celles-ci, la rsolution des liens est effectue dynamiquement, autrement dit lors de l'excution. Ainsi, si nous dclarons notre mthode 3.3. Mthodes virtuelles et mthodes dynamiques Ouvrir comme virtuelle, lors de la cration du programme, le compilateur n'effectuera aucune liaison statique avant notre appel. Ce n'est que lors de l'excution, 3.3.1. Mthodes virtuelles au moment de l'appel, que la liaison va s'effectuer. Ainsi, au moment o l'on dsirera appeler Ouvrir, notre 3.3.1.1. Principe programme va interroger son pointeur interne pour Une mthode dite virtuelle n'a rien de fictif ! Il s'agit d'une dterminer son type. Bien videmment, cette fois-ci, il va mthode dont la rsolution des liens est effectue dtecter une instance de Maison, et l'appel se fera donc en direction de Maison.Ouvrir. Les volets s'ouvrent... dynamiquement. Voyons ce que cela signifie. Comme nous le savons dj, toute mthode est susceptible d'tre surcharge dans un descendant, de manire tre crase ou complte. Par consquent, toute mthode surcharge donne lieu cration d'une nouvelle section de code, et donc une nouvelle adresse en mmoire. De plus, tout objet possde un lien vers la table des mthodes de ses anctres : le diagramme d'hritage. De fait, tout type objet est directement li ses types anctres. Autrement dit, si nous reprenons l'exemple du dbut, l'objet Maison peut tre assimil un Btiment. Vous aurez not toute l'importance des mthodes virtuelles. D'une manire gnrale, sitt qu'une mthode est susceptible d'tre surcharge, il faut la dclarer comme virtuelle .

Attention ! Les constructeurs des objets ne seront jamais dclars comme virtuels, car c'est toujours le bon constructeur qui est appel. Le caractre virtuel est donc inutile et sera mme signal comme une erreur par le compilateur. Par contre, les destructeurs seront toujours dclars Considrons prsent la mthode Ouvrir d'un Btiment. comme virtuels car souvent surchargs. Celle-ci consiste ouvrir la porte principale. prsent, surchargeons cette mthode pour l'objet Il n'en est pas de mme pour les classes qui elles peuvent Maison, de sorte que la mthode Ouvrir non seulement s'appuyer sur le principe de constructeur virtuel. C'est ouvre la porte principale, mais galement les volets de notamment le cas de Delphi avec les rfrences de classes propos desquelles la documentation donne plus de notre Maison. prcisions. Dclarons maintenant une instance statique de Btiment, et appelons cette mthode Ouvrir. Lors de la cration de Vous pouvez aussi consulter les tutoriels suivants : l'excutable, le compilateur va vrifier le type d'instance * Cours sur la POO de Frdric Beaulieu : Lien 230 ; cr. Le compilateur lie alors notre appel celui de * Cours sur les mtaclasses de Laurent Dardenne : Btiment.Ouvrir (la mthode Ouvrir de l'objet Btiment), Lien 231. en toute logique. Il ne se pose aucun problme. 3.3.1.2. Constructeurs et Table des Mthodes Virtuelles Considrons prsent un autre exemple : dclarons une Afin de pouvoir appeler la mthode approprie au moment variable dynamique destine, en principe, recevoir un souhait, un objet doit s'appuyer sur une liste de ses objet Btiment. Comme nous l'avons vu juste avant, l'objet mthodes virtuelles : la VMT ou Virtual Methods Table, la Maison est compatible avec l'objet Btiment. Comme Table des Mthodes Virtuelles. Cette table est mise en nous travaillons en dynamique, nous nous servons de place par les constructeurs d'un objet. pointeurs. De fait, je peux trs bien dcider, avec cette Tout objet possde sa propre VMT, conservant toujours un variable pointant vers un objet Btiment, de dclarer une lien avec la VMT de son anctre. instance de type Maison : le compilateur ne montrera aucune rticence. Lorsqu'un appel une mthode virtuelle est effectu, Si nous rsumons, nous avons donc une variable de type l'objet recherche dans sa VMT s'il trouve la mthode officiel pointeur vers Btiment et contenant en ralit une recherche. Si c'est le cas, alors il utilise l'adresse Maison. enregistre et excute la mthode. Sinon, il parcourt la Appelons alors notre mthode Ouvrir. Comme nous avons VMT de son anctre direct et ainsi de suite jusqu' une Maison, il faut que l'on ouvre les volets. Or, si nous l'anctre le plus loign dans la hirarchie. excutons notre programme, les volets resteront clos. Que
Numro HS 2 Hors srie spcial rentre Page 85

Developpez Magazine est une publication de developpez.com

De mme, lorsque qu'une mthode surcharge fait appel Les mthodes publiques sont communment appeles la mthode anctre, alors une recherche est effectue en accesseurs : elles permettent d'accder aux champs d'ordre partant cette fois-ci de la VMT du premier anctre. priv. Il existe des accesseurs en lecture, destins rcuprer la La VMT est dtruite par un destructeur lorsque celle-ci valeur d'un champ, et des accesseurs en criture destins n'a plus lieu d'exister. pour leur part la modification d'un champ. Il n'est pas ncessaire d'avoir un accesseur par champ Si jamais on utilise une mthode virtuelle sans avoir priv, car ceux-ci peuvent n'tre utiliss qu' des fins appel au pralable un constructeur, le caractre virtuel internes. ne sera pas pris en compte et les rsultats seront Trs souvent, les accesseurs en lecture verront leur nom imprvisibles . commencer par Get quand leurs homologues en criture verront le leur commencer par Set ou Put. 3.3.2. Mthodes dynamiques Les constructeurs et les destructeurs ventuels d'un objet Aprs les mthodes virtuelles, on se demande ce que l'on a devront bnficier de la visibilit publique, sans quoi un pu inventer de pire ! Rassurez-vous, rien du tout. Les programme externe ne pourrait pas les appeler ! mthodes dynamiques ne sont en fait que des mthodes virtuelles. Attention ! Leur particularit rside dans le fait qu'elles sont indexes. Un champ ne devra tre public que si sa modification Autrement dit, chaque mthode dynamique possde un n'entrane pas de changement dans le comportement numro unique pour l'identifier. de l'objet. Dans le cas contraire, il faut passer par une mthode. Modifier un champ "manuellement" et ensuite Il convient de les comparer aux mthodes virtuelles : appeler une mthode pour informer de cette modification Avantage : les mthodes dynamiques est une violation du principe d'encapsulation. consomment moins de mmoire ; Inconvnient : la gestion interne des mthodes 4.2. Champs et mthodes privs dynamiques est plus complexe, et donc plus lente. La visibilit prive restreint la porte d'un champ ou d'une Par consquent, on prfrera toujours les mthodes mthode au module o il ou elle est dclar(e). Ainsi, si virtuelles, sauf si de nombreuses mthodes virtuelles un objet est dclar dans une unit avec un champ priv, doivent tre dclares, auquel cas on se reportera aux alors ce champ ne pourra tre accd qu' l'intrieur mme de l'unit. mthodes dynamiques . Cette visibilit est bien considrer. En effet, si un descendant doit pouvoir accder un champ ou une Une mthode abstraite est une mthode qu'il est mthode priv(e), alors ce descendant doit ncessairement ncessaire de surcharger. Elle ne possde donc pas tre dclar dans le mme module que son anctre. d'implmentation. Ainsi, si on tente d'appeler une mthode abstraite, alors une erreur est dclenche. Gnralement, les accesseurs, autrement dit les mthodes destines modifier les champs, sont dclars comme Bien entendu, il convient lors de la surcharge d'une telle privs. mthode de ne pas faire appel la mthode de l'anctre... 3.4. Mthodes abstraites Les mthodes abstraites sont gnralement utilises lorsque l'on btit un squelette d'objet devant donner lieu de multiples descendants devant tous possder un comportement analogue. On pourra prendre notamment l'exemple de l'objet TStream et de tous ses descendants. 4. Visibilit 4.3. Champs et mthodes protgs La visibilit protg correspond la visibilit priv except que tout champ ou mthode protg(e) est accessible dans tous les descendants, quel que soit le module o ils se situent.

Cette visibilit est souvent prfrer la visibilit prive, cependant elle n'est pas supporte par tous les De par le principe de l'encapsulation, afin de pouvoir compilateurs. Par exemple, Turbo Pascal ne la reconnat garantir la protection des donnes, il convient de pouvoir pas. masquer certaines donnes et mthodes internes les grant, et de pouvoir laisser visibles certaines autres devant servir 5. Le Pascal Objet la gestion publique de l'objet. C'est le principe de la Tous les lments de la Programmation Oriente Objet visibilit. noncs jusqu'ici sont bien entendu supports par le Pascal Objet. Nous allons voir prsent comment les 4.1. Champs et mthodes publics implmenter. Comme leur nom l'indique, les champs et mthodes dits publics sont accessibles depuis tous les descendants et 5.1. Dclaration d'un objet dans tous les modules : programme, unit... On peut considrer que les lments publics n'ont pas de 5.1.1. Dclaration simple restriction particulire. Avant de pouvoir utiliser la POO, il convient de savoir
Numro HS 2 Hors srie spcial rentre Page 86

Developpez Magazine est une publication de developpez.com

dclarer un objet. Pour ce faire, on a recours au mot ne connat pas encore TEnfant lorsqu'il tente d'analyser la rserv object. Un objet tant une structure de donnes, il structure de Tparent. sera donc toujours dclar l'intrieur d'un bloc type. La solution au problme passe ncessairement par l'instanciation dynamique des deux objets. On va donc L'objet le plus basique que l'on puisse dclarer est tout dclarer deux pointeurs vers les deux types considrs et simplement l'objet vide, qui n'effectue rien et ne contient seulement ensuite, on dclarera les objets eux-mmes, ceci rien. On le dclare comme ceci : dans le mme bloc type :
type TObjetVide = object end; type { Dclaration des pointeurs } PParent = ^TParent; PEnfant = ^TEnfant; { Dclaration des objets utilisant les pointeurs } TParent = object Enfant: PEnfant; end; TEnfant = object Parent: PParent; end;

On remarquera que la dclaration d'un objet se terminera toujours par un end;. De plus, on adopte trs souvent en Pascal une convention de notation pour les objets : leur nom commence toujours par T, comme type. Nous respecterons toujours cette convention dans ce tutoriel, et nous parlerons donc des objets TMaison ou encore TChose.

Attention ! Sur les compilateurs de nouvelle gnration, le mot rserv object sera remplac par le mot rserv class. Grce cette mthode, plus aucune erreur n'est dclenche, car lorsque le compilateur va analyser type TParent, il aura dj eu connaissance de l'existence de TObjetVide = class PEnfant. Ceci n'est bien videmment possible que parce end; que le compilateur accepte la dclaration prmature de pointeurs avant le type vers lequel ils pointent. Dans la suite de ce tutoriel, nous adopterons l'utilisation de mot rserv object. Celui-ci sera remplacer en fonction Sous Delphi, l'instanciation tant automatiquement du compilateur utilis (Delphi par exemple). dynamique, ce problme ne se pose pas, et pour rsoudre le problme, on se contente d'annoncer la classe avec une 5.1.2. Dclarations imbriques dclaration partielle : Il est parfois ncessaire de dclarer des objets qui s'utilisent mutuellement. On peut ainsi prendre l'exemple type { Dclarations partielles } de deux objets, TParent et TEnfant, le parent ayant la TParent = class; ncessit de connatre la liste de ses enfants, et l'enfant la TEnfant = class; ncessit de connatre son parent. Intervient alors le problme de la dclaration imbrique de { Dclaration des objets utilisant les deux objets. Si l'on tente de les dclarer comme ceci : classes }
type TParent = object Enfant: TEnfant; end; TEnfant = object Parent: TParent; end; TParent = class Enfant: TEnfant; end; TEnfant = class Parent: TParent; end;

Le compilateur va dclencher une erreur indiquant qu'il

Retrouvez la suite de l'article d'Eric Sigoillot en ligne : Lien 232

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 87

Perl
Tutoriels et articles
Bien dbuter en Perl Vous dsirez apprendre le langage Perl ? Vous ne savez pas par quoi commencer ? Ce guide va vous aider dans vos premiers pas, du choix de l'diteur jusqu' celui du livre ou des tutoriels en ligne. Je vous propose galement de nombreux liens pour vous permettre de vous exercer et d'aller plus loin !
1. Qu'est-ce que Perl ? Perl est un langage de programmation conu par Larry Wall dont la premire version date de 1987. Ce langage de programmation a t cr dans l'optique d'tre un intermdiaire entre le langage C et les langages de scripts comme bash. Au premier, il emprunte la syntaxe et au second la simplicit. Perl est idal pour : l'administration systme ; la manipulation de texte (mail, logs..) ; la cration d'interfaces graphiques simples ; faire l'interface avec un systme de gestion de base de donnes (MySQL, Oracle, PostGreSQL...) ; l'automatisation de tches rptitives ; la programmation Web, avec des modules CGI ; et bien d'autres choses encore ! ou emacs qui se basent surtout sur la ligne de commande, je vous conseille l'excellent SciTe (Lien 234). On notera qu'il est galement disponible sous Windows. Sous Mac, un excellent diteur en franais est Smultron (Lien 235), aujourd'hui remplac par l'diteur Fraise (Lien 236). Notez bien que les logiciels proposs ne sont pas les seuls, loin de l. Si vous avez dj un diteur favori qui gre la coloration syntaxique, utilisez-le ! 2.2. Perl Une fois votre diteur configur, attaquons-nous au principal : Perl lui-mme ! Si vous tes sous Linux ou Mac, rjouissez-vous : il y a 95 % de chances pour que Perl soit dj prsent sur votre systme ! Si vous n'en tes pas sr, lancez une console et tapez perl -v . Si Perl est install, la commande affichera la version prsente sur le systme. Si Perl n'est pas install, deux coles : le recompiler vousmme (les sources sont disponibles sur perl.com : Lien 237) ou suivre les instructions pour tlcharger et installer ActivePerl, disponible sur le site d'ActiveState (Lien 238) dans la section ActivePerl (Lien 239). Sous Windows, choisissez le fichier MSI, sous Mac le DMG et sous Linux le .DEB ou le .RPM. Bien dbuter en Perl

Cerise sur le gteau, Perl est multiplateforme ! Que vous travailliez sur un Unixode (Linux, BSD, Solaris, Mac...) ou un Windows, votre script Perl tournera sans aucune modification sur tous ces systmes. Au niveau technique, Perl prsente les avantages suivants : gestion automatique de la mmoire (systme de Garbage Collector) ; manipulation aise de donnes htrognes : 2.3. Test de fonctionnement tableau, chane de caractres, table de hachage, rfrence, et le plus important, tout cela Ouvrez votre diteur, choisissez le langage Perl dans les choix de coloration syntaxique et tapez le code suivant : combin ! gestion native des expressions rgulires ou regex #! /usr/bin/perl -w ; plus de 20000 modules disponibles sur le site du use strict; use warnings; CPAN.
print "Hello World !\n";

Pour finir cette prsentation, je ne peux m'empcher de vous donner le slogan de Perl, qui tmoigne bien de son tat d'esprit : There Is More Than One Way To Do It (il y a Enregistrez ce code sous le nom de test.pl (les fichiers Perl ont une extension .pl ou .pm pour les modules). Rendez ce plus d'une faon de le faire). programme excutable (chmod +x test.pl). Ensuite, lancez une console ou invite de commande, 2. Quels sont les outils dont j'ai besoin ? placez-vous dans le rpertoire o vous avez enregistr le fichier ( l'aide de la commande cd) et tapez : 2.1. L'diteur de texte Pour dbuter en Perl, la premire chose est de disposer d'un bon diteur de texte, qui permettra notamment de Normalement, le texte Hello World ! devrait s'afficher mettre en couleur vos codes. Sous Windows, je conseille Notepad++ (Lien 233), qui est l'cran. Flicitations ! Vous venez de faire votre premier un logiciel libre souvent mis jour et qui offre beaucoup programme avec Perl ! de possibilits tout en restant simple utiliser. Sous Linux, si vous n'aimez pas les diteurs comme vim
Numro HS 2 Hors srie spcial rentre Page 88 perl test.pl

Developpez Magazine est une publication de developpez.com

3. Quelles sont les ressources disponibles pour apprendre le langage Perl ? 3.1. Les cours en ligne Maintenant que vous disposez de tous les outils ncessaires pour faire du Perl, il est temps d'apprendre le langage. Avant de vous acheter un livre sur le sujet, vous prfrerez peut-tre suivre un cours d'introduction Perl en ligne et gratuit. L encore, deux coles : si vous voulez rapidement tre oprationnel sans aborder certaines subtilits, je vous conseille Formez-vous rapidement Perl, partie 1 (Lien 240), 2 (Lien 241) et 3 (Lien 242), de David Bourgais ; si vous souhaitez une introduction plus complte au langage Perl, Sylvain Lhullier a rdig une excellente Introduction la programmation en Perl (Lien 243), que vous pouvez suivre mme si vous n'avez aucune connaissance en programmation.

3.3. Pour aller plus loin Je vous encourage galement regarder nos cours (Lien 248) et notre FAQ (Lien 249). 4. J'ai un problme, aidez-moi ! Pas de panique, le club des dveloppeurs est l pour vous aider. Tout d'abord, pensez bien regarder dans la documentation officielle pour vrifier si votre problme n'est pas dj abord. Tapez perldoc -h dans une console et laissez-vous guider ! Vous n'arrivez toujours pas rgler votre problme ? C'est le moment d'utiliser notre FAQ de plus de 150 questions (Lien 249), avec moteur de recherche intgr ! Le problme persiste ? Visitez notre forum et posez votre question (Lien 250) !

5. Quelques liens utiles Une fois ces cours assimils, tous nos cours sont Pour finir, voici une liste des liens les plus utiles : disponibles sur ce site : Lien 244. Le site officiel de Perl. Vous y trouverez la documentation officielle, l'interprteur Perl et 3.2. Les livres bien d'autres choses encore : Lien 237 ; a y est, vous avez appris le langage Perl et bien Le site de la communaut internationale Perl : videmment vous en tes tomb amoureux ! Vous avez Lien 251; dcid d'acheter un livre, mais vous ne savez pas lequel ! Le site des traducteurs de la documentation Perl Il se trouve qu'Oreilly propose deux excellents livres sur le en franais : Lien 252 ; sujet, trs complmentaires : Le site o vous trouverez tous vos modules Perl : Introduction Perl de Schwartz Randal, Phoenix Lien 253. Tom et Foy Briab. C'est le livre idal si vous tes dbutant : Lien 245; 6. Conclusion Programmation en Perl, de Larry Wall, Tom Voil, ce guide touche sa fin ! J'espre qu'il vous aura Christiansen et Jon Orwant. Ce livre (surnomm aid faire vos premiers pas en Perl et qu'il aura suscit Camel Book) est l'ouvrage de rfrence sur Perl, votre intrt pour ce merveilleux langage ! possder absolument : Lien 246. D'autres livres sur Perl sont rfrencs sur ce site : Retrouvez l'article de Franois Lieuze en ligne : Lien 254 Lien 247.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 89

2D/3D/Jeux
Tutoriels et articles
Introduction au dveloppement en quipe pour la 3D Cet article explique comment aborder un dveloppment en quipe pour la 3D. Il vous expliquera les mesures de base mettre en place puis illustrera concrtement comment les mettre en place au travers d'un exemple concret : le projet AITC.
1. Objectifs de l'article Cet article a pour but d'illustrer concrtement quelques mthodes basiques pour le dveloppement de 3D interactive en quipe. Ces mthodes s'appliquent au jeu vido mais aussi la ralit virtuelle, ralit augmente ou tout autre domaine o il y a de la 3D interactive. On va aborder ensemble la vaste question : Esprons que tout cela puisse vous servir de base pour votre premier dveloppement amateur en quipe (entre 3 et 10 personnes maximum). Les logiciels utiliss sont 3dsMax 9, Virtools 3.5 et SVN. Les principes exposs ici sont suffisamment gnraux pour s'adapter d'autres moteurs. Introduction au dveloppement en quipe pour la 3D

Comment organiser efficacement un dveloppement en L'expos sera organis en grands chapitres. Dans un quipe ? premier temps nous allons analyser ce qu'est un dveloppement en quipe pour dterminer ce qu'il faudrait En effet, on travaille toujours en quipe quand on mettre en place pour assurer sans tranquillisants. Nous recherche une certaine qualit. Dans le cas d'une quipe verrons ensuite comment cela se traduit chacune des d'amateurs de jeu vido, le noyau dur sera constitu d'un grandes tapes de dveloppement. graphiste 2D/3D, d'un programmeur et d'un level/game designer. Parmi eux, le plus expriment (ou le moins con) 2. Approche gnrale : le dveloppement en quipe sera dsign comme chef de projet et aura comme tche d'organiser le dveloppement et d'affecter les tches. 2.1. Qu'est-ce qu'un dveloppement en quipe ? Sans ce minimum de comptences, il sera difficile de raliser quelque chose de sympa. Par ailleurs, on remarque Prcisons notre sujet : un dveloppement est un processus que ces comptences ne sont pas cumules par la mme de production numrique. Pour produire une application 3D, il faut suivre les tapes principales suivantes : personne. Vous serez donc bien oblig de bosser en quipe... Alors Les principales tapes de dveloppement : 1. la conception pour fixer les objectifs et les autant savoir ce qui vous attend. mthodes employes lors du projet ; 2. l'implmentation pour raliser les composants du Le plus important est de s'attacher ce que les diffrents projet ; intervenants du projet travaillent ensemble de manire 3. l'intgration pour associer les diffrents coordonne et sans gaspiller trop d'nergie. Il faudra viter composants du projet ; que Grard crase par inadvertance le boulot que Franois 4. les tests pour vrifier que le comportement des vient de faire dans le dcor du niveau, ou que Malik perde composants assembls est bien celui attendu. son temps coder un comportement pour la camra alors que Simon a dj dvelopp quelque chose d'intressant. Ce sont avant tout des problmes d'organisation et de communication la charge du chef de projet. Mais il existe des outils et des mthodes qui peuvent grandement simplifier sa tche et celle de toute l'quipe. Dans la littrature trs abondante qui existe sur le sujet de la gestion de projet, il existe assez peu d'exemples concrets qui concernent la 3D. De l'autre ct les articles techniques ne discutent pas de la gestion de projet. Nous avons donc fait le choix en rdigeant cet article d'avoir une approche mixte en illustrant trs concrtement chacune de nos propositions en les appliquant un exemple de projet nomm Alone In The Church (AITC). Pour tirer le maximum de cet article, le lecteur devra tre dj initi. Mme si ce processus est prsent ici comme une suite fixe d'tapes, dans les faits ce n'est pas un enchanement statique, parfaitement prdfini. En effet, dans tout processus de cration, y compris numrique, des ajustements, des modifications, des corrections seront effectus. C'est obligatoire : votre personnage, votre dcor, une interface ou mme un bug vont connatre plusieurs versions. Dans certains cas, et si vous n'tes pas chanceux et/ou expriment, il y aura mme certains retours en arrire qui provoquerons des pertes de temps considrables. Vous l'aurez compris, les tapes dcrites plus haut ne sont l que pour rationaliser votre approche et gagner en efficacit. Vous pourrez ensuite investir l'nergie conomise sur les aspects que vous jugerez essentiels : la jouabilit, l'originalit des graphismes ou l'adquation entre le gameplay et les situations dcrites par le scnario.
Numro HS 2 Hors srie spcial rentre Page 90

Developpez Magazine est une publication de developpez.com

OK, mais comment fait-on ? Et bien, il faut faciliter le work flow , c'est--dire le flux de travail littralement. On doit considrer le travail ralis comme un liquide ayant une source, une destination et un dbit. En s'assurant que le travail de chacun des membres de l'quipe dmarre au bon endroit et fini bien l o il doit finir (dans votre application et pas la poubelle), vous garantissez un dveloppement continu sans (trop) de surprise. Pour assurer cette fluidit, nous allons nous attacher ce qu'une modification puisse tre effectue et rpercute en consommant le moins d'nergie possible. Cela sous-entend qu'on doit aussi pouvoir simplement annuler cette correction si elle n'est pas satisfaisante malgr vos efforts. Compte tenu de la quantit et de la complexit des donnes manipules, c'est loin d'tre vident. Mais si vous inspirez des mesures qui ont cours dans le milieu professionnel et que vous les mettez correctement en place, c'est tout le processus de cration qui sera facilit, du graphiste au codeur. Voyons ensemble ces principales mesures en gardant l'esprit que Faire un jeu est tout sauf un jeu ! comme dirait l'autre. 2.2. Comment gagner en efficacit ?

documentation d'un composant ou tout autre lment du projet. Concrtement, votre projet est un simple rpertoire qui doit contenir au maximum dix sous-rpertoires, euxmmes ne contenant que dix sous-rpertoires et ainsi de suite. Tous les rpertoires doivent avoir un nom explicite. L'arborescence prcise dpend de la nature du projet mais on peut dj dire qu'il prendra la forme suivante : MonProjetQuiDchireTout DocumentsDeConception contient les documents de conception : Rfrences, scnario, design et ainsi de suite. Ressources Virtools du projet contient tous les composants de votre projet 3D, les textures, les modles 3D les comportements de camra... Modlisations contient les fichiers de conception de vos modles 3D de votre projet, c'est--dire les fichiers 3DSMax. Graphisme2D contient les fichiers conception de vos graphismes, c'est--dire les fichiers Photoshop ou autre. Compilation contient la dernire version compile de votre projet, sous forme de fichiers VMO pour notre exemple. Prototypes contient les prototypes de vos composants.

Les principales mesures pour s'assurer que les modifications sont simplement apportes au projet sont les suivantes : partager et scuriser les donnes ; Chaque membre de l'quipe doit avoir accs immdiatement tous les documents du projet qui lui sont ncessaires, y compris la documentation. grer les versions des fichiers ; Pour chaque lment du projet, on doit connatre sa version actuelle et qui l'a modifi en dernier. diviser pour rgner ; On doit faire en sorte que chaque lment du projet ne traite que d'un domaine limit et soit rutilisable. Tout grand problme devra tre divis en sous-problmes plus simples. compiler quotidiennement Le rpertoire du projet AITC On doit pouvoir compiler le projet tous les jours pour connatre son tat d'avancement et pouvoir Dans la figure ci-dessus, le rpertoire AITC contient les valuer o l'on en est. ressources du projet.

Ces mesures sont valables pour tous les lments du Ce rpertoire doit tre accessible tous les membres de projet : modlisation, texture, animation, documents de l'quipe via un serveur (site internet, ftp, rpertoire sur un conception, programmes... Tout, et pas d'exception. rseau local) et doit tre sauvegard automatiquement la fin de chaque journe de travail. Ainsi vous serez assur Abordons tout cela dans le dtail. qu'en cas de problme seule une journe de travail sera perdue. 3. L'efficacit du dveloppement point par point Ne sous-estimez pas ce point, car les disques durs vacillent bien plus souvent qu'on ne veut le croire. Qui plus est, plus 3.1. Partager et scuriser les donnes vous aurez bosser et plus votre matriel sera mis rude L'ensemble des informations doit tre accessible par tous preuve, et plus il aura de chance de flancher. les dveloppeurs. Cela veut dire qu'on doit savoir si l'information qu'on cherche existe et, si oui, o elle se Pour effectuer cette sauvegarde automatiquement, utilisez trouve. On pourra ainsi accder aux documents de un logiciel comme Cobian Backup (qui est gratuit) et conception, la bibliothque de matriaux, la sauvegardez vers un autre ordinateur. Vos donnes doivent
Numro HS 2 Hors srie spcial rentre Page 91

Developpez Magazine est une publication de developpez.com

toujours tre en deux lieux diffrents. Ne stockez que les cinq dernires versions de votre arborescence en fonction de la place disponible. Bien, vous avez enfin un rpertoire distant qui contient la dernire version de votre projet : c'est le vritable dossier de votre projet. partir de maintenant, vous ferez une copie sur votre poste de travail et travaillerez en local. Mais comment s'assurer que vous n'oublierez pas d'enregistrer les composants que vous modifierez ? C'est l qu'intervient le systme de gestion de version. 3.2. Les systmes de gestion de version Le dveloppement informatique est bien plus vieux que le Exemple d'historique d'un fichier .max jeu vido et un ensemble d'outils trs performants a t mis au point pour vous faciliter la vie. Alors autant en Dans certains cas, on peut aussi effectuer la fusion de profiter. modifications entre plusieurs versions d'un mme fichier. 3.2.1. Qu'est-ce que la gestion de version ? Par ailleurs, on peut bloquer les modifications sur un Comme son nom l'indique, c'est un procd qui permet de fichier pendant que l'on travaille dessus. De cette manire, grer plusieurs versions d'un mme fichier. En gros, vous pouvez empcher un autre membre de l'quipe d'y chaque membre de l'quipe peut rcuprer la dernire accder et de crer une version concurrente la vtre. version des fichiers d'un projet, modifier le fichier de son Notez au passage que si deux membres de l'quipe choix et le livrer une fois le travail termin. travaillent sur le mme fichier, le chef de projet n'a pas fait correctement son travail d'affectation des tches. 3.2.2. En quoi est-ce utile pour dvelopper de la 3D ? C'est une technique ancienne qui date des systmes UNIX et de CVS. Mme si le monde de la 3D a mis du temps s'approprier ces outils, ils sont maintenant considrs comme communs, voire indispensables dans le cadre d'une production srieuse. Par exemple, 3dsMax9 est livr avec un systme de gestion de version Vault Data Management . Virtools quant lui est compatible avec AlienBrain . Quant nous, nous avons choisi d'utiliser SVN qui a le bon got d'tre gratuit, trs performant, et compatible avec n'importe quel type de fichier (et pas seulement avec de la 3D). Les fonctionnalits sont trs nombreuses, et nous ne les citerons pas toutes. Mais pour finir soulignons le fait que le systme SVN peut fonctionner distance. Les donnes de l'quipe qui sont centralises sur le serveur distant peuvent tre rcupres via le net suivant diffrents protocoles, dont plusieurs scuriss. La classe quoi. 3.2.3. Et si je veux m'y mettre ? Comme dit plus haut, nous avons adopt pour cet article SVN (le successeur de CVS) et TortoiseSVN pour une intgration dans l'explorateur Windows.

Il faut bien comprendre qu'un systme de gestion de Vous pouvez simplement l'installer chez vous en suivant version est un outil incontournable pour une quipe qui les explications dtailles disponibles l'adresse suivante : souhaiterait obtenir des rsultats de qualit. Car qui dit Lien 255. qualit dit aussi organisation et outils . Attention, mme si ces outils sont performants ils ne se On va voquer rapidement les avantages et la souplesse substituent pas au travail de gestion de projet. On ne doit que ces outils apportent, et qui leur ont permis de pas oublier d'autres mesures comme les conventions de s'imposer. nommage, ou l'affectation des tches et des dlais... Un intrt assez visible consiste dans la simplification de 3.2.4. Application concrte : une infrastructure l'arborescence de travail du projet : on ne se trane pas les Concrtement, vous devrez disposer de l'infrastructure vingt-cinq versions d'un fichier. suivante : un serveur distant pour : stocker votre projet sous la forme d'un rpertoire gr par SVN ; effectuer les sauvegardes quotidiennes du projet vers une autre destination grce CobianBackup. des postes de travail client quips : Sans gestion des versions Avec gestion des versions d'un rpertoire local de travail o sera place la dernire version du projet par Mme si on dispose d'un unique fichier, on peut tout SVN ; moment rcuprer l'historique des modifications effectues des logiciels de travail : 3dsMAx, ainsi que n'importe quelle version antrieure. Virtools, Photoshop....
Numro HS 2 Hors srie spcial rentre Page 92

Developpez Magazine est une publication de developpez.com

Cette infrastructure peut sembler consquente au premier abord. Toutefois, si on considre les objectifs de qualit atteindre et le fait que vous travaillez en quipe, elle n'est pas si consquente et reste accessible des amateurs clairs. Enfin, si l'effectif de l'quipe devient important (suprieur trois), une petite amlioration peut consister hberger sur votre serveur le site internet de l'quipe. Ralis sous la forme d'un site de news, il vous permettra d'assurer la communication du projet, en interne et en externe. 3.3. Diviser pour mieux rgner

faut avant tout viter les rflexions du type Modifier l'animation de marche du personnage ? P***tain... entre le .max et le moteur de jeu, je vais encore y passer 3 plombes. . Dans une telle situation ce n'est pas tant la modification qui est fastidieuse mais de la rpercuter. Il va falloir naviguer dans des dizaines de menus pour spcifier le nouveau fichier charger la place de l'ancien... On doit absolument viter cette situation qui consiste avoir peur d'apporter une modification. Si c'est le cas, c'est le moment de tirer la sonnette d'alarme : vous tes en train de refuser d'amliorer votre propre projet.

Quand un fichier va contenir une trop grande quantit de donnes, il faut le scinder en plusieurs fichiers de plus Votre solution : l'intgration automatique. Elle est plus petite taille. difficile mettre en place au dbut du projet, mais vous ne pourrez plus vous en passer par la suite. Le contenu de chaque sous-fichier sera beaucoup plus simple que le contenu du fichier original. Par consquent, Pour vous en convaincre, comparons ensemble le temps il sera beaucoup plus simple de s'y retrouver, pour ncessaire pour intgrer une modification dans le cas o le intervenir et maintenir le fichier. systme d'intgration est automatique ou manuel.

Par ailleurs, on permettra ainsi plusieurs personnes de On suppose que raliser une modification prend cinquante travailler en mme temps sur ces donnes. minutes et l'intgrer manuellement prend dix minutes soit un temps total d'une heure. On suppose aussi que A priori, les critres pour dcider si on divise un fichier l'intgration automatique demande dix heures d'efforts sont : pour tre mise en place, mais permet ensuite d'intgrer en s'il devient difficile manipuler ; seulement deux minutes. Si on ralise un graphique pour si plusieurs personnes doivent intervenir comparer les temps pour raliser une modification et rgulirement sur son contenu. l'intgrer manuellement ou automatiquement, on obtient le rsultat suivant : Par habitude, le moment de scinder un fichier est toujours repouss. L'intrt n'est pas vident au premier abord, mais une fois dans une priode de stress vous rlerez abondamment sur ce p*** de fichier ingrable. N'attendez pas que a se produise, anticipez si vous le pouvez. L'autre aspect de cette mesure est de vous amener produire des composants indpendants et donc rutilisables. C'est excessivement important, car cela vous permettra d'utiliser vos composants dans un autre projet. De cette manire vous gagnerez un temps prcieux. On voit trs clairement que ds qu'on fait plus de dix modifications, l'intgration manuelle prend toujours plus de temps que l'intgration automatique. Et plus vous ferez Prenons, comme par hasard, l'exemple d'un dcor de modifications et plus il sera intressant de mettre en reprsentant une cathdrale. On va scinder ce fichier car le place un systme d'intgration automatique. dcor devient trop grand. On est constamment oblig de cacher des parties pour s'y retrouver et on perd un temps Effectivement cet exemple est un peu artificiel, mais prcieux. rflchissez : tes-vous sr que chaque membre de l'quipe fera moins de vingt modifications dans tout le projet ? On dcide donc de prendre certaines parties de ce dcor Multipliez a par le nombre de membres de l'quipe et il pour les placer dans d'autres fichiers. L'entre sera place devient vident qu'un systme d'intgration automatique dans un fichier part, la nef aussi ainsi que les ailes. Le est rentable trs vite. fichier original existera toujours, mais il ne contiendra simplement que des liens vers les autres fichiers, rendant 3.4.1. Application : le comportement de la camra ainsi la maintenance bien plus simple. Malik travail sur la gestion de la camra. Depuis deux Nous y reviendrons en dtail dans la seconde partie de cet jours il travaille beaucoup : l'quipe est en retard. article. Heureusement pour lui, il vient de terminer son composant et part chercher un caf bien mrit. son retour devant 3.4. La compilation quotidienne son PC, il teste son composant et a une nouvelle ide. Il dcide de la tester en codant une nouvelle version de son On part du principe qu'on doit dpenser le minimum composant camra. Il le fait sereinement car il sait que d'effort pour apporter une correction ou la supprimer. Il mme si son nouveau composant n'est pas bon, il pourra 3.3.1. Application : le dcor
Numro HS 2 Hors srie spcial rentre Page 93

Developpez Magazine est une publication de developpez.com

revenir la version prcdente en trs peu de temps. Par contre, si son composant est bon il peut participer augmenter la qualit du projet. En plus, Malik aura une bonne image de lui ; l'quipe sera rassure de voir qu'elle peut produire plus que le strict ncessaire. Et tout cela va participer dtendre l'atmosphre et instiller une bonne ambiance : ce qui ne peut tre que bon pour le projet.

4.1. tude des graphismes : le dcor Nous allons voir comment chacune des quatre tapes de dveloppement a t aborde par l'quipe des graphistes, et comment se traduisent concrtement les prconisations du chef de projet. 4.4.1. Conception : tude et design du dcor

Grce l'intgration automatique, substituer deux versions Sur la base de l'orientation dfinie par le synopsis, une d'un composant est quasiment instantan. banque d'images de rfrences a t constitue pour raliser le dcor. Cette banque d'images est stocke dans En supprimant l'tape d'intgration manuelle on arrive plus un sous-rpertoire EtudeGraphiqueDecor dans le vite la phase de test. Ainsi on peut remarquer plus tt les rpertoire DocumentsDeConceptions . Un fichier texte dfauts et les corriger aussi plus rapidement. On favorise contenant les rflexions des graphistes sur le sujet est aussi donc la qualit. cr. Par ailleurs, remarquez que le temps ncessaire une intgration manuelle n'est plus gaspill. Si la personne qui apportait la modification est comptente a aurait t un vritable gchis. Une premire partie de cette banque d'images est constitue de photographies ralises dans un lieu s'approchant correctement de l'esprit du projet, ici la cathdrale Saint-Pierre de Poitiers. Ces photos permettent d'approcher dans le mme temps le dcor dans sa globalit Maintenant vous pouvez rinvestir ce temps conomis et les dtails qui le composent. ailleurs : babyfoot, machine caf, ou mdire des chefs. Ces photos sont stockes dans un sous-rpertoire 4. tude d'un cas ReferencesPoitiersChatedrale de manire les dissocier des autres images derfrence. Maintenant que nous avons expos les mesures prendre, il est temps de passer l'application. Pour rester efficaces et viter de nous perdre dans une trop grande complexit nous allons nous cantonner une partie du projet : le dcor. On souhaite raliser un dcor de niveau de jeu pour effectuer une dmonstration technique de notre savoirfaire. Le projet est prcis dans un document de conception de base : le synopsis. Synopsis du projet AITC On souhaite raliser une dmonstration de notre savoirfaire en ralisant une visite virtuelle d'un chteaucathdrale . Le dcor devra sembler crdible, vieux et impressionnant. L'accent sera mis sur la qualit graphique et, dans cette optique, on devra utiliser tous les procds disponibles (lightmaps, normal mapping et shaders). En termes d'interactions, ce sera trs simple : l'utilisateur pourra dplacer une camra sans contraintes particulires. Elle devra simplement afficher les statistiques courantes pour valuer les performances de l'application. Rfrences gnrales du projet AITC Cette approche gnrale tant satisfaisante, l'quipe complte sa vision du dcor grce des plans architecturaux qu'elle stocke parmi les documents de conception dans le sous-rpertoire RfrencesPoitiersPlans .

L'arborescence devient donc : DocumentsDeConceptions EtudeGraphiqueDecor ReferencesPoitiersChatedrale RfrencesPoitiersPlans Decor.doc Vous noterez que ce synopsis n'est pas trop dtaill. L'quipe n'a pas de vision prcise et sait que le projet voluera en fonction des premiers rsultats. Pour autant elle ne souhaite pas perdre le travail qu'elle aura effectu pour en arriver l. Dans la partie suivante, nous allons suivre le travail des membres de l'quipe en charge du graphisme. On suppose que le reste de l'quipe va fournir les composants qui n'auront pas t produits dans cette partie. Rfrences dtailles : plan au sol
Numro HS 2 Hors srie spcial rentre Page 94

Developpez Magazine est une publication de developpez.com

Dans ce plan, un module de base est prsent 3x8 fois quelques dtails prs. Ce module est constitu de deux composants de base :

Rfrences dtailles : coupe transversale

Rfrences dtailles : coupe longitudinale

un composant intgrant simplement la colonne

un autre composant constitu du plafond et du sol

Multipli correctement, ce module permet de gnrer assez cette tape, l'quipe des graphistes considre que la simplement une bonne partie du dcor. En plus, en conception est suffisamment avance pour se lancer dans utilisant dans 3dsMax le clonage par rfrence de la modlisation du dcor. l'lment de base, l'quipe s'assure que seul un objet en mmoire est ncessaire. C'est une belle optimisation. 4.1.2. Ralisation : modlisation du dcor L'objectif est de trouver le bon compromis entre qualit visuelle et performances. L'approche adopte consiste donc limiter le nombre de polygones prsents dans la scne. Les formes gnrales vont tre simplifies, et des textures seront prfres la gomtrie pour raliser les dtails. Enfin, comme on considre que l'utilisateur ne pourra se dplacer que dans l'intrieur de la cathdrale, les faces qui ne seront jamais vues seront supprimes. Toujours pour simplifier la modlisation et limiter le nombre de faces, l'quipe choisit d'appliquer la stratgie du diviser pour rgner . En effet, une cathdrale est un cas assez vident de motifs rpts. L'quipe va donc utiliser des lments de base qui seront ensuite multiplis pour crer le dcor. Enfin, une simplification gnrale du plan rel est effectue pour obtenir le plan du dcor modlis. Sur ce plan, un repre de rfrence est mis en place sous la forme d'un damier pour placer et retrouver facilement un objet particulier.

Multiplication du module Le rsultat est globalement satisfaisant mais il apparat vident que la scne va devenir trs rapidement extrmement complexe. En effet, beaucoup d'autres lments vont venir se greffer sur la scne dj existante. L'quipe des graphistes choisit donc encore une fois de diviser pour rgner pour sa gestion des fichiers. Chacun des lments de base (ou module) de notre scne va tre plac dans un fichier spar. Un fichier vide de toute gomtrie propre va tre cr : le fichier Cathdrale.max qui va contenir des rfrences vers les modules. D'un point de vue technique, on va faire usage des Xref Objects pour pointer les modules dont on a besoin.

Plan du dcor modlis

Fentre Xref

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 95

Cette solution est trs intressante plus d'un titre. En En outre, les programmeurs ont ralis les composants premier lieu, l'usage de rfrences l'optimise fortement et supplmentaires suivants : permet une maintenance aise. Mais le plus important est Statistics va permettre d'afficher les que grce l'usage de XRef objects plusieurs statistiques courantes (nombre de faces affiches, personnes peuvent intervenir en mme temps sur le dcor. frquence de rafraichissement) ; Un graphiste peut retravailler la colonne pendant qu'un AitcFreeCam est la camra de base qui autre s'attache dtailler un peu plus les murs latraux. permet la navigation. C'est une adaptation de la FreeCam de base fournie avec Virtools. On a De cette manire les diffrents modules ont pu tre raliss simplement modifi l'affectation des touches de rapidement : la charge de travail a t rpartie entre les navigation ; diffrents graphistes, et on a su viter un goulot Interface est un petit module qui permet d'tranglement. d'afficher et de masquer le calque Fil de fer et les textures. Il a t ralis pour permettre de saisir la complexit de la modlisation ; enfin FxFire est un petit effet spcial simulant du feu dans la chemine. Comme le projet avanait bien, il a t ralis pour mettre un peu de vie dans ce dcor, encore un peu vide. Module entre Module nef Chaque composant est stock dans le rpertoire des ressources, avec son aide en html et un fichier expliquant son utilisation, de la mme manire que comme les composants par dfaut de Virtools. Ainsi la documentation est assure.

Module ct

Script de chargement de composants

Dans Cathdrale.max , une fois que les modules de base sont multiplis par rfrence correctement et 4.1.4. Tests positionns on obtient le rsultat suivant : Enfin, la premire compilation du projet est ralise. Aprs les ajustements ncessaires, une version satisfaisante est obtenue.

Cathdrale assemble La scne est ensuite exporte dans les ressources du projet au format Virtools Cathe.nmo . Notre dcor apparatra bien comme un composant unique alors mme qu'il est l'assemblage de diffrents composants. 4.1.3. Intgration Pendant que les graphistes travaillaient, les programmeurs ont mis en place une composition Virtools (.cmo) qui contient un petit script qui permet l'intgration automatique. La composition ne contient en fait que deux informations : les composants charger et comment les charger. Tous les composants intgrs dans Virtools L'quipe publie cette version directement dans une page de Test sur le site du projet : Lien 256. En effet la technologie employe permet une intgration directement en page web, alors autant en profiter. L'quipe n'attend plus que les commentaires des testeurs pour ajuster ses prochaines orientations. Et d'ores et dj, on pense mettre en place un systme de commentaires anonymes pour recueillir directement les impressions des testeurs.

Tableau des composants charger


Numro HS 2 Hors srie spcial rentre Page 96

Developpez Magazine est une publication de developpez.com

5. Conclusion Aprs un travail sur l'ensemble des composants, le projet a Nous avons pu voir comment les graphistes ont appliqu sensiblement volu pour atteindre une nouvelle version les mesures pour le travail en quipe. Correctement disponible sur cette page : Lien 257. C'est mieux non ? orients, ils ont pu rapidement raliser un travail satisfaisant. Pour l'instant le projet reste fig cette tape. Il n'est pas abandonn mais disons que l'quipe a besoin de faire un Toujours est-il que beaucoup de choses manquent ou vont break. En fait, il n'y pas d'quipe : le projet a t ralis par changer : certaines modlisations vont tre corriges et les une personne seule, l'auteur du prsent article, votre textures et les shaders doivent tre raliss. humble serviteur. Le rsultat final ne sera obtenu qu'aprs de multiples itrations successives et tous les membres de l'quipe le savent. En discutant et en faisant en sorte que chacun puisse faire correctement son travail a devrait passer tranquille. Enfin le premier commentaire arrive : la petite sur d'un des membres de l'quipe a crit un petit mail sympathique : Quoi ? Pas de collision ? Vous n'avez jamais entendu parler d'arbre BSP ? Bing, c'est a l'assurance qualit : tre capable d'entendre ce que les autres disent sur votre produit, et ce n'est pas toujours facile. Mais dj, dans l'ombre de leurs bureaux, les programmeurs fous pensent une mthode pour uniformiser les communications entre scripts... 6. pilogue titre indicatif, pour atteindre son niveau actuel (article compris), le projet a demand prs de deux mois et demi temps plein une personne exprimente dans tous les secteurs du dveloppement. J'espre que ceci vous permettra d'valuer plus prcisment les efforts et dlais ncessaires pour votre propre projet, et que les recommandations vous permettront d'obtenir un rsultat similaire en moins de temps, ou un rsultat de meilleure qualit dans le mme temps. Si vous tes intresss pour continuer cette aventure (documentation comprise), contactez-moi par message priv. Et nous pourrons peut-tre la fonder, cette quipe.

Retrouvez l'article de Guillaume Lemasson en ligne : Lien 258 Version actuelle Architecture d'un jeu vido 3D

Architecture d'un jeu vido 3D Cet article prsentera un modle d'architecture pour la ralisation de jeux vidos en 3D. Connaissances requises : C++.
1. Introduction Je vais prsenter un modle d'architecture pour la ralisation d'un jeu vido en 3D. Ce modle devra pouvoir s'adapter simplement aussi bien la ralisation d'un jeu la premire personne (FPS), d'un jeu de stratgie (RTS) ou mme d'autres types de jeux. L'architecture prsente pourra galement grer les jeux en mode multijoueurs en rseau local ou sur internet. De mme, l'architecture pourra tre simplement tendue pour la ralisation de jeux massivement multijoueurs: MMOFPS, MMORTS, MMORPG ... Cette architecture sera entirement code avec des bibliothques multiplateformes. 1.1. Schma gnral Mme sans savoir quel type de jeu on va crire, il y aura toujours un socle commun, permettant de faire dialoguer des modules, permettant d'interfacer les diffrents moteurs mis en jeu. Je vais utiliser les outils suivants :

Irrlicht pour le rendu 3D la gestion des entres utilisateur ; CEGUI pour la gestion des menus et des lments graphiques non 3D ; L'objectif n'tant pas de fournir un jeu commercialisable, asio pour la gestion du rseau et les threads ; mais un modle d'architecture sur lequel se baser pour Irrklang pour le son ; raliser un jeu. boost. Le jeu contiendra des modules plus ou moins indpendants, grant chacun un aspect du jeu. L'objectif
Numro HS 2 Hors srie spcial rentre Page 97

Developpez Magazine est une publication de developpez.com

tant bien sr de rendre possibles les dveloppements des diffrents modules en parallle, sans que a n'entrane d'effets de bord dans les autres modules.
private: };

~game(); // ...

std::list<engine*> l_modules;

Il va nous falloir une classe gnrique pour reprsenter un moteur du jeu : classe gnrique pour un moteur Un objet contiendra tous les modules. D'un point de vue purement conceptuel, l'architecture peut contenir un nombre non dfini de modules, il faut donc les stocker dans un conteneur style std::list. Chaque module aurait un pointeur vers l'architecture, permettant ainsi d'accder aux autres lments de la liste des modules. 1.2. Les contraintes, les objectifs L'architecture devra pouvoir convenir un maximum de types de jeu, il ne faut donc faire aucune supposition sur l'utilisation qui en sera faite. Nous avons une trs forte contrainte de performances : l'architecture propose devra tre aussi lgre que possible tant en ressources processeur, qu'en mmoire ou en espace disque ncessaire. L'architecture devra aussi tre lgre en utilisation du rseau, de manire favoriser des changes rapides et supports par les bandes passantes les plus modestes. Les modules tant les pices de base de l'architecture, ils devront pouvoir communiquer simplement et rapidement entre eux. Dans le cas d'un jeu multijoueur, il faudra pouvoir tirer profit des machines puissantes pour leur assigner des tches telles que la gestion de personnages non joueurs.
class engine{ public: engine(game*); virtual ~engine(); // accepter les messages des autres moteurs void push_event(engine_event& e){ events_queue.push(e); } // traite la file des messages void process_queue(){ while (! events_queue.empty()){ engine_event e = events_queue.front(); events_queue.pop(); process_event(e); } } // traitement propre chaque moteur virtual void frame() = 0; protected: // pointeur vers l'objet contenant game *parent; // file des messages traiter std::queue<engine_event> events_queue; // traitement d'un message, propre chaque moteur virtual void process_event(engine_event&) = 0; };

Voici un diagramme de classes simplifi pour les principales classes mises en jeu :

Je dtaillerai plus loin le principe des objets engine_event, messages envoys d'un module l'autre. La classe engine possde des fonctions virtuelles pures, elle ne peut donc pas tre instancie. Nanmoins, on remarque que pour pouvoir communiquer avec un autre module, il va falloir remonter l'objet contenant pour rcuprer un pointeur sur le module atteindre, ventuellement downcaster le pointeur pour pouvoir accder aux fonctions propres ce module et ensuite spcifier les oprations effectuer. Les files de messages peuvent potentiellement tre accdes par des traitements parallles, chaque moteur doit Voici la classe de base de notre architecture, celle qui sera donc possder un mutex verrouiller chaque ajout de message et chaque vidage de la liste. instancie pour dmarrer le jeu. 2. Les diffrents modules classe de base pour notre architecture
class game{ public: game();

J'ai choisi de mettre les modules suivants : le moteur de jeu, pour grer les diffrents joueurs et toutes les donnes propres au jeu ; le moteur graphique, charg de reprsenter la
Numro HS 2 Hors srie spcial rentre Page 98

Developpez Magazine est une publication de developpez.com

vision du jeu pour un joueur (le joueur ayant physiquement dmarr le jeu ; le moteur audio, charg de reprsenter l'aspect audio du jeu pour un joueur particulier ; le moteur de rseau, charg d'changer les donnes avec les autres joueurs.

delete delete delete delete }

n; g; gfx; s;

2.1. Communication entre les modules La communication entre les modules tant vraiment la base de notre architecture, de trs nombreux appels seront effectus pour faire communiquer nos modules, cet aspect doit donc tre le plus rapide possible. On pourrait mettre en place un systme d'accesseur dans l'architecture pour renvoyer les pointeurs demands, mais a restera beaucoup plus lourd que des accs directs. C'est pourquoi j'ai choisi de donner chaque moteur des pointeurs 'en dur' vers les autres modules. Cela ncessite de connatre l'avance le nombre de modules mettre en jeu.

Le constructeur de la classe engine sert principalement renseigner le conteneur parent pour chaque module. Ce constructeur devra tre appel partir des constructeurs des classes filles.

L'excution proprement dite du jeu consistera simplement en des appels continus toutes les fonctions frame() des diffrents moteurs. La condition d'arrt de cette boucle quasi infinie devra tre modifie par le moteur de jeu. L'architecture possde donc un boolen reprsentant l'arrt du programme. Ce boolen devra tre protg par des verrous pour se garantir des accs concurrents ventuels. Chaque moteur comporte ainsi quatre pointeurs vers les moteurs de jeu, graphique, audio et rseau. De mme, class game{ chaque module possde une fonction permettant // ... d'atteindre directement les files de messages des autres boost::mutex still_running_mutex; modules. Pour cela, il est ncessaire de lier tous les bool still_running; modules entre eux lors de leur cration. // ...
}; void game::run(){ bool current_still_running = still_running; // on cre un verrou pour accder au class game{ // ... game_engine *g; graphics_engine *gfx; network_engine *n; sound_engine *s; }; class engine{ // ... void send_message_to_graphics(engine_event&); void send_message_to_network(engine_event&); void send_message_to_game(engine_event&); void send_message_to_sound(engine_event&); game_engine *ge; network_engine *ne; graphics_engine *gfxe; sound_engine *se; // ... };

mutex

boost::mutex::scoped_lock l(still_running_mutex); l.unlock(); while (current_still_running){ n->frame(); g->frame(); gfx->frame(); s->frame(); l.lock(); current_still_running = still_running; l.unlock(); } }

Ainsi, pour terminer le jeu, il suffira d'appeler un modificateur du boolen still_running.


void game::stooooop(){ boost::mutex::scoped_lock l(still_running_mutex); still_running = false; }

Voici le code du constructeur de l'architecture, qui va lier tous les modules entre eux :
game::game(){ n = new network_engine(this); g = new game_engine(this); gfx = new graphics_engine(this); s = new sound_engine(this); // lier tous les modules ensemble n->attach_game_engine(g); n->attach_graphics_engine(gfx); n->attach_sound_engine(s); g->attach_graphics_engine(gfx); g->attach_network_engine(n);

La libration du mutex est faite automatiquement la fin de la porte du verrou. Le destructeur de boost::mutex::scoped_lock appelle la fonction unlock(), il n'est donc pas ncessaire de le spcifier explicitement. Le destructeur de la classe game va appeler les destructeurs de tous les modules instancis.
game::~game(){

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 99

g->attach_sound_engine(s); gfx->attach_game_engine(g); gfx->attach_network_engine(n); gfx->attach_sound_engine(s); s->attach_game_engine(g); s->attach_graphics_engine(gfx); s->attach_network_engine(n); }

classe de vecteurs srialisable


class serializable_vector3df : public irr::core::vector3df{ public: serializable_vector3df(){} serializable_vector3df(irr::core::vector3 df& v):irr::core::vector3df(v){} template<class Archive> void serialize(Archive& ar, const unsigned int){ ar & X; ar & Y; ar & Z; } };

Les diffrentes fonctions attach_XXX se contentent de recopier les adresses fournies dans les pointeurs vers les autres modules. Une fois l'architecture cre, tous les modules sont capables de communiquer entre eux, c'est dj une bonne chose de faite. L'attribut engine_event::type permettra de reprer le type de message, de manire orienter la recherche des Les modules ont donc deux moyens pour communiquer informations dans les std::map. entre eux : s'envoyer un message au travers des files de messages ou bien appeler directement les fonctions des Il faudra penser utiliser des clefs de std::map aussi autres modules. L'envoi de messages a l'avantage qu'il courtes que possible : en effet, ces clefs seront elles aussi renforce la sparation des modules, par contre, pour srialises et envoyes. Quitte mme les troquer contre chaque message qu'on peut envoyer d'un module l'autre, des int ou d'autres types plus lgers. le module rcepteur devra tre capable de le lire et de l'interprter. L'envoi de messages est lgrement plus Suivant les informations que vous choisirez d'envoyer par coteux puisqu'il va demander l'empilage du message sur l'intermdiaire de ces engine_events, vous n'utiliserez pas la file du rcepteur ainsi que l'analyse du message lors de ncessairement les quatre std::maps proposes, vous sa rception. Il ne faudra donc pas trop abuser des envois pourrez donc sans problme en supprimer l'une ou l'autre. de messages entre les modules pour privilgier les appels Les messages s'en trouveront plus lgers et plus rapides directs. changer, notamment sur le rseau. 2.1.1. Les messages Il nous faut une classe pouvant reprsenter tous les types de messages qui peuvent tre changs entre nos modules. Et pour faire encore plus gnrique, il faudrait que cette classe puisse aussi tre utilise pour communiquer entre les diffrentes machines du rseau. Les diffrents modules et les diffrentes machines peuvent s'envoyer des informations de diverses natures : des chaines de caractres, des simples nombres, des vecteurs 3D reprsentant des positions... 2.2. Ajout d'un module Dans le cas de l'utilisation d'une liste de modules std::list<engine*> il est trs simple d'ajouter un module, il suffit d'ajouter un item cette liste. Par contre dans notre cas, o les modules accdent directement les uns aux autres, il va falloir rajouter un pointeur membre dans la classe game ainsi que dans la classe engine. De mme, il va falloir attacher ce nouveau module tous ceux dj existants.

2.3. Utilisation des modules en mode passif J'ai choisi d'utiliser une classe comprenant des std::map Toujours dans un souci de rutilisation, certains modules pour diffrents types de donnes : doivent pouvoir tre dmarrs en mode passif. Par exemple, il pourra tre intressant de ne pas faire class engine_event{ d'affichage dans le moteur graphique dans le cas d'un public: int type; serveur de jeu. On gagnera en performances. En effet, le std::map<std::string, std::string> moteur graphique et le moteur audio ne sont que la partie s_data; visible du jeu pour un joueur donn. L'ide est de pouvoir std::map<std::string, int> i_data; lancer le jeu en mode dmon, pour qu'il puisse se std::map<std::string, float> f_data; concentrer sur la gestion du jeu et des autres joueurs.
std::map<std::string, serializable_vector3df> v_data; bool operator==(const engine_event& e); template<class Archive> void serialize(Archive& ar, const unsigned int); };

Pour pouvoir lancer le jeu dans un tel mode, il va falloir paramtrer l'excution : en passant des paramtres par la ligne de commande.

J'ai donc cr une petite classe permettant d'analyser les paramtres de la ligne de commande. Cette classe n'est pas serializable_vector3df reprsente simplement une classe primordiale, elle a plus un rle d'accessoire qu'autre chose, fille de la classe de vecteur 3D de flottants d'Irrlicht. J'ai mais elle est bien pratique tout de mme. spcialis cette classe pour la rendre srialisable, donc pour pouvoir l'envoyer simplement sur le rseau en class parameter_analyser{ public: utilisant boost::serialize :
parameter_analyser();

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 100

char**); };

parameter_analyser(int, // argc, argv std::map<std::string, bool> data;

de jeu. Elle sera donc cre lors de son instanciation. La dclaration complte de la console
class console{ public: console(game_engine*); ~console(); void process_command(CEGUI::String&); void process_command(std::string&); void handle_accept_tcp(const asio::error_code&, asio::ip::tcp::socket*); void server_thread_tcp_receive(asio::ip::tcp::socket *); private: game_engine *parent; asio::ip::tcp::socket *s; asio::ip::tcp::acceptor *tcp_acceptor; asio::io_service io; };

Le constructeur se contente d'analyser tous les paramtres de la ligne de commande et de remplir la std::map true lorsque le paramtre a t spcifi. Si les paramtres ne sont pas spcifis dans la ligne de commande, les valeurs de data sont mises false. Par exemple, une excution avec l'option --daemon ou -d mettra la valeur associe la clef "daemon" true. Il suffit ensuite de passer une rfrence sur l'instance de parameter_analyser au constructeur game() qui analysera les donnes pour appeler un constructeur de module ou un autre. Ainsi, on peut crer un constructeur de moteur graphique qui accepte un boolen, suivant qu'il faut ou non crer un contexte graphique. Idem pour le moteur audio.

Le jeu dmarr en mode passif doit tre contrl diffremment. En effet, vous ne pouvez pas interagir avec Le constructeur la souris ni le clavier, et c'est encore plus vrai si vous console::console(game_engine* g):parent(g){ // cration de la socket d'coute associez au mode passif la cration d'un nouveau s = new asio::ip::tcp::socket(io); processus de manire rendre la main sitt aprs le tcp_acceptor = new dmarrage du jeu. C'est la raison pour laquelle il va falloir asio::ip::tcp::acceptor(io, mettre en place un systme de console connaissant asio::ip::tcp::endpoint(asio::ip::tcp::v4(), quelques commandes de base. 12345)); Prenons le cas d'un serveur de jeu, il faut pouvoir communiquer avec le serveur via le rseau. Notre console va donc presque naturellement couter le rseau, accepter les connexions sur un port particulier, ventuellement faire une authentification par login / mot de passe puis va tre en coute des commandes. Pour scuriser encore la transmission, on pourrait passer par une couche SSL (Lien 259).
class console{ public: console(); ~console(); void process_command(std::string&); // fonction lancer pour chaque client void server_thread_tcp_receive(asio::ip::tcp::socket *); // ... private: // attributs propres la gestion rseau : sockets, contexte rseau... }; asio::error_code e; tcp_acceptor->async_accept(*s, boost::bind(&console::handle_accept_tcp, this, e, s)); asio::thread t(boost::bind(&asio::io_service::run, &io)); if (e.value() != 0){ std::cerr << e.message() << std::endl; } }

Le constructeur cre une socket qui va couter les connexions TCP sur le port 12345. A chaque connexion entrante, il va appeler console::handle_accept_tcp. Cet appel est effectu en mode asynchrone. Chaque appel handle_accept_tcp va dmarrer un thread pour s'occuper de cette connexion :
void console::handle_accept_tcp(const asio::error_code& e, asio::ip::tcp::socket* socket){ if (e.value() != 0){ std::cerr << e.message() << std::endl; return; } // on dmarre le thread du client asio::thread t(boost::bind(&console::server_thread_tcp_receive , this, socket)); // on rarme l'appel asynchrone avec une nouvelle socket asio::ip::tcp::socket *s = new asio::ip::tcp::socket(io);

La ralisation d'une telle console revient ni plus ni moins implmenter un serveur multiclient. Et pour les mmes raisons que dans mon prcdent article sur une architecture de serveur multithreads, j'ai choisi d'utiliser un contexte multithread. Nous pouvons ainsi simplement grer plusieurs connexions simultanes. Pour des raisons de simplicit et surtout de robustesse, j'ai choisi d'utiliser la bibliothque asio pour la gestion du rseau. 2.3.1. Implmentation du systme de console Il va falloir rattacher la console quelque part dans notre architecture. J'ai choisi de la placer en attribut du moteur

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 101

asio::error_code ec; tcp_acceptor->async_accept(*s, boost::bind(&console::handle_accept_tcp, this, ec, s)); }

Et chaque rception d'une instruction, on appelle le traitement de cette instruction. C'est ici qu'on doit implmenter au moins la commande de fermeture.
void console::process_command(std::string& c){ if (c == "quit") parent->parent->stooooop(); // autres instructions existantes }

Il ne nous reste plus qu' couter les instructions envoyes par le client :
void console::server_thread_tcp_receive (asio::ip::tcp::socket *s){ // authentification ventuelle // on attend les instructions de manire bloquante for (;;){ boost::array<char, 1024> buf; asio::error_code error; size_t len = s>read_some(asio::buffer(buf), error); if (error == asio::error::eof) break; // la connexion a t interrompue else if (error) break; process_command(std::string(buf.d } s->close(); delete s; }

2.3.2. Un client pour la console J'ai crit un client basique pour pouvoir accder la console distance sur un tel serveur de jeu. Il s'agit simplement d'une fentre de saisie de commande :

ata()));

Le code source de ce client est galement disponible dans l'archive en tlchargement la fin de cet article.

Le protocole est extrmement simple : le client envoie des Retrouvez la suite de l'article de Pierre Schwartz en instructions et le serveur lui renvoie le rsultat de la ligne : Lien 260 rception, tout a sous forme de chanes de caractres.

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 102

Liens
Lien 01 : http://dico.developpez.com/html/910-Langages-JSP-Java-Server-Pages.php Lien 02 : http://java.developpez.com/cours Lien 03 : http://java.developpez.com/ Lien 04 : http://bruce-eckel.developpez.com/livres/java/traduction/tij2/ Lien 05 : http://jmdoudoux.developpez.com/java/ Lien 06 : http://mbaron.developpez.com/javase/java/ Lien 07 : http://java.developpez.com/livres/?page=Debutants#L2212111002 Lien 08 : http://java.developpez.com/livres/?page=Debutants#L2212117485 Lien 09 : http://java.developpez.com/livres/?page=Debutants#L284177371X Lien 10 : http://dico.developpez.com/html/2990-Langages-EDI-Environnement-de-Developpement-Integre.php Lien 11 : http://eclipse.developpez.com/ Lien 12 : http://netbeans.developpez.com/ Lien 13 : http://dico.developpez.com/html/749-Langages-AWT-Abstract-Window-Toolkit.php Lien 14 : http://dico.developpez.com/html/1031-Langages-Swing.php Lien 15 : http://baptiste-wicht.developpez.com/tutoriel/java/swing/debutant/ Lien 16 : http://gfx.developpez.com/tutoriel/java/gui/ Lien 17 : http://gfx.developpez.com/tutoriel/java/swt/ Lien 18 : http://java.developpez.com/livres/?page=Desktop#L2100081799 Lien 19 : http://java.developpez.com/livres/?page=Francais#L2212120192 Lien 20 : http://dico.developpez.com/html/156-Langages-JDBC-Java-DataBase-Connectivity.php Lien 21 : http://dico.developpez.com/html/3039-Langages-Hibernate.php Lien 22 : http://java.developpez.com/IntroJDBC.pdf Lien 23 : http://jguillard.developpez.com/JDBC/ Lien 24 : http://gfx.developpez.com/tutoriel/java/hibernate/ Lien 25 : http://tahe.developpez.com/java/jpa/ Lien 26 : http://java.developpez.com/livres/?page=Francais#L2212116446 Lien 27 : http://ibatis.apache.org/ Lien 28 : http://dico.developpez.com/html/155-Langages-J2EE-Java-2-Entreprise-Edition.php Lien 29 : http://dico.developpez.com/html/910-Langages-JSP-Java-Server-Pages.php Lien 30 : http://dico.developpez.com/html/903-Langages-servlet.php Lien 31 : http://dico.developpez.com/html/748-Langages-Applet.php Lien 32 : http://dico.developpez.com/html/3108-Langages-Tomcat.php Lien 33 : http://adiguba.developpez.com/tutoriels/j2ee/jsp/jstl/ Lien 34 : http://tahe.developpez.com/java/struts/ Lien 35 : http://java.developpez.com/livres/?page=JavaEE#L2212111940 Lien 36 : http://java.developpez.com/livres/?page=Web#L2212112319 Lien 37 : http://dico.developpez.com/html/158-Langages-J2ME-Java-2-Micro-Edition.php Lien 38 : http://defaut.developpez.com/tutoriel/java/j2me/ Lien 39 : http://java.sun.com/j2me/docs/index.html Lien 40 : http://duj.developpez.com/tutoriels/java/dessin/intro/ Lien 41 : http://info-rital.developpez.com/tutoriel/java/opengl/opengl1/ Lien 42 : http://mari.developpez.com/tutoriel/java/3d/chap1/ Lien 43 : http://info-rital.developpez.com/tutoriel/java/api/3d/ Lien 44 : http://java.developpez.com/outils/edi/ Lien 45 : http://baptiste-wicht.developpez.com/tutoriel/java/executables/ Lien 46 : http://java.developpez.com/articles/ant/ Lien 47 : http://java.developpez.com/faq/maven/ Lien 48 : http://sebastien-estienne.developpez.com/tutoriels/java/ Lien 49 : http://java.developpez.com/faq/java/ Lien 50 : http://java.developpez.com/faq/gui/ Lien 51 : http://java.developpez.com/faq/xml/ Lien 52 : http://java.developpez.com/faq/javaee Lien 53 : http://java.developpez.com/faq/javame Lien 54 : http://java.developpez.com/faq/jdbc Lien 55 : http://java.developpez.com/faq/hibernate Lien 56 : http://java.developpez.com/faq/struts Lien 57 : http://java.developpez.com/faq/eclipse Lien 58 : http://java.developpez.com/faq/netbeans Lien 59 : http://java.developpez.com/faq/jcreator Lien 60 : http://java.developpez.com/faq/maven Lien 61 : http://www.developpez.net/forums/forumdisplay.php?f=22 Lien 62 : http://www.developpez.net/forums/forumdisplay.php?f=203 Lien 63 : http://www.developpez.net/forums/forumdisplay.php?f=193 Lien 64 : http://www.developpez.net/forums/forumdisplay.php?f=295 Lien 65 : http://www.developpez.net/forums/forumdisplay.php?f=735 Lien 66 : http://www.developpez.net/forums/forumdisplay.php?f=306 Lien 67 : http://www.developpez.net/forums/forumdisplay.php?f=194 Lien 68 : http://www.developpez.net/forums/forumdisplay.php?f=213 Lien 69 : http://www.developpez.net/forums/forumdisplay.php?f=114 Lien 70 : http://www.developpez.net/forums/forumdisplay.php?f=200 Lien 71 : http://www.developpez.net/forums/forumdisplay.php?f=201 Lien 72 : http://www.developpez.net/forums/forumdisplay.php?f=629 Lien 73 : http://www.developpez.net/forums/forumdisplay.php?f=296 Lien 74 : http://www.developpez.net/forums/forumdisplay.php?f=303 Lien 75 : http://www.developpez.net/forums/forumdisplay.php?f=199 Lien 76 : http://baptiste-wicht.developpez.com/tutoriels/java/debuter/ Lien 77 : http://developer.android.com/sdk/index.html Numro HS 2 Hors srie spcial rentre Page 103

Developpez Magazine est une publication de developpez.com

Lien 78 : http://www.eclipse.org/downloads/ Lien 79 : http://java.sun.com/javase/downloads/index.jsp Lien 80 : https://dl-ssl.google.com/android/eclipse/ Lien 81 : http://developer.android.comLien/ Lien 82 : http://developer.android.coLien/ Lien 83 : http://developer.android.com/reference/android/app/Activity.html Lien 84 : http://nbenbourahla.developpez.com/tutoriels/android/introduction-programmation-android/ Lien 85 : http://www.dil.univ-mrs.fr/~garreta/javaGen/eclipse/index.html Lien 86 : http://www.dil.univ-mrs.fr/~garreta/ Lien 87 : http://www.univmed.fr/ Lien 88 : http://www.sciences.univmed.fr/ Lien 89 : http://java.sun.com/ Lien 90 : http://java.sun.com/javase/6/webnotes/install/jdk/install-windows.html Lien 91 : http://java.sun.com/javase/6/webnotes/install/jdk/install-linux.html Lien 92 : http://java.sun.com/javase/6/docs/api/ Lien 93 : http://www.eclipse.org/ Lien 94 : http://www.eclipseplugincentral.com/ Lien 95 : http://www.eclipse-plugins.2y.net/ Lien 96 : http://www.eclipsetotale.com/ Lien 97 : http://henri-garreta.developpez.com/tutoriels/eclipse/installation-utilisation-eclipse-developpement-java/#LX Lien 98 : http://henri-garreta.developpez.com/tutoriels/eclipse/installation-utilisation-eclipse-developpement-java/ Lien 99 : http://heureuxoli.developpez.com/office/outlook/regles/ Lien 100 : http://www.microsoft.com/downloads/details.aspx?FamilyID=220549b5-0b07-4448-8848-dcc397514b41&DisplayLang=fr Lien 101 : http://heureuxoli.developpez.com/office/word/champs/#LIV-A-5 Lien 102 : http://heureuxoli.developpez.com/office/word/champs/#LIV-D-3 Lien 103 : http://morpheus.developpez.com/sql-server-2005/ Lien 104 : http://vb.developpez.com/bidou/recordset-ado/ Lien 105 : http://warin.developpez.com/access/dao/ Lien 106 : http://heureuxoli.ftp-developpez.com/office/word/publipostage/fichiers/publipostage.zip Lien 107 : http://heureuxoli.developpez.com/publipostage/ Lien 108 : http://silkyroad.developpez.com/Excel/PublipostageWordExcel/ Lien 109 : http://warin.developpez.com/access/dao/ Lien 110 : http://vb.developpez.com/bidou/recordset-ado/ Lien 111 : http://heureuxoli.developpez.com/office/word/publipostage/ Lien 112 : http://starec.developpez.com/tuto/pptliste/ Lien 113 : http://starec.developpez.com/tuto/pptnavigation/ Lien 114 : http://heureuxoli.developpez.com/office/openxml/ Lien 115 : http://grandfather.developpez.com/articles/openxml/structure/ Lien 116 : http://www.ecma-international.org/news/TC45_current_work/TC45_available_docs.htm Lien 117 : http://office.microsoft.com/fr-fr/help/HA101675271036.aspx Lien 118 : http://www.microsoft.com/downloads/details.aspx?displaylang=framp;&FamilyID=941B3470-3AE9-4AEE-8F43-C6BB74CD1466 Lien 119 : http://support.microsoft.com/kb/923505 Lien 120 : http://office.microsoft.com/fr-fr/excel/HA101491511036.aspx?pid=CH100648241036 Lien 121 : http://silkyroad.developpez.com/excel/tcd/ Lien 122 : http://silkyroad.developpez.com/Excel/NouveautesExcel2007/ Lien 123 : http://mhubiche.developpez.com/Access/cours/bases/ Lien 124 : http://sqlpro.developpez.com/cours/sqlaz/fondements/ Lien 125 : http://access.developpez.com/ Lien 126 : http://www.developpez.net/forums/f655/logiciels/microsoft-office/access/requetes-sql/ Lien 127 : http://mhubiche.developpez.com/Access/tutoJointures/ Lien 128 : http://jeannot45.developpez.com/articles/access/creationrequetes1/#remarques Lien 129 : http://jeannot45.ftp-developpez.com/articles/access/creationrequetes1/fichiers/Bouquins.ZIP Lien 130 : http://jeannot45.developpez.com/articles/access/creationrequetes1/ Lien 131 : http://cpp.developpez.com/livres/ Lien 132 : http://www.amazon.fr/Je-lance-introduction-programmation-1Cdrom/dp/2742936521 Lien 133 : http://www.amazon.fr/Programmation-Applications-avec-Bjarne-Stroustrup/dp/274407442X Lien 134 : http://www.amazon.fr/Accelerated-Practical-Programming-Example-Depth/dp/020170353X Lien 135 : http://www.amazon.fr/Primer-4th-Stanley-B-Lippman/dp/0201721481 Lien 136 : http://cpp.developpez.com/cours/ Lien 137 : http://cpp.developpez.com/cours/cpp/ Lien 138 : http://bruce-eckel.developpez.com/livres/cpp/traduction/ticpp2vol1/ Lien 139 : http://algo.developpez.com/ Lien 140 : http://conception.developpez.com/ Lien 141 : http://cpp.developpez.com/outils/ Lien 142 : http://www.microsoft.com/Express/vc/ Lien 143 : http://www.codeblocks.org/ Lien 144 : http://notepad-plus.sourceforge.net/fr/site.htm Lien 145 : http://www.microsoft.com/Express/vc/ Lien 146 : http://www.mingw.org/ Lien 147 : http://software.intel.com/en-us/intel-compilers/ Lien 148 : http://gcc.gnu.org/ Lien 149 : http://www.gnu.org/software/gdb/ Lien 150 : http://www.stack.nl/%7Edimitri/doxygen/ Lien 151 : http://cpp.developpez.com/faq/cpp/ Lien 152 : http://www.developpez.net/forums/f19/c-cpp/cpp/ Lien 153 : http://cpp.developpez.com/bibliotheques/ Lien 154 : http://cpp.developpez.com/cours/?page=bibliotheques Lien 155 : http://www.comeaucomputing.com/techtalk/ Lien 156 : http://www.parashift.com/c++-faq-lite/ Lien 157 : http://jlecomte.ifrance.com/c++/c++-faq-lite/index-fr.html Lien 158 : http://www.research.att.com/%7Ebs/bs_faq.html Lien 159 : http://www.research.att.com/%7Ebs/C++.html Numro HS 2 Hors srie spcial rentre Page 104

Developpez Magazine est une publication de developpez.com

Lien 160 : http://www.artima.com/cppsource/ Lien 161 : http://www.ddj.com/dept/cpp/ Lien 162 : http://alp.developpez.com/tutoriels/debuter-cpp/ Lien 163 : http://msdn.microsoft.com/en-us/library/hs24szh9%28VS.100%29.aspx Lien 164 : http://www.microsoft.com/express/downloads/ Lien 165 : http://apais.developpez.com/tutoriels/c++/visual-cpp-2010-express/ Lien 166 : http://qt.developpez.com/doc/4.4/how-to-learn-qt/ Lien 167 : ftp://ftp-developpez.com/qt/tutoriels/introduction-qt/fichiers/tutorial.rar Lien 168 : ftp://ftp-developpez.com/qt/tutoriels/introduction-qt/fichiers/tutorial.tar.bz2 Lien 169 : http://qt.developpez.com/doc/4.4/mainwindows-application.html Lien 170 : http://www.developpez.net/forums/redirect-to/?redirect=http%3A%2F%2Fqt.nokia.com%2Fdownloads Lien 171 : ftp://ftp-developpez.com/qt/tutoriels/introduction-qt/fichiers/t1.rar Lien 172 : http://qt.developpez.com/doc/4.4/qcoreapplication.html#arguments Lien 173 : http://qt.developpez.com/tutoriels/introduction-qt/ Lien 174 : http://developer.qt.nokia.com/ Lien 175 : http://developer.qt.nokia.com/wiki/PySide_Newbie_Tutorials Lien 176 : http://developer.qt.nokia.com/wiki/PySideSimplicissimus_Module_1_Prerequisites Lien 177 : http://developer.qt.nokia.com/wiki/Setting_up_PySide Lien 178 : http://developer.qt.nokia.com/wiki/Hello_World_in_PySide Lien 179 : http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/1-fermer/ Lien 180 : http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/2-a-propos/ Lien 181 : http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/3-licence/ Lien 182 : http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/4-combiner/ Lien 183 : http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/5-combinaison-alternative/ Lien 184 : http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/6-tout-combiner/ Lien 185 : http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/7-ingenierie/ Lien 186 : http://qt.nokia.com/ Lien 187 : http://www.python.org/ Lien 188 : http://www.pyside.org/ Lien 189 : http://qt-devnet.developpez.com/tutoriels/pyside/simplissimus/ Lien 190 : http://developer.qt.nokia.com/wiki/PySideSimplicissimus_Module_2_CloseButton Lien 191 : ftp://ftp-developpez.com/qt-devnet/tutoriels/pyside/simplissimus/1-fermer/fichiers/quitter.ui Lien 192 : http://pypi.python.org/pypi/setuptools Lien 193 : http://tcuvelier.developpez.com/tutoriels/pyqt/introduction-pyqt/ Lien 194 : http://riverbankcomputing.co.uk/software/pyqt/intro Lien 195 : http://riverbankcomputing.co.uk/static/Docs/PyQt4/html/qtcore.html Lien 196 : http://riverbankcomputing.co.uk/static/Docs/PyQt4/html/qtgui.html Lien 197 : http://riverbankcomputing.co.uk/static/Docs/PyQt4/html/qt.html Lien 198 : http://www.qtrac.eu/pyqtbook.html Lien 199 : http://www.commandprompt.com/community/pyqt/ Lien 200 : http://www.amazon.com/gp/product/0132354160 Lien 201 : http://tcuvelier.developpez.com/tutoriels/pyqt/bases/ Lien 202 : http://tcuvelier.developpez.com/tutoriels/web-semantique/rdfa/introduction/ Lien 203 : http://tcuvelier.developpez.com/tutoriels/web-semantique/html5-microdonnees/introduction/ Lien 204 : http://en.wikipedia.org/wiki/Semantic_Web Lien 205 : http://xmlns.com/foaf/0.1/ Lien 206 : http://purl.org/NET/c4dm/event.owl# Lien 207 : http://purl.org/dc/elements/1.1/ Lien 208 : http://data.lirmm.fr/ontologies/files/oan/ Lien 209 : http://sites.wiwiss.fu-berlin.de/suhl/bizer/d2r-server/config.rdf# Lien 210 : http://www.w3.org/Submission/vcard-rdf/ Lien 211 : http://creativecommons.org/ns# Lien 212 : http://jplu.developpez.com/tutoriels/web-semantique/introduction/ Lien 213 : http://jena.sourceforge.net/downloads.html Lien 214 : http://openjena.org/tutorial/RDF_API/index.html Lien 215 : http://www.w3.org/TR/vcard-rdf Lien 216 : http://ftp-developpez.com/web-semantique/tutoriel/jena/introduction-rdf/fichiers/Tutorial01.java Lien 217 : http://ftp-developpez.com/web-semantique/tutoriel/jena/introduction-rdf/fichiers/Tutorial02.java Lien 218 : http://ftp-developpez.com/web-semantique/tutoriel/jena/introduction-rdf/fichiers/Tutorial03.java Lien 219 : http://www.w3.org/2001/sw/RDFCore/ Lien 220 : http://www.w3.org/TR/rdf-testcases/#ntriples Lien 221 : http://web-semantique.developpez.com/tutoriels/jena/introduction-rdf/ Lien 222 : http://taslimanka.developpez.com/tutoriels/bi/ Lien 223 : http://www.developpez.net/forums/f556/hardware-systemes-logiciels/autres-logiciels/erp/ Lien 224 : http://solutions-entreprise.developpez.com/solutions-entreprise/cours/#erp Lien 225 : http://solutions-entreprise.developpez.com/solutions-entreprise/cours/#crm Lien 226 : http://www.developpez.net/forums/f38/bases-donnees/business-intelligence/ Lien 227 : http://business-intelligence.developpez.com/cours/ Lien 228 : http://www.developpez.net/forums/f1217/hardware-systemes-logiciels/autres-logiciels/ged/ Lien 229 : http://solutions-entreprise.developpez.com/solutions-entreprise/ Lien 230 : http://fbeaulieu.developpez.com/guide/14-objets-2.html Lien 231 : http://laurent-dardenne.developpez.com/articles/metaclasse/ Lien 232 : http://hdd34.developpez.com/cours/artpoo/ Lien 233 : http://notepad-plus.sourceforge.net/fr/site.htm Lien 234 : http://www.scintilla.org/SciTE.html Lien 235 : http://smultron.sourceforge.net/ Lien 236 : http://perl.developpez.com/telecharger/detail/id/2120/Fraise Lien 237 : http://www.perl.com/ Lien 238 : http://www.activestate.com/ Lien 239 : http://www.activestate.com/activeperl/downloads Lien 240 : http://perl.developpez.com/tutoriel/cours1/ Lien 241 : http://perl.developpez.com/tutoriel/cours2/ Numro HS 2 Hors srie spcial rentre Page 105

Developpez Magazine est une publication de developpez.com

Lien 242 : http://perl.developpez.com/tutoriel/cours3/ Lien 243 : http://lhullier.developpez.com/tutoriels/perl/intro/ Lien 244 : http://perl.developpez.com/cours/ Lien 245 : http://perl.developpez.com/livres/#L284177404X Lien 246 : http://perl.developpez.com/livres/#L2841771407 Lien 247 : http://perl.developpez.com/livres/ Lien 248 : http://perl.developpez.com/cours/ Lien 249 : http://perl.developpez.com/faq/ Lien 250 : http://www.developpez.net/forums/forumdisplay.php?f=82 Lien 251 : http://www.perl.org/ Lien 252 : http://perl.enstimac.fr/ Lien 253 : http://www.cpan.org/ Lien 254 : http://woufeil.developpez.com/tutoriels/perl/debuter/ Lien 255 : http://ericreboisson.developpez.com/tutoriels/install-subversion/ Lien 256 : http://lemasson.developpez.com/tutoriels/methodologie/initiation-developpement-en-equipe/vmo/aitcBasique.html Lien 257 : http://lemasson.developpez.com/tutoriels/methodologie/initiation-developpement-en-equipe/vmo/aitcAvance.html Lien 258 : http://lemasson.developpez.com/tutoriels/methodologie/initiation-developpement-en-equipe/ Lien 259 : http://dico.developpez.com/html/1589-Securite-SSL-Secure-Sockets-Layer.php Lien 260 : http://khayyam.developpez.com/articles/cpp/jeux/architecture/

Developpez Magazine est une publication de developpez.com

Numro HS 2 Hors srie spcial rentre Page 106