VBA : Renommer les fichiers d'un répertoire

Bonjour les accros au VBA,

est-ce que l'un d'entre vous aurais déjà écrit une macro qui permette de nommer les fichiers d'un répertoire (voir de ses sous-répertoires) ?

L'idéal, ce serait de la faire en 2 temps :

1) récupérer le nom de tous les fichiers du répertoire et les mettre dans un tableau (et récupérer le nom du répertoire tant qu'à faire)

2) à partir du tableau, attribuer le nouveau nom en fonction de l'ancien nom

... Mais j'imagine que quelqu'un l'aurait forcément déjà écrit.

Cela permettrait par exemple de renommer en masse toutes les chansons, ou de remettre le titre des séries dont on retrouve le nom sur Internet.

Ahhh sujet qui m'intéresse!

Récupération des données:

Sub listing()
Dim fichier As String
fichier = Dir("C:\Users\TOTO\Documents\", 0)
Dim numResultat As Integer
While fichier <> ""
    numResultat = numResultat + 1
    Range("A" & numResultat) = fichier
    fichier = Dir
Wend
End Sub

PS: possible de créer une variable spécifiant le répertoire, et l'écrivant dans la feuille!

Dim repertoire as string
repertoire = "C:\Users\TOTO\Documents\"
'code
fichier = Dir(repertoire, 0)
'code
Range("A" & numResultat) = repertoire & fichier

Pour le renommage:

Dim ancienNomComplet as string
Dim nouveauNomComplet as string

ancienNomComplet = repertoire & "ancienNom.txt"
nouveauNomComplet = repertoire & "nouveauNom.txt"
Name ancienNomComplet as nouveauNomComplet 

6 mois plus tard ...

Merci pour ta réponse !

Bon, j'ai quand même changé des trucs.

Aller chercher le répertoire avec une petite boite de dialogue, c'est quand même plus simple, non ?

(sauf qu'il ne prend pas le répertoire, mais l'ensemble des fichiers ... Bah, c'est peut-être plus simple comme ca)

Bon, je propose une version finale, mais JE NE SUIS PAS DEV VBA !

Donc si quelqu'un veut l'améliorer avant qu'on le mette dans la bibliothèque des outils

(genre, ajouter des contrôles pour pas planter ou écraser n'importe quoi), ou une petite question pour demander si il veut qu'on remplace la ligne existante ou que l'on continue derrière ... Ben faut pas se priver.

... Après, test, j'ai essayé d'importer un répertoire de plusieurs milliers de fichiers, ben, ca a planté.

2'464renamefiles.xlsm (17.47 Ko)

il y a une solution assez simple sans passé par une macro:

tu fais un tableau excel avec dans ta colonne B le nom actuel de tes fichiers, dans la colonne C le futur nom que tu veux donné à tes fichiers (l'ancien nom et le nouveau nom du même fichier sur la même ligne.

Dans la colonne A tu tapes "mv" pour chaque ligne ou il y a l'ancien et le nouveau nom de fichier.

tu enregistres ton fichier dans le dossier dans lequel se trouve les fichiers à renommer, puis tu modifies l'extension du fichier en .src (exemple rename_files.src)

Ensuite tu ouvres une fenêtre terminal, tu te places dans le dossier contenant les fichiers à renommer et le fichier .src.

tu tapes la commande "bach rename_files.src" ... et le tour est joué!

Mhhh, merci, c'est une bonne idée

Bon, il y a quand même un souci : l'une des actions principales est justement de pouvoir récupérer la liste des fichiers, mais de la même façon, on doit pouvoir la récupérer avec le bon "dir" qui va bien dans le shell.

Hello,

Je suis aussi interressé par ce post.

Dans mon répertoire "C:\Tmp\Chansons" j'ai une série de fichier auquel je voudrais ajouter en préfixe un nombre aléatoire compris entre 1 et 900.

Sur la base de ce post, j'ai résussi à récupérer en colonne "A" le nom des fichiers du répertoire.

Ensuite, j'ai pu en colonne "B" ajouter le nombre aléatoire.

Mais ... je n'ai pas compris comment lui faire renommer les fichiers en utilisant le contenu de la colonne "B".

Ci-joint le fichier de travail.

Quelqu'un saurait-il comment procéder ?

Excellente nuit.

Fab

1'054renommage-fichier.xlsm (15.66 Ko)

Hello lanorvege,

(presque 2 ans après)

La solution que tu proposes m'a intrigué et je l'ai essayée en remplaçant "mw" par "ren", .SRC par .BAT et ça marche ! Sans macro, du coup

Rechercher des sujets similaires à "vba renommer fichiers repertoire"