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:
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.
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.
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 :
Si tu lances une deuxième fois la macro, les fichier en place, portant le même nom, sont effacer sans information.
Cordialement.
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.
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:
Après macro, le PDF se créé mais que pour la première ligne de mon fichier excel.
J'ai cependant une erreur lors que lancement de la macro.
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.
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 ?
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
La macro n'a généré qu'un PDF pour la ligne 2. Mais il est correctement nommé
Dans la macro il est noté ceci:
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.
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.
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
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.
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 ?
Merci pour votre aide à tous.
Cordialement,
Matthieu
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.
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