Macro Renommer des fichiers

Résolu
catlea Messages postés 1 Statut Membre -  
 Binzen -
Bonjour,

Je dois renommer une grande quantité de fichiers. Je possède l'ancien nom et le nouveau nom dans une feuille Excel. Il doit y avoir un moyen pour renommer ces fichiers automatiquement à partir des données Excel.

J'ai trouvé le code VBA suivant sur un des forums car il me semble adapté à mon cas.

Sub Ed()
Dim Chemin As String, Fichier As String, Ligne As Integer
Dim AncienNom As String, NouveauNom As String

Chemin = "C:\Dossier1\Dossier2\DossierX\"

For Ligne = 2 To 402
AncienNom = Range("A" & Ligne).Value
NouveauNom = Range("B" & Ligne).Value
Fichier = Dir(Chemin & AncienNom)
If Fichier = Empty Then
MsgBox "le fichier " & AncienNom & " n'a pas été trouvé"
Else
Name Fichier As NouveauNom
End If
Next Ligne
End Sub

Evidemment, j'ai personnalisé ce qu'il y avait à personnaliser : chemin où se trouvent les fichiers, lignes du fichier excel à prendre en compte, colonnes où se trouvent les anciens et nouveaux noms.

Pourtant, il ne marche pas et je ne comprends pas pourquoi. Je précise que mes fichiers ont des extensions différentes.

merci de votre aide

5 réponses

  1. cristophil
     
    Bonjour

    J'ai voulu utilisé cette macro mais j'avoue que n'y connaissant rien j'ai un peu de mal.
    J'ai dans un tableau excel une colonne ancien nom et une colonne nouveau nom
    J'ai repris la macro comme suit:
    Sub Ed()

    Dim Chemin As String, Fichier As Variant, Ligne As Integer
    Dim AncienNom As String, nouveaunom As String
    Dim Source As String, Destination As String
    Dim objFSO As Object

    Dim CheminCourt As String

    Chemin = "C:\Dossier1"
    CheminCourt = "C:\Dossier1"
    ChDrive "C"
    ChDir CheminCourt

    Set objFSO = CreateObject("Scripting.FileSystemObject")

    With Sheets("Feuil1")

    'For Ligne = 2 To 402
    For Ligne = 2 To 62

    AncienNom = .Range("A" & Ligne).Value
    nouveaunom = .Range("B" & Ligne).Value

    Fichier = Dir(Chemin & AncienNom, 6)

    If Fichier = Empty Then
    MsgBox "le fichier " & AncienNom & " n'a pas été trouvé"
    Else
    Source = Chemin & Fichier: Destination = Chemin & nouveaunom
    objFSO.CopyFile Source, Destination
    Kill (Chemin & AncienNom)
    End If

    Next Ligne
    End With

    Set objFSO = Nothing

    End Sub

    La macro me retourne l'ancien nom de fichier n'a pas été trouvé
    Mes fichiers sont dans c:\Dossier1
    Merci de votre aide
    Phil
    1
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Eh oui! peut-être qu'en prenant la bonne solution....

      j'ai coché "ne plus suivre"
      0