Vous êtes sur la page 1sur 7

Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso

de Dolphy35) Date de publication : 24/07/2006 Dernire mise jour : 29/12/2008 Vous pouvez commenter et donner une note cet article : Dans le cadre de la dcouverte des nouvelles fonctionnalits d'Access12, nous allons parler dans cet article d'une nouveaut trs attendue le rattachement d'un champ d'une tabl e avec un cadre image. Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 2 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ I - Introduction................................................................ ................................................................................ .............3 II - Principe................................................................... ................................................................................ ...............3 II-A - Le Formulaire 1.......................................................... ................................................................................ ..3 II-B - Le Formulaire 2.......................................................... ................................................................................ ..3 III - Techniques utilises........................................................ ................................................................................ ..... 4 IV - Structure de la base de donnes.............................................. ..........................................................................4 V - L'interface graphique....................................................... ................................................................................ ..... 5 V-A - Le Formulaire N1........................................................... ............................................................................ 5 V-B - Le Formulaire N2........................................................... ............................................................................ 6 VI - Ajout d'un dossier......................................................... ................................................................................ ....... 7 VII - Code VBA.................................................................. ................................................................................ ......... 7 VII-A - Dclarations des Variables................................................ ........................................................................ 7 VII-B - Bote de dialogue Ouvrir.................................................. ......................................................................... 8 VII-C - Gestion de l'erreur en cas d'image non valide........................... ..............................................................10 VII-D - Extraction du nom du Fichier............................................ ....................................................................... 11 VII-E - Copie de l'image slectionne et ajout dans la table........................ .......................................................11

VII-F - Code Complet............................................................ .............................................................................. 1 1 VIII - Conclusion............................................................... ................................................................................ ........ 12 IX - Remerciements.............................................................. ................................................................................ .... 12 Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 3 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ I - Introduction Cette fonctionnalit trs attendue depuis longtemps permet un rattachement d'un cadr e image un champ d'une table. Cette nouveaut va vous permettre entre autre d'afficher une image diffrente dans un cadre d'un formulaire en mode continu. Nous allons aussi aborder galement les objets FileDialog. Ce tutoriel a t rdig principalement pour vous faire dcouvrir des nouvelles fonctionna lits de la version d'Access 2007. II - Principe Cette base de donnes servant d'exemple au sein de ce tutoriel a pour objectif de dcouvrir la nouvelle mouture d'Access version 12. Principe de fonctionnement : Renseignement des champs de la fiche employs. Ajout de la photo de l'employ en la slectionnant l'aide de la bote de dialogue Ouvr ir. Copie de l'image slectionne dans un sous rpertoire de la base courante, pour viter d e perdre les donnes lors d'un dplacement de la base, par exemple. II-A - Le Formulaire 1 Il s'agit d'un formulaire de saisie d'employs (Nom, prnom, salaire, poste et photo ). Ce formulaire se prsente sous forme de fiche. II-B - Le Formulaire 2 Ce formulaire permet galement de saisir les employs (Nom, prnom, salaire, poste et photo). Toutefois et contrairement au prcdent, il est en mode continu ce qui signifie qu'il affiche tou s les enregistrements les uns en dessous des autres. Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 4 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ Et oui, vous ne rvez pas, ce sont bien des images dans un formulaire continu! III - Techniques utilises

Plusieurs solutions techniques sont mises en oeuvre travers cet exemple. Les photos ne sont pas attaches la base mais lies par le chemin d'accs qui lui, est stock dans un champ de type texte dans la table source. Le bouton Insrer Photo affiche la bote de dialogue Ouvrir du systme d'exploitation en utilisant un objet FileDialog. IV - Structure de la base de donnes Dans un premier temps nous allons crer l'unique table appele tblEmployes : Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 5 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ Crez une nouvelle table en mode cration et renseignez les noms de champs ainsi que leur type comme cela est indiqu sur l'image ci-dessus. V - L'interface graphique V-A - Le Formulaire N1 Crez un nouveau formulaire : Il vous suffit simplement d'ajouter les diffrents contrles depuis la liste des cha mps. La source du formulaire est la table tblEmployes. Ne pas oublier le bouton Insrer photo. Pour insrer le cadre destin contenir l'image, slectionnez bien le bouton image comm e indiquer sur la photo ci-dessous. Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 6 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ Bote outils Access 2007. Maintenant il faut lier les contrles aux champs de la table par la proprit Source ( onglet donnes). Effectuez un clic droit sur les contrles puis slectionnez Proprits -> Onglet Donnes -> Source -> slectionnez le champs correspondant. Grande nouveaut d'Access 2007 : Il est maintenant possible de lier un contrle image un champ de la table. C'est ce que nous allons effectuer avec le contrle image qui sera li au champ Photos de la table tblEmployes Proprits du Formulaire : Onglet Format : Affichage par dfaut => Formulaire Unique. Affichage Slecteur => Non Onglet Donnes : Source => tblEmployes V-B - Le Formulaire N2 Crez alors le second formulaire : Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 7 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai

te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ Faites un copier/coller du Formulaire 1 en modifiant ces paramtres. Proprits du Formulaire : Onglet Format : Affichage par dfaut => Formulaire Continus. Affichage Slecteur => Non Onglet Donnes : Source => tblEmployes VI - Ajout d'un dossier Pour un bon fonctionnement de cette application, il vous faut crer un sous-dossie r dans le rpertoire courant de la base que vous nommerez images. C'est ici que seront placs tous les fichiers image s. VII - Code VBA Cette application ne possde qu'une procdure VBA qui utilise FileDialog et File. Christophe WARIN a dvelopp le sujet dans son tutoriel Les pices jointes par l'exemp le : nous n'allons pas reprendre ces explications mais simplement les complter un peu. Ce code va permettre d'afficher la bote de dialogue Windows pour slectionner la ph oto insrer dans le cadre image. Ce qu'il faut que vous assimiliez, c'est que nous ne stockons pas l'image dans le champ de la table mais le chemin pour y accder. Avant cela nous allons effectuer une copie de l'image slecti onne dans le dossier images. VII-A - Dclarations des Variables Pour disposer de cette fonctionnalit vous devez slectionner la rfrence Microsoft Office xx.x Object Library Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 8 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ Nous allons utiliser 2 variables dans ce code, strFichier qui stockera le nom de l'image slectionne et oFD objet de type FileDialog qui est l'instance de la bote de dialogue ouvrir. 'Dclaration des variables Dim strFichier As String Dim oFD As FileDialog VII-B - Bote de dialogue Ouvrir Nous allons paramtrer l'objet FileDialog afin d'obtenir ce type de bote : Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 9 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ Il s'agit d'une boite ouvrir elle sera donc obtenue par : Set oFD = Application.FileDialog(msoFileDialogOpen) - Ajout des filtres de la bote, il est possible de mettre plusieurs extensions da

ns un mme filtre en les sparant par " ; ". With oFD 'Ajoute les filtres pour fichiers images et tous With .Filters .Clear .Add "Fichiers images", "*.jpg;*.jpeg;*.bmp;*.gif", 1 .Add "Tous", "*.*", 2 End With - Le Titre. .Title = "Insrer une image" - Rpertoire par dfaut lors de l'ouverture. Dans cet exemple nous allons ouvrir la bote dans Mes documents\Mes images de l'utilisateur connect. -> La variable d'environnement USERPROFILE retourne le chemin d'accs du rpertoire spcifique de l'utilisateur: C:\Documents and Settings\Dolphy35 .InitialFileName = Environ("USERPROFILE") & "\Mes documents\Mes images" - Pour interdire la slection multiple des fichiers, qui gnrerait automatiquement un e erreur, il vous faut dfinir la proprit .AllowMultiSelect False. .AllowMultiSelect = False Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 10 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ - Grande nouveaut d'Access12, le paramtrage de l'affichage des fichiers dans la bot e de dialogue en une seule ligne, dans notre exemple nous allons forcer l'affichag e en type Apperu .InitialView = msoFileDialogViewPreview - Vous pouvez galement mettre l'affichage dans la bote en Miniatures .InitialView = msoFileDialogViewThumbnail - Personnalisation du bouton Ouvrir. .ButtonName = "Insrer" - Affichage de la bote de dialogue. If .Show Then VII-C - Gestion de l'erreur en cas d'image non valide Appel de la Gestion de l'erreurs. On Error GoTo fini Si le fichier charg dans le contrle n'est pas une image l'erreur 2220 est leve ce q ui nous permet d'afficher un message personnalis. Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 11 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ Pour les autres erreurs, nous afficherons simplement le N d'erreur et sa descript ion. fini:

Select Case Err Case 2220 MsgBox "L'importation du fichier ne s'est pas effectu normalement.", _ vbCritical, "Erreur fichier Image" Case Else MsgBox Err.Number & Chr(13) & Err.Description End Select Affichage dans le contrle du fichier slectionn et renvoie une erreur si ce n'est pa s une image. Me.Image1.Picture = .SelectedItems(1) Si l'erreur n'est pas leve nous effaons l'image que l'on vient de charger, ceci da ns un but purement d'esthtique. Me.Image1.Picture = "" VII-D - Extraction du nom du Fichier Extraction du nom du fichier slectionn pour la copie. strFichier = Mid(.SelectedItems(1), InStrRev(.SelectedItems(1), "\")) VII-E - Copie de l'image slectionne et ajout dans la table Copie de l'image slectionne dans le dossier images du rpertoire courant de la base. FileCopy .SelectedItems(1), CurrentProject.Path & "\images" & strFichier Chargement du chemin de l'image du sous dossier dans le champ de la table. Me.Photos = CurrentProject.Path & "\images" & strFichier Rafraichissement du Formulaire. Me.Refresh VII-F - Code Complet Voici le code complet mettre dans l'vnement sur clic du bouton Insrer. Private Sub btnInserer_Click() 'Dclaration des variables Dim strFichier As String Dim oFD As FileDialog 'Paramtre la fentre Ouvrir Set oFD = Application.FileDialog(msoFileDialogOpen) With oFD 'Ajoute les filtres pour fichiers images et tous With .Filters .Clear .Add "Fichiers images", "*.jpg;*.jpeg;*.bmp;*.gif", 1 .Add "Tous", "*.*", 2 End With 'Renseignement du titre .Title = "Insrer une image" Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY (Espace Perso de Dolphy35) - 12 Copyright 2009 - Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre fai te de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous enco urez selon la loi jusqu' 3 ans de prison et jusqu' 300 000 E de dommages et intrets. Droits de diffusion permanents accords developpez LLC. http://dolphy35.developpez.com/article/access2007/formcontinus/ 'Ouvre l'explorateur dans le fichier 'Mes documents' du User connect. .InitialFileName = Environ("USERPROFILE") & "\Mes documents\Mes images" 'Interdit la multi slection .AllowMultiSelect = False 'Permet de choisir le mode d'affichage dans l'explorateur (ici apperu) .InitialView = msoFileDialogViewPreview 'Permet de personnaliser le bouton. .ButtonName = "Insrer" 'Affiche la fentre If .Show Then On Error GoTo fini 'gestion erreur pour control importation

'Retourne un erreur si pas fichier image. Me.Image1.Picture = .SelectedItems(1) 'Vide du cadre image. Me.Image1.Picture = "" 'Extraction du nom du fichier copier. strFichier = Mid(.SelectedItems(1), InStrRev(.SelectedItems(1), "\")) 'Copie du fichier slectionn vers le sous dossier de la base. FileCopy .SelectedItems(1), CurrentProject.Path & "\images" & strFichier 'Chargement dans control du chemin de l'image (sous dossier base). Me.Photos = CurrentProject.Path & "\images" & strFichier 'Rafrachit le Formulaire. Me.Refresh End If End With Exit Sub fini: Select Case Err Case 2220 MsgBox "L'importation du fichier ne c'est pas effectu normalement.", _ vbCritical, "Erreur fichier Image" Case Else MsgBox Err.Number & Chr(13) & Err.Description End Select End Sub VIII - Conclusion Comme vous avez pu le constater, la gestion des images a t largement amliore dans Ac cess2007 avec la possibilit de mettre des images dans des formulaires continus. Bases exemple du tutoriel IX - Remerciements Merci Tofalu, FRED-G, et Arkham46 Nono40 pour son excellent outil. A www.developpez.com pour leur hbergement.