Alimenter une banque d’images automatiquement
Cet article fait suite à l’article Gérer une banque d’images, dans lequel vous avez pu voir comment stocker une liste d’images dans une table, pour l’afficher ensuite dynamiquement sur un formulaire ou sur un état. Mais pourquoi alimenter la table manuellement, alors qu’on peut le faire à l’aide d’un peu de VBA ?
Le code VBA
Commencez par recopier tout le code VBA ci-dessous, dans un module standard de votre base Access (la banque de données que vous avez construite dans le précédent article, et qui contient la table tblImages
).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
' --- ' CHARGER TOUTES LES IMAGES D'UN DOSSIER DANS LA BASE ' --- ' Entrée : strDossier <- Nom du dossier à parcourir. ' strExtension <- Extension des fichiers images. ' Sub ChargerImages( _ ByVal strDossier As String, _ Optional ByVal strExtension As String = "*.jpg") Dim rst As DAO.Recordset Dim strFichier As String Dim intImages As Integer ' Ajouter un à la fin du dossier, si nécessaire strDossier = AddBackslash(strDossier) ' Ouvrir la table Set rst = CurrentDb.OpenRecordset("tblImages", dbOpenDynaset) ' Lecture des images du dossier intImages = 0 strFichier = Dir(strDossier & strExtension, vbNormal) While strFichier <> "" ' Ajouter l'image dans la table rst.AddNew rst("Nom Image") = FileNameWithoutExt(strFichier) rst("Nom Fichier") = strFichier rst("Dossier") = strDossier rst.Update intImages = intImages + 1 ' On passe au fichier suivant strFichier = Dir Wend ' On ferme ! rst.Close Set rst = Nothing MsgBox "Opération terminée !" & _ vbCrLf & intImages & " ajoutée(s)", _ vbInformation End Sub |
D’autres fonctions utiles
Le code qui précède fait appel à d’autres fonctions publiées sur ce blog, notamment en ce qui concerne la gestion des fichiers et des dossiers. Consultez les articles qui suivent (et recopiez les bouts de code que vous y trouverez !) :
Utiliser le code VBA
Pour « indexer » toutes les images d’un dossier, faites ceci :
- Faites apparaître la fenêtre Debug (
CTRL
+G
). - Tapez dans cette fenêtre quelque chose comme :
ChargerImages "C:\Users\Hervé\Pictures", "*.jpg"
- Le premier paramètre transmis est le dossier à inspecter (ici : façon Vista ; à vous d’aménager selon votre système).
- Le second paramètre donne le type d’images à indexer (l’extension, donc). Vous pouvez omettre ce paramètre, dans ce cas, ce sont les images JPG qui sont prises en compte.
Bien sûr, l’indexation n’est pas aussi fine qu’une indexation manuelle. Si votre image s’appelle Nénuphars.jpg
, sa description automatique devient Nénuphars
. Mais rien ne vous empêche de changer ça après !
Dans un prochain article, on verra comment ajouter une boîte de sélection de dossier, pour améliorer encore tout ça !
tout comme tintin ce bout de code m interesse beaucoup pour infos j utilise la bq image pour la gestion des mails entrant au lieu d indexer du .jpg elle indexe du .eml
Tintin > Oui, c’est possible. Dès que j’ai un moment, j’ajouterai sur le blog le bout de code qui va bien.
Bonjour et merci pour ce code qui fonctionne à merveille.
J’ai cependant une petite requête : serait-il possible d’y ajouter une fonction capable de n’indexer que les nouvelles images. Une bribe de code qui exluerait les fichiers déjà dans la table ? Et si oui, quel pourrait être ce code ?
Merci d’avance de votre aide et meilleures salutations.
TINTIN