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.
 

pierreg

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

merci pour cette réponse.

J'essai en vain depuis un bon moment mais ca fonctionne toujours pas :(

Toujours la même erreur: fichier introuvable

Mais cette fois ci j'ai en erreur surlignée
Name T(L, 1) & ".jpg" As T(L, 2) & ".jpg"

J'ai essayé avec le fichier excel dans le dossier ou à l'extérieur du dossier.
Rien à faire...
 

pierreg

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

Ci après le code appliqué

Code:
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) & ".jpg" As T(L, 2) & ".jpg"
   Next L
End Sub

Une petite idée?
 

Dranreb

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

Il n'y a pas à chercher midi à 14 h, c'est que le fichier de nom spécifié en colonne A n'existe pas avec l’extension ".jpg" dans le dossier "C:\origine" et ne peut donc être renommé. Tout ce qu'on peut faire c'est éviter le plantage en mettant On Error Resume Next devant et un If Err Then MgsBox … derrière pour avertir du cas.

P.S. Cela dit, il y a de mystérieuses "*" dans votre #15 qui pourraient donner à penser que votre colonne A contient en réalité des débuts de noms de fichiers et que vous voulez renommer tous les fichiers dont les noms commencent par ces débuts en des noms commençant par ce qui est spécifié colonne B suivis de ce qu'il y a au delà de ces débuts dans les noms d'origine. Il fallait le dire comme ça alors ! Dans ce cas:
VB:
Sub BoucleFichiers()
Dim T() As Variant, L As Long, NomF As String
ChDrive "C": ChDir "C:\origine"
T = Feuil1.[A1:B1].Resize(Feuil1.[A65536].End(xlUp).Row).Value
For L = 1 To UBound(T)
   NomF = Dir(T(L, 1) & "*")
   Do While NomF <> ""
      Name NomF As T(L, 2) & Mid$(NomF, Len(T(L, 1) + 1))
      NomF = Dir: Loop
   Next L
End Sub
À +
 
Dernière édition:

pierreg

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

Tout d'abord encore merci de prendre le temps de me répondre.

J'avoue être dépassé, j'ai essayé dans tous les sens mais aucun résultat.

J'ai inséré les 2 bouts de code avant et après, mais cette fois ci j'ai une autre erreur.

erreur de compilation.
Sub ou fonction non définie

Surement qu'ils ne sont pas mis là ou il faut!
Ci après:
Code:
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
On Error Resume Next
For L = 1 To UBound(T)
   Name T(L, 1) & ".jpg" As T(L, 2) & ".jpg"
   Next L
If Err Then MgsBox
End Sub

J'ai revérifier mon fichier source et mes noms correspondent bien aux noms indiqués en colonne A. Aucun problème à ce niveau.
Du fait, je ne comprend pas l'erreur du fichier introuvable.

Dans le doute j'ai ajouté le nom de l'extension .jpg sur chaque nom de la colonne A pour faire un test mais ca passe pas non plus.

Je sais plus quoi faire...
 

Dranreb

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

Essayez ça:
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
On Error Resume Next
For L = 1 To UBound(T)
   Err.Clear: Name T(L, 1) & ".jpg" As T(L, 2) & ".jpg"
   If Err Then MsgBox "CurDir = """ & CurDir & """." & vbLf & "Ligne " & L & ", instruction :" _
      & vbLf & "Name """ & T(L, 1) & ".jpg"" As """ & T(L, 2) & ".jpg"" ==>" _
      & vbLf & Err.Description, vbCritical, "BoucleFichiers"
   Next L
End Sub
 

pierreg

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

Concernant les "*", je n'ai pas vu ces symboles présent dans mon fichier, j'ai parfois des caractères différents mais rien d'anormal.

Le nom de mes photos en colonne A
Les noms à remplacer en colonne B

Les photos sont en .jpg enregistrées dans "C:\origine"

Je met mon classeur avec macro hors du dossier ou sont enregistrées mes photos (j'ai aussi essayé dans le dossier), je lance la macro toujours cette satanée erreur...

Merci
 

Pièces jointes

  • test3.xlsm
    15.8 KB · Affichages: 50
  • test3.xlsm
    15.8 KB · Affichages: 57
  • test3.xlsm
    15.8 KB · Affichages: 64

pierreg

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

Bonsoir,
Le code fonctionne parfaitement, merci beaucoup.
En fait j'ai remarqué que j'avais un problème sur certains noms de fichiers, ils sont hachés dans excel. J'ai parfois des symboles qui se transforment en "%", du coup ca change le nom de l'image et le fichier devient introuvable!

Avec cette macro, lorsqu'un fichier est introuvable, une boîte de dialogue s'ouvre pour informer, on clique pour dire ok et cela permet de passer à l'image suivante. Toutefois, mais je ne veux pas abuser non plus, serait il possible de contourner cette interruption de traitement?
Est-il possible de demander au programme de poursuive sa tache sans dire qu'il ne trouve pas tel ou tel fichier?
Dans la mesure ou j'ai des milliers de photos, cela serait moins fastidieux, je pourrais constater une fois fini ce qui n'a pas été traité et y remédier.
:)
 

Dranreb

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

Oh, oui, il suffit de ne pas mettre le If Err Then MsgBox …
Le Err.Clear devient inutile aussi alors.
À moins (c'est ce que je ferais) d'empiler plutôt les noms de fichiers qui ont posé un problème dans un 2ième tableau et de le décharger à la fin dans une plage à cet effet.
Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 989
dernier inscrit
jralonso