Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer : 
Enrichir une table avec un dossier 
Dans une formation passée, nous avions appris à générer automatiquement un 
diaporama PowerPoint  en fonction des informations contenues dans une 
table Access  et tout cela, grâce au 
code VBA . Mais la question qui se posait était de savoir comment 
enrichir dynamiquement la table  elle-même, pour que le diaporama évolue automatiquement. C'est le cas que nous proposons de résoudre ici.
Base de données Access à télécharger 
Pour le développement de la solution, nous devons tout d'abord récupérer les travaux qui avaient permis de générer ces diaporamas dynamiques.
Comme vous pouvez le voir, le 
fichier de la base de données  est accompagné de deux sous dossiers. Ils hébergent des photos destinées à nourrir les 
diaporamas  à générer.
Double cliquer sur le fichier de la base de données  pour l'ouvrir dans Access , 
Cliquer sur le bouton Activer le contenu du bandeau de sécurité, 
Dans le volet de navigation, double cliquer sur le formulaire fExport  pour l'exécuter, 
Ce 
formulaire  offre 
deux boutons . Le premier doit permettre à l'utilisateur de désigner un 
dossier  contenant des 
photos . Dès lors, le 
code VBA Access  doit remplir la 
table archives  avec les 
titres  et 
noms de fichiers  de ces 
photos . Le deuxième bouton est déjà fonctionnel puisqu'issu d'un développement précédent. Mais il est en attente d'une information. Il s'agit du 
chemin d'accès au dossier  choisi pour lancer la 
génération du diaporama  en fonction des données archivées dans la table.
La variable publique 
Pour débuter, nous avons besoin d'une 
variable publique  capable de mémoriser le 
chemin d'accès  au dossier choisi, pour qu'il puisse être transmis entre les deux procédures associées aux deux boutons.
A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage , 
Dans les propositions, choisir le mode Création , 
Nous basculons ainsi dans la vue en conception du formulaire.
Réaliser le raccourci clavier ALT + F11  pour afficher l'éditeur VBA Access , 
En haut de la feuille de code, après les deux premières instructions, ajouter la ligne suivante : Option Compare DatabaseDim chemin As String  
La procédure et ses variables 
Maintenant, nous devons déclencher un code au clic sur le premier bouton du formulaire. Son rôle sera notamment de 
purger la table  pour pouvoir y insérer les nouvelles informations, relatives aux fichiers contenus dans le dossier désigné. Mais pour cela, nous devons commencer par 
déclarer les variables  utiles.
Revenir sur le formulaire en conception, 
Cliquer sur le premier bouton pour le sélectionner, 
Activer l'onglet Evénement  de sa feuille de propriétés , 
Cliquer alors sur le petit bouton associé à son événement Au clic , 
Dans la boîte de dialogue qui suit, choisir le Générateur de code  et valider par Ok, 
De cette manière, nous revenons dans l'
éditeur VBA Access  mais cette fois, entre les bornes de la 
procédure événementielle cible_Click . 
cible  est le nom du bouton. Ce code se déclenchera au clic sur ce dernier.
Dans les bornes de cette procédure, ajouter les déclarations de variables  suivantes : ...Dim boite As FileDialog  
Tout d'abord et sachez-le, les 
références  à 
PowerPoint  et 
Office  sont déjà attachées au projet. Pour le constater, il vous suffit de déployer le 
menu Outils  et de choisir la rubrique 
Références . Nous déclarons tout d'abord un 
objet de type FileDialog  pour instancier par la suite la 
classe des boîtes de dialogue Office standard . C'est grâce à cet objet que nous offrirons à l'utilisateur une boîte de dialogue lui permettant de désigner un 
dossier du disque . Ensuite, nous déclarons 
trois variables objets  (As Object). Elles serviront à manipuler les 
fichiers et les dossiers  du système pour notamment 
parcourir tous les fichiers  contenus dans le 
dossier  choisi par l'utilisateur. Puis, nous déclarons une 
variable de base de données  (As Database) pour prendre possession de la 
base de données en cours . En effet, grâce à la variable qui suit (requete), nous allons construire une 
requête , à exécuter en boucle, pour insérer les informations des fichiers récoltés dans la table source. Enfin, la 
variable nomFichier  sera utilisée pour mémoriser les noms des fichiers parcourus, purgés de leurs caractères illicites.
Initialiser les objets 
Nous pouvons maintenant initialiser certaines variables notamment pour prendre possession de la base de données en cours, des boîtes de dialogue standard et des fichiers et dossiers du disque.
Après la déclaration des variables, ajouter les instructions VBA suivantes : ... 
Tout d'abord, grâce à la 
fonction VBA Access CurrentDb , nous initialisons (Set) l'
objet base  sur la 
base de données en cours . Dès lors, avec la 
méthode héritée Execute , nous déclenchons une 
requête suppression  sur la 
table archives  pour la vider de tous ses enregistrements.
Ensuite, nous exploitons la 
propriété FileDialog  de l'
objet Application  avec le 
paramètre msoFileDialogFolderPicker  pour initialiser (Set) l'
objet boite . C'est ainsi qu'il hérite des propriétés et méthodes pour piloter les 
boîtes de dialogue standards  permettant de naviguer au travers des 
dossiers du disque . Avec sa 
méthode héritée Show , nous l'affichons à l'écran. Avec sa 
collection SelectedItems , nous récupérons le (1) dossier choisi par l'utilisateur.
Puis, nous testons si le chemin a bien été défini (If chemin <> "" Then) avant d'instancier (CreateObject) la classe permettant de manipuler les 
fichiers  et les 
dossiers  (scripting.filesystemobject). Dès lors, la 
variable objetFichier  offre la 
méthode GetFolder  pour permettre à la 
variable leDossier  de représenter le répertoire dont le chemin est passé en paramètre de la méthode.
Parcourir les fichiers du dossier 
Grâce à ces déclarations et initialisations, nous sommes désormais en mesure de passer en revue tous les fichiers du dossier choisi. Pour cela, nous avons besoin d'une 
boucle For Each .
A la suite, dans l'instruction conditionnelle, ajouter les lignes VBA suivantes : ... 
Grâce à la 
variable objet chaqueFichier , nous parcourons la 
collection des fichiers  (Files) contenus dans le dossier désigné par l'utilisateur (leDossier). Nous vérifions tout d'abord que l'
extension  est bien celle d'une image en contrôlant les 
quatre derniers caractères  (Right(chaqueFichier, 4) = ".jpg"). Nous exploitons la 
fonction Mid  pour sauter les quatre premiers numéros en préfixe. Avec l'imbrication des 
fonctions Replace , nous remplaçons les tirets par des espaces et nous supprimons l'extension. Nous exploitons ensuite la 
fonction UCase  pour passer la première lettre du nom (Left(nomFichier, 1)) en majuscule, tout en conservant le reste en minuscules (Mid(nomFichier, 2)).
Ajouter les données de fichiers dans la table 
Chacun de ces fichiers doit maintenant être inséré tour à tour dans la 
table archives  avec le nom de l'image qui l'accompagne. En effet, la 
table archives  est faite de deux champs, 
a_titre  et 
a_image  plus le champ de la clé primaire qui s'incrémente automatiquement. Nous devons donc exécuter une classique 
requête ajout  sur cette table.
A la suite du If de la boucle For Each, ajouter les deux lignes VBA suivantes : ... 
Dans la 
table archives , pour les 
champs a_titre  et 
a_image , nous insérons le 
nom de fichier  retravaillé avec le nom originel du 
fichier image . Puis, nous exécutons cette requête grâce à la 
méthode Execute  de l'
objet base  qui désigne la base de données en cours. Comme cette action est produite dans la 
boucle For Each  sur chaque fichier, nous devrions obtenir l'archivage des informations de tous les fichiers contenus dans le dossier désigné.
Libérer les ressources 
Le 
code VBA  est terminé mais il nous reste encore à 
détruire les variables objets  qui ne sont plus utilisées, pour libérer la mémoire.
Après l'instruction conditionnelle parente, ajouter les lignes VBA suivantes : ... 
La 
méthode Close  de l'
objet base  permet de fermer proprement l'instance de la base de données ouverte. Ensuite et classiquement, c'est la réinitialisation (Set) de chaque objet à 
Nothing  qui permet de les détruire tour à tour.
Il est temps de tester le code.
Enregistrer les modifications (CTRL + S) et revenir sur le formulaire (ALT + Tab), 
Exécuter ce dernier en enfonçant la touche F5 du clavier, 
Désigner par exemple le sous dossier sources livré avec le fichier compressé et valider, 
Maintenant, si vous ouvrez la 
table archives , vous constatez que toutes les informations retravaillées des fichiers présents dans le sous dossier, ont bien été importées.
Si vous copiez les trois photos du dossier sources_bis dans le sous dossier sources et que vous réitérez le processus, vous constatez effectivement que toutes les nouvelles données sont bien archivées dans la table, avec les anciennes.
Enfin, si vous lancez le diaporama en cliquant sur le second bouton du formulaire, il intègre bien évidemment toutes les données archivées pour créer dynamiquement une présentation à partir des photos du dossier, sans en oublier aucune.