VBA renommer facture par son numero

Bonjour,

Je souhaiterais renommer en masse plusieurs PDF par leur numéro de facture qui se trouve dans le PDF.

Est-ce possible

J'ai mis en PJ une facture test le numéro se trouve toujours en haut a gauche sur la 1ère page (24556)

L'idée c'est davoir toutes mes factures dans un dossier et quand la macro est finis alors ils sont renommés par numéro de facture sinon en ce momment je le fais à la main mais quand il y en a 30 ou plus c'est long

Merci d'avance pour toute aide

13test.pdf (75.51 Ko)

Bonjour,

Avez-vous essayé de récupérer votre numéro avec Power Query ?

let
    Source = Pdf.Tables(File.Contents("C:\Users\erick\Downloads\Mavericj5922 test.pdf"), [Implementation="1.3"]),
    Page1 = Source{[Id="Page001"]}[Data],
    #"En-têtes promus" = Table.PromoteHeaders(Page1, [PromoteAllScalars=true]),
    #"Lignes filtrées" = Table.SelectRows(#"En-têtes promus", each [#"Documents émis par Haigh Consultancy Services Ltd en Complément:"] = "Numéro de Facture"),
    #"Autres colonnes supprimées" = Table.SelectColumns(#"Lignes filtrées",{"Documents émis par Haigh Consultancy Services Ltd en Complément:", "Column5"}),
    #"Lignes filtrées1" = Table.SelectRows(#"Autres colonnes supprimées", each ([Column5] = "24556"))
in
    #"Lignes filtrées1"

Après, il s'agira de lister vos fichiers dans un répertoire et de créer une boucle pour pour pointer sur le fichier en VBA. Dans la requête ci-dessus, il faudra changer la source et la rendre dépendante d'une zone nommée.

Bonjour,

Je sais récupérer le numéro de facture grace à votre code par contre je voudrais pouvoir le faire pour un dossier rempli de PDF

Ce code s'applique pour un fichier PDF je voudrais le faire pour tout un dossier en PJ je met ou j'en suis arriver.

Par contre aprés je n'ai pas compris en VBA on peux renommer a partir de cette liste, toute aide est la bienvenue

2test.xlsx (17.33 Ko)

Bonjour,

Pour rappel j'ai récupérer par power query à partir d'un dossier plein de PDF, j'ai lister chaque numéro de facture en colonne B à partir de la ligne 2

Maintenant je cherche un code VBA qui liste chaque facture et renomme les PDF de mon dossier

Je ny arrive pas à le faire j'ai trouvé le code VBA suivant

Sub RenamePDFs()
Dim folderPath As String
Dim fileName As String
Dim newName As String
Dim wb As Workbook
Dim ws As Worksheet
Dim lastRow As Long
Dim i As Long

'Set the folder path where the PDF files are stored
folderPath = "C:\Users\maver\Desktop\TEST PDF"

'Open the Excel workbook and worksheet with the file names to use for renaming
Set wb = Workbooks.Open("C:\Users\maver\Desktop\TEST PDF\TEST.xlsm")
Set ws = wb.Worksheets("DOSSIER PDF")

'Get the last row of data in the Excel worksheet
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row

'Loop through each row of data in the Excel worksheet
For i = 1 To lastRow
'Get the file name from the Excel worksheet
fileName = ws.Cells(i, 1).Value

'Create the new file name by adding ".pdf" to the end of the file name from the Excel worksheet
newName = fileName & ".pdf"

'Rename the file in the folder
FileCopy folderPath & fileName & ".pdf", folderPath & newName
Next i

'Close the Excel workbook without saving changes
wb.Close False

'Display a message when the renaming is complete
MsgBox "PDF file renaming complete!"
End Sub

Mais il bloque sur la ligne "FileCopy folderPath & fileName & ".pdf", folderPath & newName"

Si quelqu'un à une idée

Merci d'avance

A minima, ajouter un antislash à la fin du répertoire :

folderPath = "C:\Users\maver\Desktop\TEST PDF\"

Comment se présentent vos colonnes Ancien nom, Nouveau nom ? Capture d'écran ?

Nb : Lorsque vous mettez du code en ligne, mettez-le entre balises </>

Bonjour,

Merci pour l'info ci dessous voilà mon tableau excel, celà se trouve en feuille 2 qui est nommé "DOSSIER PDF"

capture

Merci pour votre aide

Visiblement vous travaillez avec un tableau structuré, comment s'appelle-t-il ?

Il se nomme "Dossier_PDF"

Sans tableau structuré :

Sub RenamePDFsV1()

Dim LastRow As Long, I As Long
Dim FolderPath As String
Dim Ws As Worksheet

        FolderPath = "C:\Users\maver\Desktop\TEST PDF\"
        Set Ws = Sheets("DOSSIER PDF")
        With Ws
            LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
            For I = 2 To LastRow
                 FileCopy FolderPath & .Cells(I, 1), FolderPath & .Cells(I, 2).Value
            Next I
        End With
        Set Ws = Nothing

        MsgBox "PDF file renaming complete!"

End Sub

Avec tableau structuré :

Sub RenamePDFsV2()

Dim I As Long
Dim AireFichiers As Range
Dim FolderPath As String

        FolderPath = "C:\Users\maver\Desktop\TEST PDF\"
        Set AireFichiers = Range("Dossier_PDF[FAUX NUMERO DE FACTURE]")

        For I = 1 To AireFichiers.Count
            With AireFichiers(I)
                FileCopy FolderPath & .Value, FolderPath & .Offset(0, 1).Value
            End With
        Next I
        Set AireFichiers = Nothing

        MsgBox "PDF file renaming complete!"

End Sub

Bonjour,

Merci mais j'ai une erreur sur ce que j'ai mis en gras ci dessous "Filecopy FolderPath"

Sub RenamePDFsV2()

Dim I As Long
Dim AireFichiers As Range
Dim FolderPath As String

FolderPath = "C:\Users\maver\Desktop\Avis renommer les PDF\"
Set AireFichiers = Range("Dossier_PDF[FAUX NUMERO DE FACTURE]")

For I = 1 To AireFichiers.Count
With AireFichiers(I)
FileCopy FolderPath & .Value, FolderPath & .Offset(0, 1).Value

End With
Next I
Set AireFichiers = Nothing

MsgBox "PDF file renaming complete!"

End Sub

D'habitude je travaille plutôt avec un objet Fso, je regarde dans la soirée voire demain matin.

Bonjour,

Ok merci pour votre aide au pire je le fait manuellement en attendant de trouver une solution

Merci encore les balises faut bien les mettres comme j'ai fait pour le code macro ou il n'y a pas d'espace, merci d'avance

Bonjour,

Ok merci pour votre aide au pire je le fait manuellement en attendant de trouver une solution

Merci encore les balises faut bien les mettres comme j'ai fait pour le code macro ou il n'y a pas d'espace, merci d'avance

Non, il faut cliquer sur la balise d'abord, une fenêtre s'ouvre et il faut coller le code à l'intérieur.

Bonjour à tous,

met un break sur la ligne FileCopy et regarde le contenu des 2 expressions en amenant le curseur dessus.
Si besoin sélectionner l'expression pour voir son évaluation.
Tu verras ce qui est incorrect.

Tu peux aussi ouvrir la fenêtre Espion et faire glisser dedans une variable ou une expression
eric

Merci,

Mai je ne sais pas faire, trop compliqué pour moi

Bonjour,

J'ai retravailler dessus et le code ci dessous fonctionne parfaitement

Sub RenamePDFsV2()

Dim I As Long
Dim AireFichiers As Range
Dim FolderPath As String

        FolderPath = "C:\Users\maver\Desktop\Avis renommer les PDF - Copie\"
        Set AireFichiers = Range("Dossier_PDF[FAUX NUMERO DE FACTURE]")

        For I = 1 To AireFichiers.Count
            With AireFichiers(I)
                Name FolderPath & .Value As FolderPath & .Offset(0, 1).Value
            End With
        Next I
        Set AireFichiers = Nothing

        MsgBox "PDF file renaming complete!"

End Sub

Cordialement,

Bravo !

Sinon, voici le code que j'utilise pour mes transferts dans un nouveau répertoire :

Sub RenommerLesFichiersPdf()

Dim I As Long
Dim oFSO As Object
Dim AireFichiers As Range
Dim RepSource As String, RepCible As String, NomFichier As String

    On Error GoTo Fin

    Application.ScreenUpdating = False
    Set AireFichiers = Range("Dossier_PDF[FAUX NUMERO DE FACTURE]")
    RepSource = Range("RepertoireSource"):  RepCible = Range("RepertoireCible")

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    For I = 1 To AireFichiers.Count
        With oFSO
             .CopyFile RepSource & AireFichiers(I), RepCible & AireFichiers(I).Offset(0, 1)
             .DeleteFile RepSource & AireFichiers(I)
        End With
    Next I

    GoTo Fin:

Fin:

    Application.ScreenUpdating = True
    Set AireFichiers = Nothing:  Set oFSO = Nothing

End Sub

Bonjour,

J'ai tester la macro ci dessous et rien ne se passe peux être j'ai mal fait quelque chose

Sub RenommerLesFichiersPdf()

Dim I As Long
Dim oFSO As Object
Dim AireFichiers As Range
Dim RepSource As String, RepCible As String, NomFichier As String

    On Error GoTo Fin

    Application.ScreenUpdating = False
    Set AireFichiers = Range("Dossier_PDF[FAUX NUMERO DE FACTURE]")
    RepSource = Range("C:\Users\maver\Desktop\test renommer les PDF - Copie - Copie - Copie"):  RepCible = Range("C:\Users\maver\Desktop\repart destination")

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    For I = 1 To AireFichiers.Count
        With oFSO
             .CopyFile RepSource & AireFichiers(I), RepCible & AireFichiers(I).Offset(0, 1)
             .DeleteFile RepSource & AireFichiers(I)
        End With
    Next I

    GoTo Fin:

Fin:

    Application.ScreenUpdating = True
    Set AireFichiers = Nothing:  Set oFSO = Nothing

End Sub

En réalité cela ma donné l'idée suivante

Je voudrais que la macro prend les PDF les renommes et les copie dans un chemin de destination

Je voudrais savoir aussi si au lieu qu' à chaque fois je change tous les chemins dans la macro et bien que je les mets dans la 1ère feuille d'excel dans une cellule et la macro se référe à chaque cellule ainsi je n'ai qu'a changer le chemin dans la feuille excel

Merci d'avance

Bonjour

La macro suivante renomme les PDF et les copies

Le problème c'est qu'elle les copies dans le même dossier alors que je veux un autre chemin.

Autre problème, je voudrais savoir si je peux mettre des chemins dans des cellules Excel que je nommerais que la macro prend le chemin de la cellule nommés

Le code est ci dessous merci pour votre aide

Sub RenamePDFsV2()

Dim I As Long
Dim AireFichiers As Range
Dim FolderPath As String

        FolderPath = "C:\Users\maver\Desktop\Avis renommer les PDF - Copie - Copie\"
        Application.ScreenUpdating = False
        Set AireFichiers = Range("Dossier_PDF[FAUX NUMERO DE FACTURE]")

        For I = 1 To AireFichiers.Count
            With AireFichiers(I)
                FileCopy FolderPath & .Value, FolderPath & .Offset(0, 1).Value
            End With
        Next I
        Set AireFichiers = Nothing

        MsgBox "PDF file renaming complete!"

End Sub
Rechercher des sujets similaires à "vba renommer facture numero"