Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Solution pour renommer des fichiers en masse?

pierreg

XLDnaute Occasionnel
Bonjour à tous,

Après plusieurs heures de recherche, je n'arrive pas à résoudre mon problème.

Je cherche à renommer des milliers de dossiers (je précise que ces dossiers contiennent des images que je ne désire pas renommer, juste les dossiers donc).

J'ai un fichier Excel avec:
En colonne "A" toutes mes références (qui sont les numéros actuels des dossiers)
En colonne "B" les nouvelles références (qui sont les nouveaux numéros)

En cherchant, j'ai trouvé bon nombre de macro sur ce thème mais je ne suis arrivé à aucun résultat si ce n'est que changer les valeurs dans mon tableau Excel, ce qui ne m'intéresse pas.

Je désire intervenir directement sur les dossiers pour changer les noms.

Y a t-il une macro ou autre solution pouvant effectuer ce travail?
Les logiciels de renommages sont inefficaces, ils se bornent à rajouter ou enlever des mentions.

Je suis débutant, très peu de connaissance en VBA.

Merci d'avance.
 

Dranreb

XLDnaute Barbatruc
Re : Solution pour renommer des fichiers en masse?

Bonjour
L'instruction Name devrait faire l'affaire. Cordialement.
 

pierreg

XLDnaute Occasionnel
Re : Solution pour renommer des fichiers en masse?

A Staple1600,
Merci.
J'ai essayé la solution mais ca ne fonctionne malheureusement pas.

J'ai pourtant installé comme indiqué les fichiers dans un dossier différent:
J'ai comme erreur
"Le programme a rencontré 2 erreurs correspondant à des fichiers corrompus ou à des caractères
interdits dans le nom de fichiers." (Concernant cette erreur, je n'ai aucun caractère interdit, que des lettres ou chiffres sans espaces, virgules ou autres symboles...)
D'un autre côté je ne sais pas quoi mettre à cette ligne:
TypeFichier = "*.txt"
Me concernant il s'agit de dossiers: j'ai essayé comma ca: TypeFichier = " "
ou encore TypeFichier = "*."

Je ne connais pas l'abréviation à utiliser pour les dossiers, peut être que ca vient de là?

A Dranreb,
Merci.
Sauf erreur, cette solution semble appropriée pour renommer des fichiers individuellement, je ne vois pas comment m'en sortir de cette manière car j'ai des milliers de dossiers.

Une solution?
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Solution pour renommer des fichiers en masse?

Il n'y a généralement pas de point dans les noms de dossiers.
Instruction Dir. À +
 

Dranreb

XLDnaute Barbatruc
Re : Solution pour renommer des fichiers en masse?

L'inconvénient si on ne spécifie pas ".*" derrière "*" au Dir c'est qu'il renvoie aussi bien des noms de fichiers que de dossiers.
La fonction GetAttr permet de savoir à quoi on a à faire Il y a aussi une voie complètement différente qui peut finir par l'emporter quand même en simplicité sur ces vieux dispo classiques, lorsque la gymnastique qu'on a à y faire est un peu complexe:
Ajoutez la référence "Microsoft Scripting Runtime" à votre projet VBA. J'ai Tendance pour ma part à la mettre systématiquement à tous les classeurs.
Outre les Dictionary qui sont très pratiques, elle vous donnera accès nottamment à un objet Folder contenant une collection SubFolders d'objets Folder. Déclarez des variables As Scripting. …et la suite vous sera suggérée. Ce sont des objets, il doivent être initialisés par des Set. Des boucles de ce genre sont ensuite typiques: For Each SSDos In Doss.SubFolders
Et SSDos.Name = …
 
Dernière édition:

pierreg

XLDnaute Occasionnel
Re : Solution pour renommer des fichiers en masse?

A Dranreb,
Merci quand même;
Mais là j'ai absolument rien compris.
Si j'avais ce niveau, je pense que j'aurai même pas posé de question sur ce forum.
Je suis débutant de chez débutant, je vois pas comment m'en sortir comme ca.
 

Dranreb

XLDnaute Barbatruc
Re : Solution pour renommer des fichiers en masse?

Qu'est ce que vous voulez que j'y fasse ? Vous n'exigez quand même pas que je crée un nouveau classeur et y fasse tout votre boulot ? On ne sait même pas si votre colonne A contient des chemins entiers ou seulement des noms de dossiers dans une racine spécifiée ailleurs.
Sans classeur joint on ne peut rien développer à votre place, il ne vous reste qu'à chercher vous même ou demander des précisions sur ce que vous ne comprenez pas.
P.S. Mais à priori, comme le problèmes est présenté au départ, si ce sont juste des noms de dossiers en A et B c'est simplement une boucle avec des Name Chemin & Cells(L, 1).Value As Chemin & Cells(L, 2).value
 
Dernière édition:

pierreg

XLDnaute Occasionnel
Re : Solution pour renommer des fichiers en masse?

J’exige rien de votre part et si vous en avez rien à faire, faut pas répondre.
j'ai posé une question en espérant avoir une réponse appropriée mais vos explications s'adressent à des gens expérimentés.

Concernant le fichier si ca peut permettre de résoudre le problème, je joins un exemple mais rien de mirobolant.
En colonne "A" toutes mes références (qui sont les numéros actuels des dossiers)
En colonne "B" les nouvelles références (qui sont les nouveaux numéros)

Au total plusieurs milliers de références.

Comme dans l'explication de Dormeur74, j'ai créé 2 répertoires:
c:\origine
c:\destination

Mes dossiers devant être renommés sont dans le répertoire "origine", ils sont censés se retrouver
dans le répertoire "destination" une fois la macro enclenchée.
Mon classeur Excel avec macro se trouve dans mon dossier "destination".

Merci à tous ceux qui pourront faire avancer les choses.
 

Pièces jointes

  • Test.xlsm
    16.3 KB · Affichages: 128
  • Test.xlsm
    16.3 KB · Affichages: 133
  • Test.xlsm
    16.3 KB · Affichages: 121
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Solution pour renommer des fichiers en masse?

J'ai ouvert votre fichier, mais ce n'est pas clair.
Confirmez moi si j'ai compris:
La colonne A de feuil1 contient des noms de sous dossiers sources de "c:\origine",
la colonne B de feuil1 contient des noms de sous dossiers destinataires de "c:\destination",
et vous voulez transférer tous les fichiers des dossiers sources dans les dossiers destinataires correspondants, en remplaçant dans les noms de fichiers tous les moins et blancs soulignés par des espaces sauf pour le 4ième et 5ième élément, s'il y en a 5, à relier par un moins ?

P.S. Mais vous dites aussi que vous ne voulez pas renommer de fichiers. Alors les colonnes A et B sont-elles plutôt des débuts de noms de sous répertoires de "c:\origine" et "c:\destination" dont les noms comportent 4 ou 5 éléments, le 1èr étant chaque fois les débuts en question ?

P.S.2 Ou bien est-ce le début de ma 1ère interprétation qui est juste mais ce ne sont pas les fichiers que vous voulez renommer mais tous les sous-sous-répertoires ?

Donnez un exemple pour la 1ère ligne de ce qu'il peut exister comme chemin complet à partir de "c:\" contenant un élément "J53N0775" et comment ça doit se retrouver sous un autre chemin avec "5879Y510" à la place, car là ce n'est vraiment pas clair.
Peut être vaudrait il mieux le faire en 2 temps: d'abord établir une liste de ce qui est trouvé en source et comment ce serait renommé d'après les règles éclaircies. Une liste à corriger manuellement des cas particuliers tordus, et ensuite une macro qui renomme simplement ce qui y figure. Ce serait plus prudent à mon avis.
À +
 
Dernière édition:

pierreg

XLDnaute Occasionnel
Re : Solution pour renommer des fichiers en masse?

Bonsoir,
En fait j'ai suivi la procédure de Dormeur74.
Lien supprimé

Toutefois je ne suis pas sur que cela soit très efficace dans mon cas de figure, car je souhaite renommer des dossiers (ou sont insérés des photos*: que je ne souhaite pas renommer) et ces dossiers ne sont pas des fichiers finaux, du coup je ne sais pas si cela est aussi simple.

Ce que je cherche à faire:

J'ai dans ma colonne A les noms de mes dossiers existant.
Je voudrais les renommer avec les nouveaux noms se trouvant dans la colonne B

Chaque nom de chaque ligne doit correspondre.
Exemple 1ere ligne: mon dossier actuellement nommé J53N0775 devra s'appeler 5879Y510
2eme ligne le dossier S5307R82 s’appellera 25879440
et ainsi de suite...
J'ai des milliers de dossiers à traiter, y a t-il une solution ou c'est peine perdu*? Est ce que Excel peut se charger de ca*? Je commence à avoir des doutes sur la faisabilité.
 

Dranreb

XLDnaute Barbatruc
Re : Solution pour renommer des fichiers en masse?

Bon ben alors c'est très simple, il n'y a pas de Dir à effectuer, mais simplement suivre ce qui est écrit dans la feuille:
VB:
Sub BoucleFichiers()
Dim T() As Variant, L As Long
T = Feuil1.[A1:B1].Resize(Feuil1.[A65536].End(xlUp).Row).Value
For L = 1 To UBound(T)
   Name "C:\origine\" & T(L, 1) As "C:\destination\" & T(L, 2)
   Next L
End Sub
C'est trop simple, non ? Ça doit sans doute pas encore être ça !

Et c'était quoi alors dans le code toute ces instructions avec des Split et des tests sur "-" et "_" ?

D'après ce que vous dites rigoureusement, on a même l'impression que les dossiers doivent rester sur "C:\origine".
Dans ce cas (mais attention aux nouveaux nom qui existeraient déjà pour autre chose comme anciens) :
VB:
Sub BoucleFichiers()
Dim T() As Variant, L As Long
ChDrive "C": ChDir "C:\origine"
T = Feuil1.[A1:B1].Resize(Feuil1.[A65536].End(xlUp).Row).Value
For L = 1 To UBound(T)
   Name T(L, 1) As T(L, 2)
   Next L
End Sub
À +
 
Dernière édition:

pierreg

XLDnaute Occasionnel
Re : Solution pour renommer des fichiers en masse?

Bonjour Dranreb,

Malheureusement je n'arrive plus à faire fonctionner le code vba.

Y a t-il une particularité avec le fait que mes fichiers à renommer sont cette fois ci des fichiers finaux*?
Je souhaite renommer des photos en extension .jpg, la dernière fois je souhaitais renommer des fichiers ou étaient inclus des photos, ca fonctionnait très bien mais cette fois ci dès que j’essai de renommer les photos, la méthode ne fonctionne plus.

J'ai essayé avec les 2 codes vba et j'ai systématiquement la même erreur:
fichier introuvable
sur le premier code vba il me surligne:
Name "C:\origine\" & T(L, 1) As "C:\Nouveau dossier1\" & T(L, 2)

Sur le 2eme code vba il me surligne
Name T(L, 1) As T(L, 2)

Mes photos sont placées dans C:\origine (aucun sous dossier)

Y a t-il une modification du code à apporter du fait qu'il ne s'agit plus de dossiers à renommer mais de fichiers*?

Merci d'avance.
 

Pièces jointes

  • test2.xlsm
    14.1 KB · Affichages: 94
  • test2.xlsm
    14.1 KB · Affichages: 104
  • test2.xlsm
    14.1 KB · Affichages: 99

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…