Comment renommer plusieurs PDF à partir de données Excel

Bonjour,

Je suis nouveau sur le forum. J'ai besoin de votre aide car je souhaite trouver une solution à mon problème de renommage de fichier PDf suivant des informations présentes dans Excel.

Mon niveau en Excel est moyen et mon niveau VBA inexistant ^^.

Contexte d'exemple: Je souhaiterais créer plusieurs PDF à partir de ce PDF mais suivant une table Excel.

J'ai un PDF nommé comme ceci: SDT2.4Lxx__2DNCT0000012345-A.pdf

Je dois le renommer de cette façon: SDT2.4LxxPSF V1 OF 2DNCT0000012345-A.pdf

Et créer autant de PDF renommés que de lignes présentes dans mon tableau ci dessous:

image

Les caractères SDT2.4Lxx doivent être remplacés par les informations présentes en colonne A: SDT2.4L10 (sans le /)

Remplacer les __ par PSF présent en colonne B

Ajouter après PSF l'information présente dans la colonne C en respectant les espaces amont et aval.

Puis les 2 caractères: OF

Et enfin garder sur tous les fichiers les caractères 2DNCT0000012345-A présents dans le nom du PDF de départ.

Cela donne au final 4 fichiers PDF nommé comme suit:

SDT2.4L10PSF V1 OF 2DNCT0000012345-A.pdf

SDT2.4L12PSF V1 OF 2DNCT0000012345-A.pdf

SDT2.4L14PSF V1 OF 2DNCT0000012345-A.pdf

SDT2.4L16PSF V1 OF 2DNCT0000012345-A.pdf

N'hésitez pas à me posez des questions si l'exemple d'explication de mon problème n'est pas clair.

Merci à tous pour votre précieuse aide.

Matthieu

Salut,

J'ai placé le fichier Excel ci-joint dans un dossier avec le fichier pdf de base. Si le fichier Excel n'est pas dans le même dossier que le fichier PDF à copier, il faudra modifier la macro en conséquence.

image

J'ai également considéré que les colonnes B et C de ton fichier pouvaient varier. Si ce n'est pas le cas, ça ne change rien, j'aurais juste un peu compliqué inutilement les choses.

image

Ensuite, le nom du fichier de base "SDT2.4Lxx__2DNCT0000012345-A.pdf" est inscrit dans la macro. Si ce nom devait varier, on pourrait l'inscrire ailleurs, par exemple quelque part sur ta feuille Excel.

Et enfin, lorsque tu lances la macro par le bouton mis en place, tu obtiens le résultat ci-dessous :

image

Si tu lances une deuxième fois la macro, les fichier en place, portant le même nom, sont effacer sans information.

Cordialement.

4essai-matth.xlsm (205.25 Ko)

Salut,

Tout d'abord je tenais à remercier Yvouille d'avoir pris le temps de réfléchir à mon problème.

La macro est effectivement bien, mais je souhaiterais appliquer quelques modifications pour que cela soit plus automatique et presque sans manipulation (enfin je ne sais pas si c'est faisable).

J'ai revue mon fichier avec les colonnes suivantes:

Colonne A: Les informations sont mises à la main. Il s'agit du nom du fichier PDF présent dans le dossier.

Colonne B: Extraction de l'ERP (arrive automatiquement dans le fichier Excel).

Colonne C: Mise au format automatique suivant informations présentes en colonne B.

Colonne D: Extraction de l'ERP (arrive automatiquement dans le fichier Excel).

Colonne E: Extraction de l'ERP (arrive automatiquement dans le fichier Excel).

Colonne F: Mise au format automatique suivant informations présentes en colonne A.

Colonne G: Concaténation des cellules qui donne le nommage souhaité des PDF.

L'idée serait de ne pas avoir à toucher à la macro.

Est ce qu'il y a un moyen de "pointer" sur un fichier PDF dans la macro sans préciser son nommage (car je ne souhaite pas modifier la macro à chaque utilisation) ?

Le nommage final du fichier PDF présent dans le dossier est indiqué dans la colonne G. Il faut autant des créations de fichiers PDF que de lignes présentes dans le fichier (ligne 2 à ligne 7 dans notre exemple).

Je ne sais pas i je suis clair dans mes explications.

Merci à tous pour votre aide.

2024 03 15 12h21 08
4essai.xlsm (21.41 Ko)

Salut,

Il me semble que j'ai déjà répondu à l'une de tes questions :

.......... Si ce nom devait varier, on pourrait l'inscrire ailleurs, par exemple quelque part sur ta feuille Excel.

............

Pour le reste, je trouve tes explications peu claires !

Tu dis vouloir ''pointer sur un fichier PDF dans la macro sans préciser son nom''. Je ne sais pas du tout ce que tu veux dire par là. Est-ce que tu voudrais qu'à un moment du déroulement de la macro, tu puisses choisir un fichier PDF dans ton arborescence car ce n'est pas toujours la même base ou est-ce que tu voudrais que la macro lise le nom de ce fichier PDF quelque part sur ta feuille Excel (le fichier PDF de base étant alors toujours le même) ?

Et concernant les noms à donner aux nouveaux fichiers à créer, se trouvent-ils dans l'une des colonnes A à G mentionnées ? Il me semble que tu me donnes une grades explications inutiles à propos de comment est créé la colonne G, mais ce n'est pas certain que ce soit celle qui contient les nouveaux noms.

A te relire.

Bonjour à tous,

j'espère avoir bien compris, voici ma proposition:

Sub Macro_Matth2()
    'https://forum.excel-pratique.com/excel/comment-renommer-plusieurs-pdf-a-partir-de-donnees-excel-191533

Dim i As Integer, FichierOriginal As String, FichierCopie As String

    MonDossier = ThisWorkbook.Path & "\"

    For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
        FichierOriginal = MonDossier & Range("A" & i)
        FichierCopie = MonDossier & Range("G" & i)

        Name FichierOriginal As FichierCopie

    Next i

End Sub

Cordialement

Bonjour Yvouille,

Yvouille a écrit :

.......... Si ce nom devait varier, on pourrait l'inscrire ailleurs, par exemple quelque part sur ta feuille Excel.

Exact. Le nom du fichier PDF est présent en colonne A dans le document Excel. La meilleure option selon moi serait de se passer de cette colonne A car cela reste une manipulation manuelle qui peut être source d'erreur à la saisie.

Yvouille a écrit :

Tu dis vouloir ''pointer sur un fichier PDF dans la macro sans préciser son nom''. Je ne sais pas du tout ce que tu veux dire par là. Est-ce que tu voudrais qu'à un moment du déroulement de la macro, tu puisses choisir un fichier PDF dans ton arborescence car ce n'est pas toujours la même base ou est-ce que tu voudrais que la macro lise le nom de ce fichier PDF quelque part sur ta feuille Excel (le fichier PDF de base étant alors toujours le même) ?

L'idée serait que la macro sélectionne automatiquement LE fichier PDF présent dans le dossier (il n'y aura qu'un fichier PDF dans ce dossier).

Yvouille a écrit :

Et concernant les noms à donner aux nouveaux fichiers à créer, se trouvent-ils dans l'une des colonnes A à G mentionnées ? Il me semble que tu me donnes une grades explications inutiles à propos de comment est créé la colonne G, mais ce n'est pas certain que ce soit celle qui contient les nouveaux noms.

Le fichier PDF présent dans le dossier porte un code ( dans notre exemple: SDT2.4Lxx__), un intitulé fixe qui ne changera pas "2DNCT" puis un compteur suivi d'un indice (exemple: 0000012345-A). C'est tout le nommage précédent "2DNCTxxxxxxxxxx-x" qu'il faut revoir suivant les colonnes C; D et E du fichier excel.

Ce qui donne dans notre exemple le nommage du PDF qui suit:

SDT2_4L10PSF V01 OF 2DNCT0000012345-A

SDT2_4L12PSF V01 OF 2DNCT0000012345-A

SDT2_4L14PSF V01 OF 2DNCT0000012345-A

etc...

J'espère que j'ai été un peu plus claire dans mes explications. Merci encore pour ton aide.

Cordialement,

Matthieu

Bonjour Sequoyah,

Ta macro fonctionne bien mais il faudrait un déploiement sur toutes les lignes de mon fichier PDF

Avant macro:

image

Après macro, le PDF se créé mais que pour la première ligne de mon fichier excel.

image

J'ai cependant une erreur lors que lancement de la macro.

image image

C'est une première solution qui fonctionne ! Merci à toi. Mais comme je l'indique à "Yvouille" le top serait de pouvoir se passer de la colonne A, car c'est un texte saisie à la main (enfin en copier-coller). Cela permettrait d'automatiser un peu plus le process.

Merci beaucoup pour ton aide.

Salut Matth,

Sequoyah a repris le sujet (ce que je n'ai pas compris) ; je te laisse entre ses mains.

Amicalement.

Bonjour Matthieu, salut Yvouille

l'erreur qui apparaît indique que le fichier n'a pas été trouvé, presque certainement parce que son nom n'est pas écrit correctement ou il a déjà été renommé. La macro agit sur toutes les lignes de la feuille à partir de la deuxième ligne et jusqu'à la dernière. Pour éviter les erreurs dues à l'écriture manuelle dans la colonne A je te conseille de copier et coller le nom du fichier.

À bientôt.

Bonjour Sequoyah,

Mon nommage dans la colonne A correspond pourtant bien au nom de mon PDF. Je ne comprend pas pourquoi la macro fonctionne que sur la ligne 2.

image image
Sub Macro_Matth()
Dim i As Integer, FichierOriginal As String, FichierCopie As String

MonDossier = ThisWorkbook.Path & "\"

For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
FichierOriginal = MonDossier & Range("A" & i)
FichierCopie = MonDossier & Range("G" & i)
Name FichierOriginal As FichierCopie
Next i

End Sub

Sais tu si nous avons le moyen de nous passez de la colonne A, comme expliqué dans les messages précédent ?

5essai.xlsm (20.77 Ko)

Merci beaucoup.

Cordialement,

Matthieu

Bonjour Matthieu,

une proposition à tester par précaution sur une copie de ton dossier:

Sub Macro_Matth3()
'https://forum.excel-pratique.com/excel/comment-renommer-plusieurs-pdf-a-partir-de-donnees-excel-191533

Dim MyFile          As Variant
Dim FldrPicker      As FileDialog
Dim MyFolder        As String, FichierCopie As String
Dim Compteur        As Integer

Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)

With FldrPicker
    .Title = "Choisir dossier..."
    .AllowMultiSelect = False
    If .Show <> -1 Then Exit Sub
    MyFolder = .SelectedItems(1) & "\"
End With

MyFile = Dir(MyFolder & "\*.pdf")

Compteur = 2

Do While MyFile <> ""
    On Error Resume Next

    FichierCopie = MyFolder & Range("G" & Compteur).Value
    Name MyFolder & "\" & MyFile As FichierCopie

    MyFile = Dir
    Compteur = Compteur + 1

Loop

End Sub

Bonjour Sequoyah.

Merci beaucoup pour ta proposition . On se rapproche du but !!

La macro n'a généré qu'un PDF pour la ligne 2. Mais il est correctement nommé

image

Dans la macro il est noté ceci:

image

Il serait possible de lui dire de lire toutes les lignes, pour générer tous les PDF ?

Autre point. Serait il possible que l'emplacement de création des PDF soit mis par défaut dans la macro ? Comme dans mon exemple ci-dessous.

Je n'ai pas besoin d'avoir une fenêtre de sélection du dossier qui s'ouvre car mon dossier de réception sera toujours le même.

image

Merci encore pour ton aide, et n'hésite pas à m'envoyer des messages privés si tu veux plus de précision ou si tu as des questions.

Cordialement,

Matthieu

Bonjour Matthieu,

ci-dessous le code modifié. La macro boucle et traite tous les fichiers PDF originaux du dossier par ordre alphabétique. La ligne 2 du compteur correspond à la deuxième ligne du fichier Excel (cellule G2), en supposant que la première ligne contient l'en-tête, comme dans le fichier exemple que tu as posté. A chaque boucle le compteur est augmenté de 1, donc le fichier suivant est renommé avec le nom contenu dans les cellules G3, G4, G5 et ainsi de suite. Assure-toi que le nom du fichier dans la colonne G est complet avec l'extension .pdf et qu'il n'y a pas de lignes vides ou masquées. A' adapter le chemin dans le code. Pas besoin de messages privés, le forum est un lieu de partage.

ub Macro_Matth4()
'https://forum.excel-pratique.com/excel/comment-renommer-plusieurs-pdf-a-partir-de-donnees-excel-191533

Dim MyFile As String, MyFolder As String, FichierCopie As String
Dim Compteur As Integer

MyFolder = "C:\Users\blabla\Desktop\Forum\" '<<==== chemin à adapter

MyFile = Dir(MyFolder & "*.pdf")

Compteur = 2

Do While MyFile <> ""
    On Error Resume Next

    FichierCopie = MyFolder & Range("G" & Compteur).Value
    Name MyFolder & "\" & MyFile As FichierCopie

    MyFile = Dir
    Compteur = Compteur + 1

Loop

End Sub

Il me semble que c'est laborieux ! Sequoyah, tu n'aurais peut-être pas dû venir me piquer ce sujet.

Il y a tellement de demandes sans réponse à prendre en charge !

Bonjour Sequoyah,

La macro ne fonctionne malheureusement pas. Il me semble que nous ne nous soyons mal ou pas compris.

Je souhaite à partir d'un fichier PDF (exemple: SDT2.4Lxx__2DNCT0000012345-A.pdf) qui sera présent toujours dans le même dossier, créer plusieurs PDF ayant des nommages différents suivant les données présentes dans chaque lignes de mon tableau Excel.

image

Ce qui donnerait dans notre exemple la création des PDF suivants, un cliquant une seule fois sur exécuter la macro:

SDT2_4L10PSF V01 OF 2DNCT0000012345-A.pdf

SDT2_4L12PSF V01 OF 2DNCT0000012345-A.pdf

SDT2_4L14PSF V01 OF 2DNCT0000012345-A.pdf

SDT2_4L16PSF V01 OF 2DNCT0000012345-A.pdf

SDT2_4L18PSF V01 OF 2DNCT0000012345-A.pdf

SDT2_4L20PSF V01 OF 2DNCT0000012345-A.pdf

On peux s'appuyer sur la colonne G pour faire le nommage de ces PDF, mais le top serait de pouvoir concaténer les colonnes B, D et E, ET le nommage du PDF présent dans le dossier (exemple: SDT2.4Lxx__2DNCT0000012345-A.pdf) on nous retrouverons toujours 2DNCTxxxxxxxxxx-x (soit les 17 derniers caractères du nom du PDF).

Merci à toi

Yvouille a écrit :

Il me semble que c'est laborieux ! Sequoyah, tu n'aurais peut-être pas dû venir me piquer ce sujet.

Il y a tellement de demandes sans réponse à prendre en charge !

Yvouille, je suis nouveau sur le forum. Je ne sais pas trop comment se passe la gestion des réponses sur les post. Merci pour les premières réponses que tu as apportés. Je serais très heureux que tu nous aides sur ce sujet. Je pense que la solution pourra aider d'autre personnes sur ce forum .

bonjour Sequoyah,Matth,Yvouille,

pourtant Sequoyah y était presque, mais rien vous interdit de continuer avec votre réponse

Sub Macro_Matth()
     Dim i As Integer, FichierOriginal As String, FichierCopie As String

     MonDossier = ThisWorkbook.Path & "\"

     For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
          FichierOriginal = MonDossier & Range("A" & i)
          FichierCopie = MonDossier & Range("G" & i)

          If Dir(FichierOriginal) = "" Then
               MsgBox "ce fichier source n'existe pas", vbCritical, FichierOriginal
          Else
               b = (Dir(FichierCopie) = "")  'fichericopy n'existe pas encore
               If Not b Then b = (vbYes = MsgBox("ce fichier destination existe déjà" & vbLf & "overwrite ??? ", vbYesNo, FichierCopie))
               If b Then FileCopy FichierOriginal, FichierCopie
          End If

     Next
End Sub

Bonjour BsAlv,

Ta macro fonctionne parfaitement. Merci beaucoup .

image

Est ce qu'il serait possible d'intégrer à la macro la suppression du fichier pdf original ?

------

Autre point, comme indiquer dans les échanges précédents. Je souhaiterais "automatiser" un peu plus la macro en évitant d'indiquer le nommage du fichier source (colonne A) et le nommage final (colonne G) dans mon tableau Excel.

image

L'idée serait de pouvoir nommer les PDF en concaténant les colonnes B, C et D, ET les 17 derniers caractères du titre du PDF présent dans le dossier. Est ce techniquement possible ?

image image

Merci pour votre aide à tous.

Cordialement,

Matthieu

re,

je ne l'ai pas encore testé, mais un essai rapide

3essai-11.xlsm (162.74 Ko)

RE bonjour,

La macro fonctionne bien et le fichier PDF original est supprimé à la fin. C'est nickel !

Seulement j'ai l'impression qu'utilise tout de même la colonne D, qui reste un nommage en copier/coller d'une partie du titre du PDF.

Y a t'il moyen de se passer de cette colonne ?

Cette colonne peut elle être créé par la macro si nous en avons vraiment besoin pour la génération des PDF ?

Pour info, les colonnes A, B et C sont des éléments qui arrivent en automatique à partir d'un autre fichier Excel.

image

J'ai également oublié d'indiquer une particularité du nommage intial des fichiers PDF (je m'en excuse ).

Le code "PSF" est indiqué dans le nommage final des PDF lorsque le PDF initial comporte "xx__" ou "xxD__" (exemple: SDT2.4LxxD__2DNCT0000012345-A.pdf)

Un code "PF" est indiqué dans le nommage final des PDF lorsque le PDF initial comporte "xx_" ou "xxD_" (exemple: SDT2.4LxxD_2DNCT0000012345-A.pdf)

Merci à vous tous.

Désolé pour ces derniers ajouts. Ça commence à être une usine à gaz, mais je suis persuadé que c'est possible d'y arriver !

Cordialement,

Matthieu

re,

allez, votre usine à gaz ...

10essai-11.xlsm (164.09 Ko)
Rechercher des sujets similaires à "comment renommer pdf partir donnees"