CoursAccess-id2901

download CoursAccess-id2901

of 12

Transcript of CoursAccess-id2901

  • 7/25/2019 CoursAccess-id2901

    1/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.

    http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    2/12

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

    - 2 -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/

    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............................................................................................................................................. 5V-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

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    3/12

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

    - 3 -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/

    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 endessous des autres.

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    4/12

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

    - 4 -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/

    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 Photoaffiche 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:

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    5/12

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

    - 5 -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/

    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.

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    6/12

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

    - 6 -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/

    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 :

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    7/12

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

    - 7 -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/

    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 FileDialoget File.

    Christophe WARINa 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

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://warin.developpez.com/access/piecejointe/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    8/12

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

    - 8 -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/

    Nous allons utiliser 2 variables dans ce code, strFichierqui stockera le nom de l'image slectionne et oFDobjet

    de type FileDialogqui est l'instance de la bote de dialogue ouvrir.

    'Dclaration des variables

    DimstrFichier AsString

    DimoFD AsFileDialog

    VII-B - Bote de dialogue Ouvrir

    Nous allons paramtrer l'objet FileDialogafin d'obtenir ce type de bote :

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    9/12

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

    - 9 -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/

    Il s'agit d'une boite ouvrirelle sera donc obtenue par :

    SetoFD = Application.FileDialog(msoFileDialogOpen)

    - Ajout des filtres de la bote, il est possible de mettre plusieurs extensions dans un mme filtre en les sparant par " ;".

    WithoFD

    'Ajoute les filtres pour fichiers images et tous

    With.Filters

    .Clear

    .Add "Fichiers images", "*.jpg;*.jpeg;*.bmp;*.gif", 1

    .Add "Tous", "*.*", 2

    EndWith

    - 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

    imagesde l'utilisateur connect.

    -> La variable d'environnement USERPROFILEretourne 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

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    10/12

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

    - 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/

    - 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.

    OnErrorGoTofini

    Si le fichier charg dans le contrle n'est pas une image l'erreur 2220 est leve ce qui nous permet d'afficher unmessage personnalis.

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    11/12

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

    - 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/

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

    fini:

    SelectCaseErr

    Case2220

    MsgBox"L'importation du fichier ne s'est pas effectu normalement.", _

    vbCritical, "Erreur fichier Image"

    CaseElse MsgBoxErr.Number &Chr(13) &Err.Description

    EndSelect

    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 imagesdu 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.

    PrivateSubbtnInserer_Click()

    'Dclaration des variables

    DimstrFichier AsString

    DimoFD AsFileDialog

    'Paramtre la fentre Ouvrir

    SetoFD = Application.FileDialog(msoFileDialogOpen)

    WithoFD

    'Ajoute les filtres pour fichiers images et tous

    With.Filters

    .Clear

    .Add "Fichiers images", "*.jpg;*.jpeg;*.bmp;*.gif", 1 .Add "Tous", "*.*", 2

    EndWith 'Renseignement du titre

    .Title ="Insrer une image"

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/
  • 7/25/2019 CoursAccess-id2901

    12/12

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

    - 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

    '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

    OnErrorGoTofini '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

    EndIfEndWith

    ExitSub

    fini:

    SelectCaseErr

    Case2220

    MsgBox"L'importation du fichier ne c'est pas effectu normalement.", _

    vbCritical, "Erreur fichier Image"

    CaseElse

    MsgBoxErr.Number &Chr(13) &Err.Description

    EndSelect

    EndSub

    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 Arkham46Nono40pour son excellent outil.A www.developpez.compour leur hbergement.

    http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/http://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://www.developpez.com/http://www.developpez.net/forums/u1804/nono40/http://www.developpez.net/forums/u24198/arkham46/http://www.developpez.net/forums/u9264/fred-g/http://www.developpez.net/forums/u46910/tofalu/http://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://dolphy35.developpez.com/article/access2007/formcontinus/fichiers/base_FormContinus.ziphttp://dolphy35.developpez.com/http://www.developpez.net/forums/u47206/dolphy35/http://www.developpez.com/