Vous êtes sur la page 1sur 12

Access 2007 par l'exemple : Intgration

d'images dans les Formulaires Continus

par Morgan BILLY

Date de publication : 15 janvier 2006


Dernire mise jour : 15 mai 2012

Dure : 30 minutes

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 table avec
un cadre image.

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

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........................................................................................................................................... 11
VIII - Conclusion........................................................................................................................................................ 12
IX - Remerciements................................................................................................................................................... 12

-2Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

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

I - Introduction
Cette fonctionnalit trs attendue depuis longtemps permet un rattachement d'un cadre 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 fonctionnalits 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 Ouvrir.
Copie de l'image slectionne dans un sous rpertoire de la base courante, pour viter de 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 tous les enregistrements les uns en
dessous des autres.
-3Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

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

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 :

-4Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

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

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 champs. 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 comme
indiquer sur la photo ci-dessous.

-5Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

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

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 :

-6Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

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

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-dossier dans le rpertoire courant de la
base que vous nommerez images. C'est ici que seront placs tous les fichiers images.

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'exemple : 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 photo 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 slectionne 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

-7Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

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

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 :

-8Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

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

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 dans 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 une erreur, il vous faut dfinir la
proprit .AllowMultiSelect False.
.AllowMultiSelect = False
-9Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

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

- Grande nouveaut d'Access12, le paramtrage de l'affichage des fichiers dans la bote


de dialogue en une seule ligne, dans notre exemple nous allons forcer l'affichage 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 qui nous permet d'afficher un
message personnalis.
- 10 Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

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

Pour les autres erreurs, nous afficherons simplement le N d'erreur et sa description.


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 pas 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 dans 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"
- 11 Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/

Access 2007 par l'exemple : Intgration d'images dans les Formulaires Continus par Morgan BILLY
'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 Access2007 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.

- 12 Copyright 2012 Morgan BILLY. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes,
documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000
de dommages et intrts. Cette page est dpose la SACD.
http://dolphy35.developpez.com/article/access2007/formcontinus/