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.

  1. 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.
  2. Faites ensuite apparaître les propriétés du bouton, et nommez-le btnImageUnique (propriété Nom).
  3. Sous l'onglet Evénement de la feuille de propriétés, réglez l'événement Sur clic sur Propriété événementielle.
  4. 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

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, Filename et FilePath ne marcheront pas).