Macro - Chemin fichier en relatif

Fermé
Signaler
-
 Evilapin -
Bonjour,

J'ai le code suivant :

Sub publipostage()
'
' publipostage Macro
' publipostage
'
ActiveDocument.MailMerge.OpenDataSource Name:= _
"C:\Users\User\Desktop\contrat\INTEGRAL DESIGNATION MAKER3\modeleIM3.xlsm" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\User\Desktop\contrat\INTEGRAL DESIGNATION MAKER3\modeleIM3.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engi" _
, SQLStatement:="SELECT * FROM `Données$`", SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle

End Sub

Je souhaiterais que les chemins vers les fichiers (en gras) soient relatifs pour que ça puisse fonctionner chez tous les membres de mon services, peut importe le dossier dans lequel ils glissent le fichier.

Pourriez-vous m'aider ?

J'ai essayé avec le ThisWorkbook.Path mais je n'y arrive pas.

Merci beaucoup :) !


3 réponses

Messages postés
17336
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
23 janvier 2022
10 795
Bonjour,$

"ThisWorkbook.Path", ça ne t'étonnera pas si je te dis que c'est de l'Excel ? Dans Word, il n'y a pas de Workbook même dans un chemin où se trouve un classeur Excel.

Espérant que les fichiers sont au même endroit sur tous les postes, il faut utiliser la fonction Environ.

Par exemple :
chemin = Environ("USERPROFILE") & "\Desktop\contrat\INTEGRAL DESIGNATION MAKER3\"


A noter que Desktop est une très mauvaise idée.
Normalement les modèles doiivent se trouvent dans le dossier prévu pour les modèles et là on aurait :

chemin = Environ("USERPROFILE") & "\Documents\Modèles Office personnalisés\INTEGRAL DESIGNATION MAKER3\"

ou

chemin = Environ("USERPROFILE") & "\AppData\Roaming\Microsoft\Templates\INTEGRAL DESIGNATION MAKER3\"

selon la version.

m@rina



0
Merci pour votre réponse.
Je ne le savais pas merci.

En revanche, je voudrais aussi que le fichier word puisse être déplacé, de même que le fichier Excel (ils resteront toujours tous les deux dans un même dossier, mais le dossier lui peut bouger).

Comment faire ? Quel code utiliser et comment l´implanter dans le code que je vous ai copié collé ci-dessus ?

Merci beaucoup pour votre aide
0
J'ai trouvé une solution !
Pour ceux que ça intéresse :

  ActiveDocument.MailMerge.MainDocumentType = wdFormLetters
ActiveDocument.MailMerge.OpenDataSource Name:= _
ActiveDocument.Path & "\modeleIM3.xlsm" _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=ActiveDocument.Path & \modeleIM3.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engi" _
, SQLStatement:="SELECT * FROM `Données$`", SQLStatement1:="", SubType:= _
wdMergeSubTypeAccess
0