Word [RESOLU] - Macro Save As

senpan

XLDnaute Junior
Bonjour à tous,

Je sais que ce forum n'est pas spécialement dédié à Word mais je sais aussi que vous êtes de très bon contributeurs.

Voici mon problème.
J'ai créé une macro Word 2016 qui a pour but d'enregistrer un document en format PDF avec pour nom le contenu d'un champ de formulaire avec d'autre caractéristiques. Le fichier PDF doit ensuite être enregistrer dans un dossier que nous nommerons pour l'occasion "TOTO" présent sur le bureau.
Si le dossier n'existe pas, il faut le créer. C'est déjà un premier problème pour moi.
Viens ensuite le nommage du fichier. Voici la forme souhaitée : "ASP - yymmdd - text_champ_formulaire.pdf".
Le problème étant que le contenu du champ de formulaire nommé ORGANISME n'est pas pris en compte. Cela donne une erreur de méthode d’exécution : "Le membre de la collection requis n'existe pas". Hein ? Comment ? De quoi que tu cose ?

Mon code :
Code:
Sub Enregistrement()

ActiveDocument.Unprotect Password:=""

Dim Nom As String

Nom = ActiveDocument.FormFields("ORGANISME").Result
ChangeFileOpenDirectory "C:\Users\SENPAN\Desktop\TOTO"
ActiveDocument.SaveAs FileName:="ASP - " & Format(Date, "yymmdd") & "-ATS-" & Format(Time, "hhmmss") & " - " & Nom & ".pdf"

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:=""

'ActiveDocument.Close

End Sub

Avez-vous une idée de comment résoudre ces deux problèmes ?
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum, senpan

@senpan
Test OK sur Word 2013
(Je te laisse les modifications nécessaires pour remettre le bon chemin et le bon nom de dossier
VB:
Sub Enregistrement_BIS()
Dim Nom As String, strPath$, Fichier$
'ActiveDocument.Unprotect Password:=""
'strPath = "C:\Users\SENPAN\Desktop\"
strPath = ActiveDocument.Path & "\"
'Nom = ActiveDocument.FormFields("ORGANISME").Result
Nom = "Staple1600"
On Error Resume Next
MkDir strPath & "TOTO"
On Error GoTo 0
Fichier = Format(Now, """ASP - ""yymmdd""-ATS-""hhmmss""-""") & Nom & ".pdf"
'ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:=""
 ActiveDocument.ExportAsFixedFormat _
    OutputFileName:=strPath & "\" & "TOTO" & "\" & Fichier, _
    ExportFormat:=wdExportFormatPDF, _
    OptimizeFor:=wdExportOptimizeForPrint, _
    Range:=wdExportAllDocument
End Sub
 

senpan

XLDnaute Junior
Bonjour à tous, Bonjour Staple1600,

Merci pour ton aide mais j'ai réussi à trouver quelque chose de plus court.
Seul problème, la récupération du nom présent dans le champ de formulaire intitulé ORGANISME.

Mon code actuel :
VB:
Sub ENREGISTREMENT()
  'Pour enregistrer le document en format PDF

'-----------------------------
' enregistrement du document |
'-----------------------------

ActiveDocument.Unprotect Password:="test"

If Dir("C:\Users\SENPAN\Desktop\TOTO\", 16) = "" Then MkDir ("C:\Users\SENPAN\Desktop\TOTO\")

Dim NFic$
NFic = "C:\Users\SENPAN\Desktop\TOTO\" & Format(Date, "yymmdd") & "-ATS-" & Format(Time, "hhmmss")
' Idéale ligne ci-dessous
' NFic = "C:\Users\SENPAN\Desktop\TOTO\" & Format(Date, "yymmdd") & "-ATS-" & Format(Time, "hhmmss") & " -- " & Nom
' Nom = contenu du champ de formulaire ORGANISME

  ActiveDocument.ExportAsFixedFormat OutputFileName:=NFic, ExportFormat:=wdExportFormatPDF, OptimizeFor:=wdExportOptimizeForPrint, IncludeDocProps:=True, OpenAfterExport:=True

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:="test"

'ActiveDocument.Close -> que j'activerai une fois le codage terminé ;)
'--------------------
'fin enregistrement |
'--------------------

End Sub
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum, senpan

@senpan
Je ne vois rien de plus court...au contraire :D
Ma prose
Fichier = Format(Now, """ASP - ""yymmdd""-ATS-""hhmmss""-""") & Nom & ".pdf"
La tienne
NFic = "C:\Users\SENPAN\Desktop\TOTO\" & Format(Date, "yymmdd") & "-ATS-" & Format(Time, "hhmmss")
Et si on prends celle que tu estimes idéale
NFic = "C:\Users\SENPAN\Desktop\TOTO\" & Format(Date, "yymmdd") & "-ATS-" & Format(Time, "hhmmss") & " -- " & Nom
 

senpan

XLDnaute Junior
Bonjour le forum, le fil, Staple1600,

J'ai finalement fait cette macro qui me convient parfaitement :
VB:
Sub ENREGISTREMENT()
    'Pour enregistrer le document en format PDF

'-----------------------------
' enregistrement du document |
'-----------------------------

ActiveDocument.Unprotect Password:="test"

If Dir("C:\Users\TOTO\Desktop\ASP - Contrat de cession\", 16) = "" Then MkDir ("C:\Users\TOTO\Desktop\ASP - Contrat de cession\")

Dim NFic$
NFic = "C:\Users\TOTO\Desktop\ASP - Contrat de cession\" & ActiveDocument.FormFields("ORGANISME").Result & " -- " & Format(Now, """ASP - ""yymmdd""-ATS-""hhmmss""-""")

    ActiveDocument.ExportAsFixedFormat OutputFileName:=NFic, ExportFormat:=wdExportFormatPDF, OptimizeFor:=wdExportOptimizeForPrint, IncludeDocProps:=True, OpenAfterExport:=True

ActiveDocument.Protect Type:=wdAllowOnlyFormFields, Password:="test"

ActiveDocument.Close
'--------------------
'fin enregistrement |
'--------------------

End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

@senpan
Qui a écrit : "quelque chose de plus court" ? :D
Donc la même, mais en plus court
VB:
Sub ENREGISTREMENT()
'-----------------------------
' enregistrement du document en format PDF
'-----------------------------
Dim strPath$, NFic$
strPath = "C:\Users\TOTO\Desktop\ASP - Contrat de cession\"
With ActiveDocument
  .Unprotect Password:="test"
  If Dir(strPath, 16) = "" Then MkDir (strPath)
  NFic = strPath & .FormFields("ORGANISME").Result & " -- " & Format(Now, """ASP - ""yymmdd""-ATS-""hhmmss""-""")
  .ExportAsFixedFormat OutputFileName:=NFic, ExportFormat:=wdExportFormatPDF, OptimizeFor:=wdExportOptimizeForPrint, IncludeDocProps:=True, OpenAfterExport:=True
  .Protect Type:=wdAllowOnlyFormFields, Password:="test": .Close
End With
End Sub
 

Statistiques des forums

Discussions
312 108
Messages
2 085 366
Membres
102 874
dernier inscrit
Petro2611