formateur informatique

Renommer ensemble les fichiers d'un dossier en VBA Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Renommer ensemble les fichiers d'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    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Renommer plusieurs fichiers ensemble

Nous poursuivons la découverte des actions qu'il est possible d'entreprendre sur les fichiers et dossiers du disque, grâce au code VBA. N'avez-vous jamais souhaité pouvoir renommer en masse des photos de vacances, prises avec un appareil numérique. Dans ces conditions, elles sont souvent toutes dotées d'intitulés codés avec des chiffres par exemple. Lorsqu'elles correspondent à une même thématique, il est intéressant et productif de pouvoir leur attribuer un préfixe textuel explicite avec un suffixe automatiquement incrémenté à l'aide de chiffres. C'est l'application que nous proposons de monter ici en laissant à l'utilisateur la possibilité de désigner plusieurs fichiers à renommer, par le biais d'une boîte de dialogue Office standard.

Base de données Access à télécharger
Pour développer cette solution, nous suggérons d'appuyer les travaux sur un formulaire Access accueillant un bouton destiné à désigner des fichiers à renommer dans un dossier.
  • Télécharger le fichier compressé renommer-fichiers-ensemble.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,
  • Puis, 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,
Formulaire Access pour renommer en masse des fichiers dans un dossier

Ce formulaire est doté d'un bouton et d'une zone de texte. La zone de texte doit être utilisée pour définir le préfixe commun à attribuer aux fichiers à désigner. Et précisément, le bouton à l'icône du dossier doit offrir à l'utilisateur une boîte de dialogue lui permettant de sélectionner plusieurs fichiers à la fois. A validation, ces fichiers doivent être renommés avec ce même préfixe mais tous suffixés d'un numéro incrémenté pour les différencier.

Certes, il existe une méthode de présélection des fichiers et de renommage massif (F2) avec l'explorateur Windows. Mais le numéro incrémenté entre parenthèses est disgracieux. Nous souhaitons maîtriser ces noms pour attribuer des suffixes que nous pourrions personnaliser à souhait.

Les variables
Pour débuter le développement, nous avons besoin de trois variables. La première, un objet, doit offrir cette boîte de dialogue de multi sélection. La deuxième doit représenter un fichier au sens large pour parcourir ceux sélectionnés. La dernière doit être un compteur de boucle pour l'incrémentation.
  • 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 le bouton à l'icône du dossier,
  • Dès lors, activer l'onglet Evénement de sa feuille de propriétés,
  • Cliquer 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,
Nous basculons ainsi dans l'éditeur VBA Access entre les bornes de la procédure événementielle cible_Click. cible est le nom du bouton. Ce code se déclenchera donc au clic sur ce bouton. Remarque : la référence à Microsoft Office a déjà été ajoutée au projet pour les boîtes de dialogue. ...
Dim boite As FileDialog
Dim leFichier As Variant: Dim compteur As Byte
...


L'objet de type FileDialog doit servir à instancier la classe permettant de piloter les boîtes de dialogue Office standard. La variable leFichier prendra son type dans une boucle For Each pour parcourir tous les fichiers sélectionnés par l'utilisateur par le biais de la boîte de dialogue Office. La variable compteur, typée comme un entier court, doit suivre le processus de renommage pour attribuer des numéros incrémentés à ces noms de fichiers modifiés.

Tester le préfixe
La suite du traitement ne peut être entreprise que dans la mesure où l'utilisateur a bien saisi un nom commun à attribuer aux fichiers sélectionnés. En d'autres termes, si la zone de texte qui est nommée prefixe est vide, le processus doit être avorté et l'utilisateur doit en être notifié.
  • A la suite du code, ajouter les instructions VBA suivantes :
...
If prefixe.Value = "" Or IsNull(prefixe.Value) Then
MsgBox "Vous devez définir un nom global pour renommer tous les fichiers à sélectionner."
Exit Sub
End If
...


Si la zone de texte est vide ou non renseignée (prefixe.Value = "" Or IsNull(prefixe.Value)), nous en avertissons l'utilisateur par le biais d'une boîte de message grâce à la fonction MsgBox. Dans l'enchaînement, nous coupons l'exécution en mettant fin au programme (Exit Sub).

Boîte de dialogue multi-sélection
Nous devons maintenant instancier la classe des boîtes de dialogue pour que notre objet boite hérite des propriétés et méthodes permettant de les manipuler.
  • A la suite du code, ajouter les instructions VBA suivantes :
...
Set boite = Application.FileDialog(msoFileDialogFilePicker)
boite.AllowMultiSelect = True
boite.Show
...


Avec le paramètre msoFileDialogFilePicker passé à la méthode FileDialog de l'objet Application, nous initialisons une boîte de dialogue Office pour manipuler les fichiers. Dès lors, l'objet boite ainsi engagé hérite de la propriété AllowMultiSelect que nous réglons à True. C'est ainsi que nous permettons à l'utilisateur de désigner plusieurs fichiers à la fois. Dans l'enchaînement, nous exploitons sa méthode héritée Show pour afficher cette boîte de dialogue à l'écran.

Parcourir les fichiers sélectionnés
Après validation de la boîte de dialogue, c'est la collection SelectedItems de l'objet boite qui renseignera sur les fichiers sélectionnés par l'utilisateur. Nous devons donc parcourir cette collection pour traiter ces fichiers les uns après les autres. Et pour cela, une boucle For Each est nécessaire.
  • A la suite du code VBA, initialiser la boucle For Each comme suit :
...
compteur = 1
For Each leFichier In boite.SelectedItems

compteur = compteur + 1
Next leFichier
...


Nous initialisons tout d'abord la variable compteur sur l'indice 1. Dès lors, grâce à l'objet leFichier, nous parcourons (For Each) la collection des fichiers choisis. Pour l'instant, nous n'opérons aucun traitement dans cette boucle. Nous nous contentons d'incrémenter la variable compteur à chaque passage. C'est elle que nous utiliserons pour différencier chaque fichier renommé avec le même préfixe.

Renommer chaque fichier sélectionné
C'est la commande Name en VBA qui permet de renommer un fichier.
  • Dans la boucle For Each, avant l'incrémentation, ajouter la ligne VBA suivante :
...
Name leFichier As Replace(prefixe.Value, " ", "-") & "-" & compteur & ".png"
...


C'est l'opérateur As qui indique comment renommer le fichier désigné. Nous lui passons le préfixe commun inscrit par l'utilisateur sur le formulaire dans la zone de texte nommée prefixe. Notez l'emploi de la fonction Replace pour remplacer tous les espaces par des tirets. Après un tiret supplémentaire, nous associons le numéro incrémenté suivi de l'extension des fichiers.

Pour terminer, il ne nous reste plus qu'à libérer la mémoire en détruisant les deux variables objets que nous avons utilisées.
  • A la fin de la procédure, ajouter les deux instructions VBA suivantes :
...
Set boite = Nothing
Set leFichier = Nothing
...
  • Revenir sur le formulaire en conception (ALT + Tab) et l'exécuter (F5),
  • Dans la zone préfixe, taper un texte comme : Les Alpes de Haute Provence, pour nous ici,
  • Cliquer alors sur le bouton à l'icône du dossier,
  • Dans la boîte de dialogue qui suit, ouvrir un sous dossier contenant des images,
  • Avec la touche CTRL, sélectionner plusieurs fichiers,
  • Puis, cliquer sur le bouton Ouvrir de la boîte de dialogue,
Multi-sélection de fichiers avec une boîte de dialogue VBA Access

De retour sur le formulaire, rien ne s'est produit, mais en apparence seulement. Si vous ouvrez le dossier cible dans l'explorateur Windows, vous constatez avec plaisir que tous les fichiers image sélectionnés ont parfaitement été renommés avec le même préfixe et un suffixe incrémenté.

Renommer automatiquement les fichiers sélectionnés avec un suffixe incrémenté 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