Renommer une liste de fichiers à partir d'une feuille Excel ?
Bonjours à tous.
Voilà, je reprends un travail laissé de côté. Après avoir créé une feuille Excel grâce à quelques lignes de VBA Excel d'un travail précèdent grâce à votre support.
Sur cette feuille j'ai quelques centaines de lignes qui correspond aux noms de mes fichiers à renommer qui se trouve dans un dossier attitré.
1ere colonne : le nom du fichier existant
2eme colonne : le nouveau nom du fichier correspondant
Auriez-vous une idée de fonction VBA Excel ? Afin de s'assurer que lorsque l'on renomme un fichier (par son nouveau nom ; deuxième colonne) il y est en correspondance exacte avec le nom existant de la première colonne.
En fait faire une routine qui vérifie d'exactitude entre les noms des fichiers (stockés dans un dossier) par rapport à la 1ere colonne avant de le renommer par son nouveau nom de la 2eme colonne d'une feuille Excel.
N'hésitez pas à me demander des précisions si cela n'est pas clair.
MERCI pour vos idées et support.
Hello Joe,
Voici un exemple à adapté à ton cas.
Sub FileToRename()
Dim ws As Worksheet: Set ws = ActiveSheet ' Modifier en fonction du nom de ta feuille si la macro ne s'éxécute pas dessus
Dim arrFileName As Variant
arrFileName = ws.Range("A2:B" & ws.Range("B" & ws.Rows.Count).End(xlUp).Row).Value ' Création d'un tableau avec les noms de fichiers
Dim strPath As String
strPath = "C:\Nom\De\Ton\Répertoire\" ' Spécifie ton répertoire ici
Dim i As Integer, intNbFiles As Integer
intNbFiles = 0
On Error GoTo errorHandle ' Gestion des erreurs
For i = LBound(arrFileName, 1) To UBound(arrFileName, 1) ' Boucle sur les lignes du tableau
Dim strOldName As String
strOldName = strPath & arrFileName(i, 1) & ".xlsx" ' Chemin complet de l'ancien fichier
If Len(Dir(strOldName)) > 0 Then ' Vérifie si le fichier existe
Dim strNewName As String
strNewName = strPath & arrFileName(i, 2) & ".xlsx" ' Chemin complet du nouveau fichier
Name strOldName As strNewName ' Renomme le fichier
intNbFiles = intNbFiles + 1 ' Compteur de fichiers renommés
End If
Next i
MsgBox intNbFiles & " fichiers ont été renommés !", vbInformation + vbOKOnly
Exit Sub
errorHandle:
MsgBox "Une erreur est survenue lors du renommage, vérifiez les fichiers", vbCritical + vbOKOnly
End SubAvec un fichier exemple :
A+,
Kilian
Bonsoir....
Génial....mille merci de me donner un début de piste.
Je te répond d’une tablette mais je vais étudier ta solution.
Pas très adapté à travailler le sujet.😃
Bonne soirée
A+
Salut Killian,
J'ai beau lire et relire dans tous les sens, je n'arrive pas à démarrer ce programme ou du moins quelque chose m'échappe....
je ne comprends pas pourquoi il faut créer un tableau avec le nom des fichiers ? ligne 4
Juste une précision de mon projet :
1 - J'ai un dossier "Dossier Cartes" qui contient une centaine de fichiers image.
2 - J'ai une feuille Excel "Liste" qui contient une centaine de lignes, correspondant à la liste des fichiers image.
en Colonne 1 : le nom des fichiers existants du "Dossier Cartes"
en Colonne 2: le "nouveau nom"
Je cherche à renommer tous les fichiers image du "Dossier Cartes" par leur "nouveau nom" mais en vérifiant que leur nom initial dans le "Dossier Carte" est identique à celui de la feuille "Liste" colonne 1.
Si cela est le cas, alors on renomme le fichier par "nouveau nom" colonne 2.
Excuse-moi de revenir à expliquer mes besoins car je ne trouve pas le moyen de faire tourner ton exemple.
MERCI de ta compréhension, j'avoue je suis un simple débutant...
Cordialement
Hello,
qu'est-ce que vous ne comprenez pas ?
Voici ce qui est à adapter :
Set ws = ActiveSheet ' Modifier en fonction du nom de ta feuille si la macro ne s'éxécute pas dessusSoit la macro est dans le fichier où se trouve la liste des fichiers à renommer, soit il faut le préciser avec Set ws = WorkSheets("Nom du fichier contenant la liste")
strPath = "C:\Nom\De\Ton\Répertoire\" ' Spécifie ton répertoire iciCa c'est normalement assez clair, il faut préciser où sont les fichiers à renommer
strOldName = strPath & arrFileName(i, 1) & ".xlsx" ' Chemin complet de l'ancien fichierDéfinir le nom complet (avec le chemin) du fichier à renommer. Je soupçonne que vos images sont des .jpg ou .png il faut donc supprimer & ".xlsx"
strNewName = strPath & arrFileName(i, 2) & ".xlsx" ' Chemin complet du nouveau fichierIdem pour le nom du nouveau fichier