Temps nécessaire pour suivre cette leçon : Entre une demie heure et quarante minutes
Attention : Pour suivre l'intégralité de cette leçon, vous devez disposer de Word et d'Excel. S'il vous manque Excel, vous pourrez toutefois suivre l'ensemble de la leçon, mais pas l'exercice en fin de page.
Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données ProFormation.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici
Dans cette leçon,
nous allons encore plus loin : nous allons cette fois attacher la
photo de chaque personne à chaque enregistrement, ce qui recquiert
une toute autre approche ! Nous allons voir en outre qu'il est possible d'attacher à chaque enregistrement toutes sortes de fichiers : des images, certes, mais aussi des documents Word, des feuilles Excel, et d'autres fichiers qui proviennent d'autres programmes pourvu qu'ils supportent d'être intégrés à l'intérieur d'Access ! |
Oui mais la démarche est différente : comme la photo doit changer à chaque enregistrement, on ne peut pas se contenter, de placer la photo en mode création du formulaire : en effet, la photo de qui placerait on ? On ne peut pas le savoir. Ce sera dont en mode SAISIE DE DONNEES que ça va se passer.
Mais attention : On ne peut pas faire ça comme ça ! Il faut que la photo puisse être STOCKEE dans la table sous-jacente ! Je vous rappelle que les formulaires ne contiennent PAS de donnée. Alors, oui, ils peuvent contenir un logo, parce que c'est le même à chaque enregistrement, il ne change pas ! Il fait partie intégrante de la structure du formulaire lui-même... Mais PAS les photos des clients ! Elles, elles changent à CHAQUE client ! Il FAUT qu'on prépare le terrain dans la table T_Celebrite !
Avant de créer quoi que ce soit dans le formulaire, allez dans la table T_Celebrite en mode création, et ajoutez un nouveau champ que nous appellerons Photo, et qui sera défini en Objet OLE :
Ca veut dire que ce champ très particulier ne va pas contenir des données telles que du texte ou du chiffre, mais va intégrer un objet. Un objet, au sens d'Access, ce n'est pas un lampadaire ou un canapé, non !
Un objet, au sens informatique du terme, c'est un fichier qui a été créé avec un autre programme : Un dessin créé avec Paint est un objet. Un classeur Excel est un objet. Un document Word, est un objet. Ce sont chaque fois des fichiers qui viennent "d'ailleurs".
OLE Sont les intitiales en anglais de Object Linking and Embedding, je vous traduit en français par : "Liaison (Linking) et Incorportation (Embedding) d'objet". Donc, ce champ, à partir du moment qu'il est défini en Objet OLE, va pouvoir contenir aussi bien une feuille Excel, qu'un document Word, un dessin Corel Draw, ou une image. Dans notre cas, il va s'agir d'une image JPEG (Une photo en fait), qui sera donc simplement un fichier à l'extension .JPG.
Le type de champ Objet OLE, est exactement le "pendant" du lien hypertexte : avec le lien hypertexte, vous précisez par exemple un site Web, ou un fichier, mais il fallait cliquer dessus pour Y ALLER.
Ce n'était en quelque sorte qu'un "panneau indicateur" qui disait OU est situé physiquement le fichier. Le type Objet OLE, fait largement plus : En effet, il va CARREMENT chercher le fichier que vous voulez, et il l'importe physiquement dans votre base de données. Je vous recommande très très chaudement de revoir la leçon 10, traitant des liens hypertextes afin qu'il ne subsiste pas de confusion dans votre esprit !
C'est parfaitement ça !
Oui, tout à fait ! Votre remarque prouve que vous avez très bien compris.
Bon, vous avez votre nouveau champ Photo (Photo n'est pas un nom spécial... J'aurais pu l'appeler ImageClient, TeteDuClient ou LaPhoto).
En mode saisie de données de votre table, vous n'allez pas pouvoir faire grand chose : essayez : lancez la table en mode saisie de données, et essayez de cliquer dans le champ Photo.
C'est normal. En fait, c'est seulement dans les formulaires (et dans les états, mais on y reviendra) qu'on arrive à VOIR le contenu de votre champ Photo.
Maintenant, vous allez fermer la table, et créer un nouveau formulaire en mode création, basé sur T_Celebrite. Donnez lui cette apparence approximativement:
Lancez le formulaire en mode saisie de données, et allez sur Georges Brassens. C'est maintenant, et SEULEMENT maintenant que vous allez pouvoir lui installer sa photo. Evidemment, vous ne disposez sans doute pas d'une photo de Georges Brassens. Je vous en fournis donc une :
Voici une photo de Georges Brassens que vous allez enregistrer sur votre disque dur : . Si vous ne vous rappelez plus comment on fait, revoyez la leçon précédente.
Vous êtes donc sur l'enregistrement "Brassens Georges", et vous avez enregistré la photo de Georges Brassens sur votre ordinateur en tant que brassens (En fait brassens.jpg, mais vous ne voyez peut-être pas le .JPG, mais là n'est pas notre propos).
Cliquez avec le bouton droit de votre souris au milieu du champ Photo, et choisissez "Insérer un objet" :
La boîte de dialogue suivante apparaît :
Cliquez sur "A partir d'un fichier", et sur le bouton "Parcourir"
APPARTE : ATTENTION : Vous voyez sur l'image, à droite, il y a une case à cocher "Afficher comme icône". Comme son nom l'indique, c'est pour afficher non pas vraiment une image, mais une icône, comme ceci : . MAIS il y a manifestement un bug dans Access, et dans certains cas, et c'est peut être le vôtre, MEME si vous ne cochez pas cette case, l'image s'affiche de toute façon comme une icône, ce qui est vraiment pas cool !
Un élève m'a informé que ce problème est apparemment dû au fait que lors de l'installation d'Office, le logiciel de Microsoft "Photo Editor" a la particularité de permettre de visualiser les images correctement dans un champ OLE D'Access.
Beaucoup de gens installent d'autres programmes de visualisation d'images, tel que ACDSEE par exemple, APRES avoir installé Office. De par ce fait, le nouveau programme (tel que ACDSEE) Court-circuite en quelque sorte Photo Editor, et a pour conséquence fâcheuse d'interdire de visualiser les images au sein des champs OLE autrement que sous forme d'icônes.
Solution : Réinstaller Photo Editor (Nul besoin de désinstaller ACDSEE ou le programme de dessin qui peut entrer en conflit), et tout devrait rentrer dans l'ordre.
Vous allez maintenant pouvoir sélectionner votre fichier brassens.jpg que vous avez récupéré tout à l'heure
Et faites encore OK :
Et voilà le résultat :
Maintenant, si vous descendez ou montez d'un enregistrement, HOP ! L'image disparait instantanément, ce qui est normal puisque c'est la photo de Georges Brassens et de personne d'autre !
... Contrairement au Logo de la leçon précédente qui restait affiché, quel que soit l'enregistrement !
C'est normal : La photo est verticale, et votre zone d'accueil (le champ Photo) est plutôt horizontale ! Ca ne vous rappelle rien ?
Exactement. MAIS ATTENTION ! Cette fois, c'est en mode création que vous devez être pour changer les options d'affichage !!!! (Bon, si vous travaillez avec Access 2000/XP, vous pouvez demander les propriétés de la photo en mode saisie de données, mais disons pour être homogène que vous allez en mode création).
Ben non ! Puisque l'image change à chaque client ! La photo de qui devrait il afficher en mode création ???
Demandez les propriétés de votre champ photo qui est donc vide (Vous savez : Bouton droit, propriétés). Dans l'onglet Format, vous demandez Mode d'affichage : Zoom (Pas échelle, pour éviter qu'il déforme la photo) : Relancez le formulaire en mode saisie de données, et cherchez à nouveau Brassens :
J'ai cherché comme vous, mais ce n'est apparemment pas possible : Quand je clique dessus, je n'ai pas accès à l'icône H... Et dans les propiriétés, je n'ai pas trouvé d'alignement central de l'image. Donc, non.
Exactement. J'avais fait exprès de dimensionner la zone dans le mauvais sens pour que vous trouviez l'astuce vous-même. Bravo !
Et en plus, dans les propriétés de l'image , vous demandez dans l'onglet format Mode d'affichage : Echelle, comme ça, on est bien certain que l'image va bien prendre la totalité de la zone de la photo, et comme cette zone est déjà verticale, les différentes photos des différentes personnes ne seront pas trop déformées. Essayez :
Et comme la zone de la photo correspond à peu près aux photos originales, ça ne va pas trop mal. Comme exercice, vous allez ajouter la photo de Bill Clinton. La voici :
Oui, et c'est le plus intéressant : comme je vous l'ai précisé plus haut, le champ Photo, même s'il s'appelle physiquement "Photo", peut très bien accueillir d'autres genres de fichiers, comme par exemple un document Word : imaginez que notre table T_Celebrite est en fait une table de gens à la recherche d'un emploi, et que chaque personne a son CV sous forme d'un document Word : il va tout à fait être possible de le mettre A LA PLACE de sa photo !
Nous aurions alors dû créer non pas un, mais DEUX nouveaux champs de type Objet OLE : Un champ qui s'appelle "Photo" pour mettre la photo, et un champ "CV" qui serait aussi un champ Objet OLE, mais qui contiendrait le CV (fait avec Word): Le résultat serait éloquent : . Sympathique, non ?
Mais pour éviter de trop alourdir la base de données, pour vous simplifier la tâche, et aussi pour bien illustrer le fait qu'un champ OLE peut contenir indifféremment une image ou autre chose, nous n'allons PAS créer de nouveau champ dans la table.
Nous allons donc REMPLACER la photo de Bill Clinton par son CV. Pour ce faire, il vous faut un document Word qui va contenir son CV. Vous ne l'avez pas, le voici :
Téléchargez le CV de Bill Clinton en cliquant ICI
C'est comme pour le téléchargement d'une base de données, Je ne pense pas que ça devrait vous poser de problème. Evidemment il faut posséder Word, mais je suppose que vous en disposez. Placez ce fichier Word sur votre disque dur où vous voulez. Je vais supposer que vous le mettez dans C:\Mes Documents.
ATTENTION : Il est possible que le document s'ouvre automatiquement, sans que vous ayez besoin de le télécharger comme une base de données. Si c'est le cas, et qu'il s'ouvre automatiquement, vous allez directement dans le menu Fichier/Enregistrer Sous, et c'est là que vous précisez exactement ou vous voulez que ce document soit placé.
Bien. Lancez votre formulaire en mode saisie de données, et placez-vous sur Bill Clinton : . Vous cliquez ensuite sur son visage avec le bouton droit de votre souris, et vous choisissez "Insérer un objet"
C'est ça. Et donc, vous suivez les mêmes étapes que tout à l'heure, mais cette fois, vous choisissez le document Word cvclinton.doc.. Vous devriez obtenir ce résultat :
C'est votre CV fait par Word.
Oui, pourquoi ?
Voilà. Alors, avec les images normales, ça se passe très bien, mais avec un document Word qui est manifestement trop grand pour entrer dans notre zone d'image, Access compresse ce fichier comme si c'était une image, mais on n'arrive plus rien à lire...
Eh oui. Donc, pas le choix : Si vous voulez lire votre CV correctement, il faut arrêter de demander un mode d'affichage Echelle, et demander "Découpage", et, bien sûr, agrandir la zone de manière à obtenir ce chouette résultat : . Vous croyez que vous pouvez faire ça tout seul ?
C'est fait ?
Oui, c'est normal.
Oui ! Et ça, c'est génial ! Allez sur Bill Clinton, et double-cliquez sur son CV : . Vous avez un petit sablier qui montre qu'il travaille, et au bout de quelques secondes, vous avez cet affichage :
Vous êtes toujours dans Access MAIS pas complètement !
En fait, vous êtes dans une sorte de mini Word à l'intérieur
d'Access : Regardez attentivement les menus : ce sont les menus de Word ! Les
barres d'outils : ce sont les barres d'outils de Word ! Vous avez les règles
horizontales et verticales de Word... Et pourtant c'est toujours indiqué
Access dans la barre de titre tout au dessus ! :
Oui : Vous cliquez juste en dessous de prénom, et vous écrivez Adresse :, une tabulation , et Maison Blanche, vous appuyez sur enter pour passer une ligne pour faire joli, puis vous mettez Adresse en bleu comme ceci :
Il suffit bêtement de cliquer sur une partie de votre formulaire, n'importe laquelle, ici par exemple :
Il ne faut pas se tromper, parce que il y a 3 cas de figure :
Le mode création | Qui permet de demander par exemple le mode d'affichage avec Bouton droit de la souris, puis "propriétés" (Découpage, Echelle, Zoom), et qui permet également de redimensionner la zone. Les petits carrés sont là parce que j'ai cliqué une fois dessus pour le sélectionner | |
Le mode saisie de données : | Qui permet de visualiser simplement le contenu du champ, et qui permet d'insérer un nouvel objet avec bouton droit de la souris, puis "Insérer un objet". Les petits carrés sont là parce que j'ai cliqué une fois dessus pour le sélectionner, mais en mode saisie de données, je ne peux pas redimensionner la zone. | |
Le mode modification du champ | Qui permet de modifier carrément le contenu du fichier clinton.doc (comme par exemple ajouter l'adresse) Il y a aussi des petits carrés noirs sur les côtés et dans les coins avec une ligne épaisse grise foncée. Ce nous est pas utile ici. |
Bon, maintenant, attention : Petite subtilité technique : quand vous avez inséré votre fichier cvclinton.doc dans votre formulaire, Access a fait une COPIE du fichier original. C'est à dire que comme c'est une copie, quand vous cliquez deux fois sur le CV pour le modifier, c'est en fait la COPIE qui est modifiée, et PAS l'original ! Il faut bien faire attention, parce que vous changez quelque chose dans le fichier via Access... Tiens ben ça tombe bien, c'est ce qu'on a fait : On a ajouté l'adresse de Clinton. MAIS... si vous lancez Word, et que depuis Word normal cette fois, vous Allez dans le menu Fichier/Ourir, et que vous ouvrez cvclinton.doc vous allez constater qu'il n'a PAS CHANGE ! Il n'a PAS l'adresse de Bill Clinton !
Normalement oui, il y a une option : au moment ou vous demandez Bouton droit de la souris : Insérer un objet, A partir du fichier, vous avez une petite case à cocher : "Liaison" :
Quand vous mettez cette coche, il vous donne un petit texte d'explication très clair : Le fait de mettre cette coche fera en sorte que votre fichier sera lié, et non pas incorporé à votre formulaire : Ce qui implique donc que quand vous faites ensuite des modifications sur votre fichier via Access, ces modifications seront VRAIMENT faites dans le fichier de base.
Si vous supprimez, changez de place ou renommez le fichier cvclinton.doc, la liaison sera cassée, par contre ça prendra moins de place dans la base de données. Vous suivez ? Non ? De toute façon, que vous ayez compris ou pas, c'est égal parce que cette fonction ne marche pas : Que vous mettiez la coche ou pas, de toute façon, le fichier sera incorporé (copié), et non pas attaché (lié). Et donc de toute façon votre base de données va bien grossir de par ce fait, et quand vous cliquerez 2 fois sur un fichier pour le modifier, ça ne modifiera QUE la copie dans Access... C'est comme ça. Que ce soit dans Access 97 ou 2000, c'est le même prix. Je ne sais pas si Microsoft à corrigé ce bug dans Access XP.
Mais pas toujours . Certains élèves m'ont écrit pour me dire que chez eux, cette liaosn fonctionne correctement... Je ne sais pas quoi vous dire de plus... Avec un peu de chance chez vous, ça marchera... Personnellement, je travaille maintenant avec Access XP, et ça al'air de se comporter correctement.
Pas facilement. seul du code Visual Basic assez complexe peut faire quelque chose. Mais nous débordons ici du sujet. Nous arrivons au terme de cette leçon
Fermez votre formulaire, et appelez-le F_CelebriteObjetOLE
L'une des fantastiques possibilités d'Access est d'interagir étroitement avec d'autres fichiers tels que des images, des documents Word, des feuilles Excel, etc. Via un type de données qui est l'objet OLE (Object Linking and Embedding, soit "liaison et incorporation d'objet"). Nous avons vu comment faire pour que chaque enregistrement, chaque personne aie sa photo, ou son CV créé avec Word. Nous avons vu comment changer facilement d'objet en remplaçant une image par un document Word, et nous avons malheureusement constaté qu'il n'est possible que d'incorporer des objets par copie, sans possibilité de faire des liaisons simples, bien que cela paraisse possible. Nous avons vu que les modes d'affichage et la taille des champs sont déterminants pour obtenir un affichage lisible (Les documents Word supportent mal un mode d'affichage de type "Echelle", contrairement aux images) |
Pour voir les solutions, il vous suffit de sélectionner le questionnaire ci-dessus : 3 petites étoiles *** apparaîtront en face des bonnes réponses. |
L'exercice consiste à créer une nouvelle base de données que vous appellerez PrestiVoiture.MDB. Dans cette base de données, vous allez créer une table T_Voiture qui va contenir des voitures. Chaque voiture devra avoir les renseignements suivants : Sa marque, son type, une photo, et ses caractéristiques techniques. Pour vous aider à remplir cette table, voici les données des 2 premières voitures :
Votre travail consistera ensuite à créer un formulaire F_Voiture, qui contiendra en haut le logo "Presti Voiture", que voici : , et, pour chque voiture, sa marque, son type, sa photo et ses caractéristiques techniques. Voici l'exemple du premier enregistrement (la Lamborghini) : Astucieux : J'ai demandé la couleur de fond des 2 objets OLE en ... transparent ! Réfléchissez bien à ce que vous allez faire avant de vous précipiter sur la solution... |
Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de ProFormation.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.
Avez-vous une question technique
concernant cette leçon ? Cliquez
ici !
Une remarque sur cette leçon ? Un problème
? Une erreur ? une ambiguité ? Soyez
gentil de m'en informer