formateur informatique

Importer les attributs de fichiers dans une table Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Importer les attributs de fichiers dans une table Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Propriétés des fichiers en VBA Access

Avec l'astuce précédente, nous avons vu comment remplir une table des noms de fichiers placés dans un dossier désigné par l'utilisateur, par le biais d'une boîte de dialogue. Sur cette lancée, nous souhaitons maintenant démontrer comment lister les attributs et propriétés de chacun de ces fichiers récupérés dans une table.

Lister les propriétés des fichiers d-un dossier dans une table Access

Sur l'exemple illustré par la capture, après avoir désigné un dossier du disque à l'aide d'un bouton dédié, l'utilisateur récolte tous les noms de fichiers du dossier avec leurs attributs, dans un sous-formulaire.

Base de données Access à télécharger
Pour la démonstration de cette technique, nous suggérons d'appuyer l'étude sur une base de données Access hébergeant un formulaire avec un bouton, déjà associé à un code VBA pour désigner un dossier et le parcourir. Comme l'indique le volet de navigation sur la gauche de l'écran, cette base de données est constituée d'une table, d'une requête, d'un formulaire et d'un sous-formulaire. La table est destinée à accueillir les informations des fichiers. La requête agira alors sur cette table pour réorganiser l'information avec des tris, dont un sur le type de fichier pour les regrouper par catégorie. Cette requête servira alors de source au sous-formulaire pour restituer les données importées sur le formulaire parent. Toute cette architecture est déjà construite.

Mais ce n'est pas tout, un code VBA que nous avons déjà développé ensemble à plusieurs reprises, existe. Il offre une boîte de dialogue standard à l'utilisateur pour que celui-ci puisse désigner un dossier à scruter. Dès lors, c'est une boucle qui parcourt tous les fichiers de ce dossier. Nous allons le constater.
  • Dans le volet de navigation, cliquer droit sur le formulaire nommé fExport,
  • Dans le menu contextuel, choisir de l'ouvrir en mode création,
  • Sur le formulaire en conception, cliquer sur le bouton rouge à l'icône du dossier,
  • Dès lors, activer l'onglet Evénement de sa feuille de propriétés,
  • Puis, cliquer sur le petit bouton associé à son événement Au clic,
C'est ainsi que nous basculons dans l'éditeur VBA Access entre les bornes de la procédure événementielle cible_Click qui est effectivement déjà implémentée. Cible est le nom du bouton.

Deux parties sont marquantes. Il s'agit dans un premier temps de l'instanciation de la classe pour piloter une boîte de dialogue d'Office:

...
Set boite = Application.FileDialog(msoFileDialogFolderPicker)
If boite.Show Then chemin = boite.SelectedItems(1)
...


Il s'agit dans un deuxième temps de l'instanciation de la classe pour pouvoir parcourir les fichiers contenus dans le dossier désigné par cette boîte de dialogue :

...
Set objetFichier = CreateObject("scripting.filesystemobject")
Set leDossier = objetFichier.getfolder(chemin)
For Each chaqueFichier In leDossier.Files
nomFichier = chaqueFichier.Name

Next chaqueFichier
...


Les variables pour les propriétés
Pour poursuivre le développement, nous devons commencer par ajouter certaines déclarations de variables.
  • Dans la partie déclarative de la procédure, ajouter les déclarations de variables suivantes :
...
Dim boite As FileDialog
Dim objetFichier As Object: Dim leDossier As Object: Dim chaqueFichier As Object
Dim base As Database: Dim requete As String: Dim nomFichier As String
Dim fTaille As Long: Dim fDate As Date: Dim fType As String: Dim fAttr As Integer

Set base = CurrentDb()
...


Il s'agit simplement de variables destinées à récolter les attributs de fichiers que nous allons parcourir. Elles sont typées en conséquence, au format date pour la date de création par exemple.

Récolter les attributs de fichiers
Maintenant que les variables existent, nous allons pouvoir les exploiter pour récolter ces attributs, d'autant que la classe permettant de manipuler les fichiers du disque, est déjà instanciée.
  • Dans la boucle For Each, après la récupération du nom, ajouter les instructions VBA suivantes :
...
For Each chaqueFichier In leDossier.Files
nomFichier = chaqueFichier.Name
fTaille = chaqueFichier.Size
fDate = chaqueFichier.DateLastModified
fType = chaqueFichier.Type
fAttr = chaqueFichier.Attributes


Next chaqueFichier
...


Le nom du fichier est déjà récupéré dans la variable nomFichier. Ensuite, ce sont des propriétés spécifiques de l'objet chaqueFichier qui permettent de récolter les attributs qui nous intéressent.

Remplir la table des fichiers et de leurs attributs
Et maintenant que ces attributs sont stockés, à chaque passage dans la boucle, donc pour chaque fichier analysé, nous devons en profiter pour insérer ces renseignements dans la table. Pour cela et comme vous le savez, nous devons engager une requête Insert Into.
  • A la suite du code de la boucle, ajouter les instructions VBA suivantes :
...
fTaille = chaqueFichier.Size
fDate = chaqueFichier.DateLastModified
fType = chaqueFichier.Type
fAttr = chaqueFichier.Attributes
requete = "INSERT INTO fichiers (f_nom, f_taille, f_date, f_type, f_attr) VALUES ('" & nomFichier & "'," & fTaille & ",#" & fDate & "#,'" & fType & "'," & fAttr & ")"
base.Execute requete

Next chaqueFichier
...


Dans la table nommée fichiers, nous listons tous les champs à enrichir dans les parenthèses. Pour chacun de ces champs et dans le même ordre, nous listons (VALUES) les données à y insérer. Attention à l'alternance des simples et doubles côtes ('" & ... & "') dans le cas de données textuelles. De plus et il s'agit d'une spécificité, une information de date doit être encadrée par le symbole du Sharp (#" & ... & "#). Les informations numériques quant à elles (fTaille et fAttr) ne nécessitent aucun artifice.

Rafraichir la liste des fichiers sur le formulaire
Une dernière intervention est nécessaire. Une fois la table remplie de tous les fichiers avec leurs attributs, pour que la synthèse s'affiche sur le formulaire parent, le sous-formulaire doit automatiquement être actualisé. Et pour cela, nous pouvons exploiter la méthode Requery de l'objet VBA Access DoCmd.
  • Après l'instruction conditionnelle qui englobe la boucle, ajouter la ligne VBA suivante :
...
base.Execute requete
Next chaqueFichier
End If

DoCmd.Requery

base.Close
Set base = Nothing
...


Il est temps de tester le code VBA.
  • Enregistrer les modifications (CTRL + S) et basculer sur le formulaire (ALT + Tab),
  • L'exécuter avec la touche F5 du clavier par exemple,
  • Cliquer sur le bouton à l'icône du dossier,
  • Dans la boîte de dialogue qui suit, choisir un dossier contenant des fichiers,
  • Puis, valider par Ok pour revenir sur le formulaire,
Liste des fichiers avec leurs attributs sur un formulaire Access par le code VBA

Comme vous pouvez l'apprécier, tous les fichiers du dossier désigné sont parfaitement importés et regroupés avec leurs attributs. Concernant l'avant dernier champ, ce sont des codes numériques qui définissent le statut du fichier. Par exemple, le code 32 comme ici signifie que le fichier a été modifié depuis la dernière sauvegarde et que son statut est en lecture/écriture.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn