formateur informatique

Nombre de fichiers dans un dossier en VBA Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Nombre de fichiers dans un dossier en VBA 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    Vidos astuces Instagram
Sujets que vous pourriez aussi aimer :


Compter les fichiers d'un dossier

Dans le volet précédent, nous avons appris à copier ou à déplacer tous les fichiers d'un dossier par le code VBA Access. Ici, nous proposons de sonder les propriétés de la classe que nous avons utilisée pour voir comment il est possible d'analyser un dossier et de retourner le nombre d'éléments qu'il contient.



Base de données Access à télécharger
Pour la mise en place de cette astuce, nous suggérons d'agir à partir d'un formulaire Access présentant un contrôle programmé permettant à l'utilisateur de désigner un dossier, par le biais d'une boîte de dialogue standard d'Office.
  • Télécharger le fichier compressé compter-fichiers-dossier.rar en cliquant sur ce lien,
  • Le décompresser dans le dossier de votre choix,
  • Double cliquer sur le fichier résultant 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 fParcourir pour l'exécuter,
Formulaire Access pour choisir un dossier

Nous découvrons le formulaire du volet précédent. Nous l'avions utilisé pour apprendre à déplacer ou copier tous les fichiers d'un dossier. Et ce sont les deux boutons matérialisés par l'icône d'un dossier qui permettent de définir ces emplacements. Mais ici, vous notez la présence d'une zone supplémentaire. Il s'agit d'un rectangle grisé, placé en-dessous des autres contrôles. Il héberge une étiquette (Contrôle Label) non visible pour l'instant, car vide. Cette elle qui doit restituer le nombre de fichiers que contient le dossier désigné par l'utilisateur avec le premier bouton à l'icône d'un dossier.
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans les propositions, choisir le mode Création,
  • Sur le formulaire en conception, cliquer sur l'étiquette présente à l'intérieur du rectangle,
En consultant sa feuille de propriétés, vous constatez que ce contrôle Label porte l'intitulé nbFichiers. C'est par ce nom que nous le piloterons par le code VBA pour y inscrire l'information sur le nombre de fichiers présents dans le premier des deux dossiers définis par l'utilisateur.

La déclaration des variables
C'est donc le code associé au premier bouton matérialisé par l'icône d'un dossier que nous devons faire évoluer. Et pour commencer nous avons besoin de deux variables.
  • Sur le formulaire en conception, cliquer sur le premier des deux boutons au dossier,
  • Activer alors l'onglet Evénement de sa feuille de propriétés,
  • Puis, cliquer sur le petit bouton associé à son événement nommé Au clic,
Comme un code lui est déjà associé, nous basculons directement dans l'éditeur VBA Access entre les bornes de sa procédure : depart_Click. depart est en effet le nom de ce bouton.
  • En entête de la procédure, ajouter les deux déclarations de variables suivantes :
Private Sub depart_Click()
Dim dossier As Object: Dim nomD As String

Set boite = Application.FileDialog(msoFileDialogFolderPicker)
...


La variable dossier est typée comme un objet au sens large (Object). Son rôle est d'instancier la classe permettant de prendre le contrôle des fichiers et des dossiers du système. Nous utiliserons la variable nomD pour isoler le nom du dossier à partir du chemin défini par l'utilisateur par le biais de la boîte de dialogue Office.



La classe des fichiers
Après la récupération du chemin d'accès par le biais de la boîte de dialogue, nous devons instancier cette fameuse classe pour décortiquer ce chemin.
  • Après la récupération du chemin, ajouter les instructions VBA suivantes :
...
If boite.Show Then ch_depart = boite.SelectedItems(1)

If ch_depart <> "" Then
Set dossier = CreateObject("Scripting.FileSystemObject")
End If


Set boite = Nothing
...


Nous dégainons une instruction conditionnelle pour tester le chemin d'accès (ch_depart <> ""). En effet, s'il n'est pas défini, rien ne sert de poursuivre. S'il est bien défini en revanche, nous instancions la classe des fichiers et dossiers grâce à la fonction VBA CreateObject pour initialiser (Set) notre objet nommé dossier. C'est ainsi qu'il hérite des propriétés et méthodes adéquates. Nous exploiterons l'une d'entre elles pour obtenir ce fameux renseignement sur le nombre de fichiers que le dossier désigné héberge.

Isoler le nom du dossier
Avant cela, il est question de découper la chaîne du chemin d'accès afin d'isoler le nom du dossier. Pour cela, il suffit de prélever l'information placée après le dernier antislash (\). Nous allons donc exploiter la fonction VBA de découpe, nommée Mid.
  • A la suite dans l'instruction conditionnelle, ajouter la ligne VBA suivante :
...
If ch_depart <> "" Then
Set dossier = CreateObject("Scripting.FileSystemObject")
nomD = Mid(ch_depart, InStrRev(ch_depart, "\") + 1)
End If
...


La fonction InStrRev cherche une occurrence (l'antislash ici) en partant de la fin de la chaîne. Donc, elle retourne ici la position du dernier antislash que nous incrémentons d'une unité pour ne pas le considérer. Comme cette position est exploitée dans l'argument de la position de départ de la fonction de découpe Mid, nous ne conservons que ce qui se trouve après le dernier antislash. Il s'agit bien sûr du nom du dossier.



Nombre de fichiers dans le dossier
Enfin et pour synthétiser les informations dans l'étiquette sur le formulaire, il nous reste à trouver la méthode permettant de compter les fichiers présents dans un dossier. Comme nous avons déjà instancié la classe pour ce faire, nous allons exploiter notre variable objet.
  • Toujours à la suite de l'instruction conditionnelle, ajouter la ligne VBA suivante :
...
If ch_depart <> "" Then
Set dossier = CreateObject("Scripting.FileSystemObject")
nomD = Mid(ch_depart, InStrRev(ch_depart, "\") + 1)
nbFichiers.Caption = "Le dossier " & nomD & " héberge " & dossier.GetFolder(ch_depart).Files.Count & " fichiers."
End If
...


Tout d'abord et grâce à la variable nomD, nous assemblons le nom du dossier choisi avec d'autres données. Dès lors, la méthode GetFolder de l'objet dossier permet de pointer sur un dossier dont le chemin lui est passé en paramètre. Puis, par voie hiérarchique, nous descendons jusqu'à sa collection Files. Elle représente tous les fichiers contenus dans le dossier ainsi désigné. C'est ainsi qu'il ne nous reste plus qu'à appeler la propriété enfant Count pour obtenir l'information sur le nombre que nous assemblons avec le reste de la chaîne.
  • Enregistrer les modifications (CTRL + S) et revenir sur le formulaire,
  • L'exécuter, par exemple avec la touche F5 du clavier,
  • Cliquer sur le premier bouton à l'icône du dossier,
  • Avec la boîte de dialogue, désigner un sous dossier et valider par Ok,
De retour sur le formulaire, vous constatez que le nom du dossier choisi est parfaitement restitué avec en même temps l'information de synthèse sur le nombre de fichiers qu'il héberge.

Nom du dossier et nombre de fichiers en VBA Access

 
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