Macro VBA pour demander chemin d'accès
Bonjour,
voici une macro VBA qui sert à découper et à sauvegarder en documents pdf individuels un publipostage fait à partir d'une BD excel et un document Word.
Le chemin d'accès pour la sauvegarde est fixé dans cette macro. Je souhaite plutôt demander à l'utilisateur le chemin d'accès qu'il souhaite utiliser pour rendre la macro plus flexible.
Est-ce que quelqu'un peut m'indiquer le code à ajouter si je souhaite demander à l'usager un chemin d'accès?
Merci.
La macro est la suivante:
'Publipostage > Word, enregistrement individuel en PDF
Sub TestPublipostPdf()
' Déclaration des variables
Dim iR As Integer
Dim i As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource
' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource
iR = oDoc.MailMerge.DataSource.RecordCount
Debug.Print iR
For i = 1 To iR
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = i
'Utilisation de deux champs pour obtenir le nom du document ; remplacer le chiffre 6 par le numéro de colonne qui contient l'adresse mail
'si c'est pour un envoi sur outlook avec la macro en individuel ou par le n° de col qui servira de nom ) votre pdf
DocName = .DataSource.DataFields(1).Value
'Si vous souhaitez utiliser deux champs pour nommer votre document retirez la quote devant la ligne qui suit et remplacer le n° de colonne
'DocName = DocName & "-" & .DataSource.DataFields(3).Value
Debug.Print DocName; i
End With
' Chemin de Sauvegarde du document publiposté ; modifier le chemin avec les guillemets sans oublier de mettre un \ à la fin
With ActiveDocument
'N'oubliez pas de rajouter un \ après le nom de votre dossier et avant la fermeture des guillemets
.SaveAs "C:\Users\Patricia\Desktop\PJ\" & DocName & ".pdf", wdExportFormatPDF .Close False
End With
Next i
End Sub
Bonjour Philippe, bonjour le forum,
Peut-être comme ça :
Sub TestPublipostPdf()
' Déclaration des variables
Dim iR As Integer
Dim i As Integer
Dim oDoc As Document
Dim DocName As String
Dim oDS As MailMergeDataSource
Dim FD As FileDialog 'déclare la variable FD (FileDialog)
Dim CH As String 'déclare la variable CH (CHemin)
' Affectation des objets
Set oDoc = ActiveDocument
Set oDS = oDoc.MailMerge.DataSource
iR = oDoc.MailMerge.DataSource.RecordCount
Debug.Print iR
For i = 1 To iR
With oDoc.MailMerge
'Définition du premier et dernier enregistrement
.DataSource.FirstRecord = i
.DataSource.LastRecord = i
' Envoi des données dans un nouveau document
.Destination = wdSendToNewDocument
' Exécution du publipostage
.Execute
' Actualisation de l'enregistrement pour la sauvegarde
.DataSource.ActiveRecord = i
'Utilisation de deux champs pour obtenir le nom du document ; remplacer le chiffre 6 par le numéro de colonne qui contient l'adresse mail
'si c'est pour un envoi sur outlook avec la macro en individuel ou par le n° de col qui servira de nom ) votre pdf
DocName = .DataSource.DataFields(1).Value
'Si vous souhaitez utiliser deux champs pour nommer votre document retirez la quote devant la ligne qui suit et remplacer le n° de colonne
'DocName = DocName & "-" & .DataSource.DataFields(3).Value
Debug.Print DocName; i
End With
' Chemin de Sauvegarde du document publiposté ; modifier le chemin avec les guillemets sans oublier de mettre un \ à la fin
Set FD = Application.FileDialog(msoFileDialogFolderPicker) 'définit la variable FD fenêtre [Parcourir] pour sélectionner le dossier
FD.AllowMultiSelect = False 'n'autorise qu'une seule sélection
FD.Show 'ouvre la fenêtre [Parcourir]
If FD.SelectedItems.Count <> 0 Then CH = FD.SelectedItems(1) 'si un dossier a été sélectionné, récupère le chemin du dossier dans la variable CH
With ActiveDocument
'N'oubliez pas de rajouter un \ après le nom de votre dossier et avant la fermeture des guillemets
.SaveAs CH & "\" & DocName & ".pdf", wdExportFormatPDF
.Close False
End With
Next i
End Sub
Lorsque je recopie le code, j'ai des erreurs. Je vous envoie le fichier avec votre code à l'intérieur.
Re,
Désolé mais je ne connais pas les macro pour Word. Ce que j'ai fait c'est juste vous proposé quelques lignes qui fonctionnent sur Excel...
Ce n'était pas une erreur due au fait que VBA soit dans word, mais bien dans la recopie. Merci pour le coup de pouce et désolé pour la lenteur du suivi.