Renommer un grand nombre de fichier

narodniki

XLDnaute Nouveau
Bonjour à tous je reviens vers la communauté pour un gros problème! :confused: :confused:
Je dois renommer une flopée de fichiers! J'ai réaliser une macro qui bugue et qui ne termine pas le boulot. Etant débutant je n'y arrive vraiment pas. Et pourtant j'ai bien regardé les différents post présents sur ce site... et d'autres. :confused: :mad:
Mes fichiers pdf à renommer se trouve dans un dossier sur le bureau nommé "PDF".
Le principe de la macro consiste à chercher (cf. excel en PJ) dans la première colonne nommée "Ancien nom de facture" le titre d'un document du dossier "PDF" et de le changer par ce qui est présent en face dans la deuxième colonne nommée "Nouveau nom de facture".
Merci beaucoup pour votre aide. :eek:

PS: le pdf à renommer peut débuter par ce qui est présent dans la première colonne mais finir par un/des caractères parasites. En gros j'ai besoin de renommer des fichiers commençant par le contenu de ma première colonne.
 

Pièces jointes

  • Renomme PDF.xlsx
    223.2 KB · Affichages: 281

narodniki

XLDnaute Nouveau
Re : Renommer un grand nombre de fichier

J'avais un truc qui ressemblait à ça:

Sub Renommer()
Dim plage As Range, dossier$, chemin$, fichier$
Dim ancien$, nouveau As Variant
Set plage = Sheets("Feuil1").[A:B] 'feuille à adapter
dossier = "MesPdf" 'nom à adapter
chemin = ThisWorkbook.Path & "\" & dossier & "\"
fichier = Dir(chemin & "*.pdf") '1er fichier du dossier
While fichier <> ""
ancien = Left(fichier, Len(fichier) - 4) 'sans l'extension .pdf
nouveau = Application.VLookup(ancien, plage, 2, 0)
If Not IsError(nouveau) Then Name chemin & fichier As chemin & nouveau & ".pdf"
fichier = Dir 'fichier suivant du dossier
Wend
End Sub
 

Paf

XLDnaute Barbatruc
Re : Renommer un grand nombre de fichier

Bonjour à tous

peut-être comme ceci (non testé )

Code:
Sub Renommer()
Dim DerLig As Long, i As Long, MonTab
Dim dossier$, chemin$, fichier$

dossier = "MesPdf" 'nom à adapter
chemin = ThisWorkbook.Path & "\" & dossier & "\"
DerLig = Range("A" & Rows.Count).End(xlUp).Row
MonTab = Worksheets("Feuil1").Range("A2:B" & DerLig)

For i = LBound(MonTab) To UBound(MonTab)
 
    fichier = Dir(chemin & MonTab(i, 1) & "*.pdf") '1er fichier du dossier
    
    If fichier <> "" Then
        Name chemin & fichier As chemin & MonTab(i, 2) & ".pdf"
    Else
        Cells(i + 1, 3).Value = "Fichier " & MonTab(i, 1) & " non trouvé"
    End If
Next
    
End Sub

A+
 

job75

XLDnaute Barbatruc
Re : Renommer un grand nombre de fichier

Bonsoir narodniki, salut Jean-Marie, Paf,

Les caractères suivants sont interdits dans les noms de fichiers \ / : * ? " < > |

Or en colonne B on trouve les caractères interdits / * " qui font forcément beuguer ma macro.

Et si dans le nom du fichier il y a des caractères en plus des 8 caractères de la colonne A, le fichier ne sera pas renommé.

A+
 

narodniki

XLDnaute Nouveau
Re : Renommer un grand nombre de fichier

Merci beaucoup!
Avec un petit traitement de donnée afin de supprimer tout les caractères parasites avec des SUBSTITUE,

=SUBSTITUE(SUBSTITUE(SUBSTITUE(SUBSTITUE(Données!J2;"""";"");" ";".");"*";"");"/";"")

cela fonctionne... en partie...
En effet, comme je l'avais dit dans le premier post:
"le pdf à renommer peut débuter par ce qui est présent dans la première colonne mais finir par un/des caractères parasites. En gros j'ai besoin de renommer des fichiers commençant par le contenu de ma première colonne."

Exemple: si un fichier s'appelle FAE11215 cela fonctionne, en revanche si il se nomme FAE11215_2 ou FAE11215_(Copie) cela ne fonctionne pas. Que dois je faire?
 

job75

XLDnaute Barbatruc
Re : Renommer un grand nombre de fichier

Re,

Bon puisque vous aimez les "trucs" :

Code:
Sub Renommer()
Dim plage As Range, dossier$, chemin$, fichier$
Dim ancien$, nouveau As Variant, i%, x$
Set plage = Sheets("Feuil1").[A:B] 'feuille à adapter
dossier = "MesPdf" 'nom à adapter
chemin = ThisWorkbook.Path & "\" & dossier & "\"
fichier = Dir(chemin & "*.pdf") '1er fichier du dossier
While fichier <> ""
  ancien = Left(fichier, Len(fichier) - 4) 'sans l'extension .pdf
  nouveau = Application.VLookup(Left(ancien, 8), plage, 2, 0)
  If Not IsError(nouveau) Then
    i = 0
    Do
      x = chemin & nouveau & IIf(i, "(" & i & ")", "") & ".pdf"
      i = i + 1
    Loop While Dir(x) <> "" 'si le fichier existe déjà
    Name chemin & fichier As x
  End If
  fichier = Dir 'fichier suivant du dossier
Wend
End Sub
Le nouveau nom est suivi d'un indice incrémenté s'il a déjà été utilisé.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 347
Messages
2 087 502
Membres
103 563
dernier inscrit
samyezzehar