Renommer des fichiers

Bonjour a tous,

Je me permets d'écrire ce post de afin de solliciter votre aide concernant une macro que je voudrai réaliser dont le but est de renommer des fichiers. J'ai parcouru ce forum et d'autres pour trouver des pistes mais je n'arrive pas à finaliser le code.

Peut être pourriez vous m'éclairer ?|k)

Le fichier d'origine est composé de plusieurs parties dont une est identifiable. J'aurai donc souhaité rendre variable la partie identifiable dans la macro qu'elle puisse identifier le bon fichier et le renommer.

Par exemple : le nom du fichier n°1 pourrait être 001018_ TABLE" et un fichier n°2 pourrait être "002002_ STYLO" ainsi le fichier contenant TABLE et STYLO les renommer en X et en Y

Ci dessous le code que j'utilise et qui fonctionne lorsque je définis en "dur" les noms de fichiers.

Sub RenommeFichier()
    Dim AncienNom As String, NouveauNom As String

 nomfichier = Cells(1, 1).Value

   ' AncienNom = "C:\Users\****\Desktop\test\001018_ TABLE.pdf"
'Test si la decomposition du nom de fichier avec la valeur d'une cellule A1 fonctionne => Ok fonctionne
    'AncienNom = "C:\Users\****\Desktop\test\" & "001018_ " & Cells(1, 1).Value & ".pdf"
'Essaie de la fonction like pour renommer un fichier a partir d'un mot connu dans le fichier
    AncienNom = "C:\Users\****\Desktop\test\" Like nomfichier & ".pdf"
    'AncienNom = "C:\Users\****\Desktop\test\" Like "TABLE" '& ".pdf"
    NouveauNom = "C:\Users\****\Desktop\test\TABLE2.pdf"

    'Vérifie si le fichier à renommer existe.
    If Dir(AncienNom) = "" Then Exit Sub
    'Renomme le fichier
    Name AncienNom As NouveauNom
End Sub

Mon problème survient lorsque je veux rendre variable le nom de fichier.

J'ai essayé de procéder par étape et d'utiliser la fonction Like pour dire "renomme moi le fichier contenant "TABLE" en TABLE2 mais ça ne fonctionne pas.

Merci par avance

Bonjour et bienvenue

Je ne sais pas si j'ai bien compris ta demande mais si le fichier contenant le code ci-dessous est placé dans le même dossier que les fichiers à renommer (TEST), les fichiers contenant un underscore dans leur nom sont renommés selon la partie à droite de l'underscore + le chiffre 2 + .pdf

Sub RenommeFichier()
Dim dossier As Object, Fichier As Object, Chemin As String, Lg As Integer

Chemin = ThisWorkbook.Path
Set dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)

For Each Fichier In dossier.Files

On Error Resume Next
Nom = Fichier.Name
x = Left(Mid(Nom, InStr(Nom, "_") + 1), Len(Mid(Nom, InStr(Nom, "_") + 1)) - 4)
Fichier.Name = x & "2" & ".pdf"

Next Fichier
End Sub

Amicalement

Nad

Bonjour Nad,

Merci pour ton accueil et ta réponse.

Le code sera je pense effectivement placé dans le même dossier.

Par contre les fichiers que j'ai donné dans mon code sont des exemples que j'ai crée moi même pour générer un code. Je pars du principe que si j'arrive à les "retravailler" je pourrai retravailler n'importe quel autre chaine de caractère.

Dans mon idée principale avec le code, je pensais faire la chose suivante :

pour chaque fichier ayant un mot identifiable (par exemple TABLE, STYLO, CLAVIER, BOUTEILLE etc ...) la macro trouve ce mot identifiable et me le renomme d'une certaine manière.

En l’occurrence, pour mon application le renommage serait 2014_09 TABLE ou 2014_09 STYLO ou 2014_09 CLAVIER ou 2014_09 BOUTEILLE.

Dans ton code pourrait tu m'expliquer

x = Left(Mid(Nom, InStr(Nom, "_") + 1), Len(Mid(Nom, InStr(Nom, "_") + 1)) - 4)

Je pense comprendre qu'il extrait le mot TABLE en comptant le nombre de caractère (a la sorte peut etre de formule STXT())

Par contre, de ce que je peux voir, il suffit je pense que le nombre de caractère change et le code n'est plus bon

Cordialement,

Maxi

Re

maxi12 a écrit :

Par contre, de ce que je peux voir, il suffit je pense que le nombre de caractère change et le code n'est plus boni

Non - Dans ton 1er mail, les mots sont placés après un underscore. x récupère ce mot quelle que soit sa longueur (moins 4 lettres pour .pdf)

Si effectivement tu n'as pas systématiquement d’ underscore avant les mots et que tu veux faire une recherche sur des mots précis, peux-tu dire si les mots peuvent se retrouver dans plusieurs noms de fichiers ou bien sont-ils uniques ?

Nad

Nad a écrit :

Re

maxi12 a écrit :

Si effectivement tu n'as pas systématiquement d’ underscore avant les mots et que tu veux faire une recherche sur des mots précis, peux-tu dire si les mots peuvent se retrouver dans plusieurs noms de fichiers ou bien sont-ils uniques ?

Nad

Oui les mots sont toujours uniques (pour etre exacte, il s'agit en fait de nom de famille)

Re

Essaye avec ce code

Le fichier est à placer dans le même dossier

Les noms à chercher sont en A1:A10 dans mon code

Option Compare Text

Sub RenommeFichier()
Dim dossier As Object, Fichier As Object, Chemin As String, c As Range

Chemin = ThisWorkbook.Path
Set dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)

On Error Resume Next

For Each c In Range("A1:A10")   
        For Each Fichier In dossier.Files
            If Fichier.Name Like ("*" & c & "*") Then
            Fichier.Name = "2014_09 " & c & ".pdf"
            End If
        Next Fichier
Next c
End Sub

Nad

Nad t'es un chef !

Ça fonctionne du tonnerre

J'aurai pu chercher longtemps la syntaxe "Like ("*" & c & "*") "

Rechercher des sujets similaires à "renommer fichiers"