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.

23evaluation.dotm (55.95 Ko)

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.

Rechercher des sujets similaires à "macro vba demander chemin acces"