Banque d'images : charger une image unique
Par Hervé Inisan le dimanche 15 novembre 2009, 11:36 - Formulaires - Images - Lien permanent
Voici un nouvel article qui complète la saga "Gérer une banque d'images sous Access" (cliquez ici pour les épisodes précédents !). Un lecteur a souhaité savoir comment intégrer une seule image à la fois dans la banque d'images, plutôt que toutes les images d'un dossier. Voici une façon de faire...

Mise en place du bouton
Par rapport aux articles précédents, j'ai simplement rajouté le bouton "Charger une image unique", dans l'en-tête du formulaire.
- Ce bouton est construit sans l'Assistant. En d'autres termes : avant d'utiliser l'icône Bouton du ruban d'Access 2007 (ou de la boîte à outils d'Access 2003), cliquez sur l'icône "Utiliser les Assistants de contrôle" (la baguette magique) pour la désactiver.
- Faites ensuite apparaître les propriétés du bouton, et nommez-le
btnImageUnique(propriétéNom). - Sous l'onglet
Evénementde la feuille de propriétés, réglez l'événementSur clicsurPropriété événementielle. - Cliquez sur les points de suspension à droite de l'événement pour passer dans le code VBA, et recopiez ce qui suit.
Le code du bouton
' ---
' SELECTION D'UNE SEULE IMAGE
' ---
'
Private Sub btnImageUnique_Click()
Dim fd As Office.FileDialog
' Boîte de dialogue Fichier/Ouvrir
On Error Resume Next
Set fd = Application.FileDialog(msoFileDialogOpen)
' Titre de la boîte
fd.Title = "Sélectionnez une image..."
' Un seul fichier à la fois
fd.AllowMultiSelect = False
' Liste des fichiers acceptés
fd.Filters.Clear
fd.Filters.Add "Fichiers JPG", "*.jpg"
fd.Filters.Add "Fichiers GIF", "*.gif"
fd.Filters.Add "Fichiers PNG", "*.png"
fd.Filters.Add "Fichiers BMP", "*.bmp"
fd.Filters.Add "Tous les fichiers", "*.*"
fd.FilterIndex = 1
If fd.Show() Then
' Se placer sur un enregistrement vierge
DoCmd.GoToRecord , , acNewRec
' Renseigner les informations sur l'image
Me.Nom_Image = FilenameWithoutExt(fd.SelectedItems(1))
Me.Nom_Fichier = Filename(fd.SelectedItems(1))
Me.txtRepBase = FilePath(fd.SelectedItems(1))
' Sauvegarder
DoCmd.RunCommand acCmdSaveRecord
' Forcer l'affichage de l'image
Chemin_AfterUpdate
End If
Set fd = Nothing
End Sub
' SELECTION D'UNE SEULE IMAGE
' ---
'
Private Sub btnImageUnique_Click()
Dim fd As Office.FileDialog
' Boîte de dialogue Fichier/Ouvrir
On Error Resume Next
Set fd = Application.FileDialog(msoFileDialogOpen)
' Titre de la boîte
fd.Title = "Sélectionnez une image..."
' Un seul fichier à la fois
fd.AllowMultiSelect = False
' Liste des fichiers acceptés
fd.Filters.Clear
fd.Filters.Add "Fichiers JPG", "*.jpg"
fd.Filters.Add "Fichiers GIF", "*.gif"
fd.Filters.Add "Fichiers PNG", "*.png"
fd.Filters.Add "Fichiers BMP", "*.bmp"
fd.Filters.Add "Tous les fichiers", "*.*"
fd.FilterIndex = 1
If fd.Show() Then
' Se placer sur un enregistrement vierge
DoCmd.GoToRecord , , acNewRec
' Renseigner les informations sur l'image
Me.Nom_Image = FilenameWithoutExt(fd.SelectedItems(1))
Me.Nom_Fichier = Filename(fd.SelectedItems(1))
Me.txtRepBase = FilePath(fd.SelectedItems(1))
' Sauvegarder
DoCmd.RunCommand acCmdSaveRecord
' Forcer l'affichage de l'image
Chemin_AfterUpdate
End If
Set fd = Nothing
End Sub
Quelques compléments
- Le code du bouton repose principalement sur l'objet
FileDialog, qui est détaillé sur cette autre page du blog. Il faut donc ajouter, dans votre base de données, une référence à la bibliothèque Microsoft Office Object Library. Si vous complétez la base de données des autres articles, vous avez déjà cette référence. - Pour manipuler les noms de fichiers, j'utilise aussi un certain nombre de fonctions qui sont décrites sur cette page (sans quoi, les fonctions
FilenameWithoutExt,FilenameetFilePathne marcheront pas).




Nouveau !
Commentaires