Microsoft 365 Enregistrer un fichier Word à partir d'excel

Alain79

XLDnaute Nouveau
Bonsoir,
Je travaille sous Windows 10 avec notamment office 365 et plus particulièrement Excel et Word. J'ai un fichier excel relatif à des recherches généalogiques dont la liste des personnes avec différentes informations sous contenues sur une feuille. A partir d'une autre feuille, je sélectionne une personne et quatre cellules (ex. Cellule B4 à B7) se remplissent automatiquement des informations souhaitées, de plus dans deux autres cellules est indiqué le nom que je souhaite attribuer au fichier Word (ex. Cellule B10) et le nom de l'emplacement dans le répertoire souhaité (ex. Cellule B12).
A l'aide de la macro suivante :
Dim WordApp As Word.Application
Dim DocWord As Word.Document

Set WordApp = CreateObject("word.Application")
WordApp.Visible = True
Set DocWord = WordApp.Documents.Add(Template:="D:\Genealogie\Extraits\Entete.docx" _
, NewTemplate:=False, DocumentType:=0)
Je crée un fichier word qui se nomme automatiquement "Document1" à partir du modèle que j'ai précédemment créé comprenant les 4 cellules du fichier excel enregistré sous "D:\Genealogie\Extraits\Entete.docx"
Je complète ce fichier Word à l'aide d'une image scannée (ex. Un acte d'état civil) et je souhaiterais pouvoir à l'aide d'une macro enregistré ce fichier au format PDF sous le nom figurant cellule B10 et dans l'emplacement figurant cellule B12.
Pour l'instant, je copie le nom du fichier sous Excel, je bascule sous Word, je clique sur le bouton "enregistrer", colle le nom du fichier, sélectionne le format PDF et modifie l'emplacement proposé par défaut.
Ayant un millier de fichiers à créer, j'aimerais à l'aide d'une macro automatiser l'opération. J'ai essayé différentes façons notamment à l'aide d'exemples trouvés sur les forums sans résultats.
Quelqu'un pourrait-il m'aider et par avance je l'en remercie.
PS : je précise que j'ai 75 ans et donc je n'ai jamais eu aucune formation informatique, mais je m'efforce à automatiser mes fichiers Excel, car j'utilise beaucoup ce logiciel depuis la version excel IV pour lequel les macros n'étaient pas écrites en VBA.
 

Alain79

XLDnaute Nouveau
Re
Oui bien sur j'ai rectifier ton code en mettant les bonnes références (feuille et cellules).
Mais le problème est que le fichier se crée avec l'entête et la boite de dialogue pour l'enregistrement s'ouvre avec le bon nom de fichier cette fois mais pas le bon emplacement, mais l'emplacement par défaut et avec l'extension .doc bien sûr. Donc sans image ni au format pdf
 

Staple1600

XLDnaute Barbatruc
Re

Tu as de la chance, mon assiette de soupe est trop chaude ;)
(voir édition message précédent)
Voila pour la syntaxe pour Enregistrer en PDf
(test OK chez moi)
VB:
Sub DocWord_Quattro()
Dim WordApp As Word.Application, DocWord As Word.Document, Modele As String
Dim Chemin$, Fichier$
Modele = "D:\Genealogie\Extraits\Entete.docx"
Chemin = Feuil1.[B10].Value2
Fichier = Feuil1.[B12].Value2
Set WordApp = CreateObject("word.Application")
WordApp.Visible = True
Set DocWord = WordApp.Documents.Add(Template:=Modele, DocumentType:=0)
MsgBox "Pause" 'juste pour test
DocWord.ExportAsFixedFormat Chemin & "\" & Fichier & ".pdf", wdExportFormatPDF
WordApp.Quit
End Sub
NB: Il s'agit pour le moment que d'un test.

Cette fois-ci, je retourne diner. ;)
 

Alain79

XLDnaute Nouveau
Re

J'ai testé et ça marche mais le problème est que j'enregistre un fichier avec une entête mais sans image.
Pour cela, il faudrait que je puisse faire le travail à l'aide de 2 macros, la 1ére pour créer le fichier avec l'entête, et après avoir collé l'image, la 2éme pour enregistrer le fichier au format pdf.
Petite question qui ne concerne pas Excel mais Word : peut-on créer une macro dans Word en prenant les références (nom de fichier et emplacement d'enregistrement) dans un fichier Excel ?
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

peut-on créer une macro dans Word en prenant les références (nom de fichier et emplacement d'enregistrement) dans un fichier Excel ?
Un exemple par rapport à cette dernière petite question ;)
VB:
Option Explicit
Const modXL As String = "C:\Users\STAPLE\Documents\testWORD\modele.xlsx" ' à adapter
Sub test_Copie_IMG_puis_XLS_vers_DOC()
'NB: Activer la référence : Microsoft Excel XX.0 Library dans Outils/Références
Dim objXL As Excel.Application, wk As Excel.Workbook, ws As Excel.Worksheet
Set objXL = New Excel.Application
'une image est préalablement copiée dans le Clipboard
'Elle est copiée là où se situe le curseur dans le document Word
Selection.PasteSpecial Link:=0, DataType:=5, Placement:=0
'On ouvre le fichier Excel
Set wk = objXL.Workbooks.Open(modXL)
Set ws = wk.Sheets(1)
'On inscrit dans le document Word les valeurs de C4 et C9 de la 1èrer feuille du classeur
'NB: La document Word doit avec au moins 4 paragraphes
ActiveDocument.Paragraphs(2).Range.Text = ws.Range("C4")
ActiveDocument.Paragraphs(3).Range.Text = ws.Range("C9")
wk.Close savechanges:=False
objXL.Quit
End Sub
NB: test OK sur PC
(C'est une macro qui doit se situer dans un document WORD)
 

Alain79

XLDnaute Nouveau
Bonsoir
Merci de reprendre la discussion. Je viens de regarder ta macro et j'avoue que je n'y comprends pas grand-chose car je ne vois pas comment mon fichier Word va s'enregistrer au format PDF

Moi, j'aurais besoin d'une macro du type ci-dessous à insérer dans le Fichier Word :

Sub Macro2()
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"D:\Genealogie\Extraits\Naissance\EN 18541223 DUBOIS François (Fiche n° 217).pdf", ExportFormat:= _
wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=True
End Sub

Sauf qu'il faudrait que je récupère dans mon fichier excel l'emplacement et le nom du fichier, dans l'exemple ci-dessus "D:\Genealogie\Extraits\Naissance\EN 18541223 DUBOIS François (Fiche n° 217).pdf" qui se trouve sur ma feuille de calcul Feuil4 cellule E16
 

Staple1600

XLDnaute Barbatruc
Re

Je ne fais que répondre à ceci par un exemple
(comme précisé)
Alain¸ la moue interrogative à dit:
peut-on créer une macro dans Word en prenant les références (nom de fichier et emplacement d'enregistrement) dans un fichier Excel ?
Cet exemple est juste illustratif.

(Et dans cet exemple, j'ai ajouté, ce que tu évoquais précédemement
Je copie une image
Et je colle dans Word
(C'est que fait la macro "automatiquement" ici en plus de prendre deux valeurs dans un fichier exemple)
 

Staple1600

XLDnaute Barbatruc
Sauf qu'il faudrait que je récupère dans mon fichier excel l'emplacement et le nom du fichier, dans l'exemple ci-dessus "D:\Genealogie\Extraits\Naissance\EN 18541223 DUBOIS François (Fiche n° 217).pdf" qui se trouve sur ma feuille de calcul Feuil4 cellule E16
On en revient donc à la solution par publipostage (en tout cas c'est la voie que je prendrai et qui fonctionne. La preuve, ci-dessous
NB: Il suffit d'adapter cette macro
(Si le chemin est "statique", et qu'en colonne E, on a le juste le nom du fichier, il y aura peu d'adaptation à faire.)
Au cas où, cet exemple parvient à te convaincre., fais-moi signe et je te fournirai des infos complémentaires si besoin.

Pour le moment, c'est encore l'heure du souper. ;)
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, Alain

=>Alain
Sans passer par le publipostage
(On exporte N version du document Word en PDF à partir d'une base XL)
VB:
Const modXL As String = "C:\Users\STAPLE\Documents\testWORD\modele.xlsx" ' à adapter
Sub test_DOC_vers_PDF_baseXLS()
'NB: Activer la référence : Microsoft Excel XX.0 Library dans Outils/Références
Dim objXL As Excel.Application, wk As Excel.Workbook, ws As Excel.Worksheet
Dim derLig As Long, Chemin As String
Chemin = "C:\Users\STAPLE\Documents\testWORD\" ' à adapter
Set objXL = New Excel.Application
Application.ScreenUpdating = False
Set wk = objXL.Workbooks.Open(modXL)
Set ws = wk.Sheets(1)
derLig = ws.Cells(objXL.Rows.Count, "E").End(xlUp).Row
For i = 2 To derLig
ActiveDocument.ExportAsFixedFormat Chemin & ws.Cells(i, "E") & ".pdf", wdExportFormatPDF
Next
wk.Close savechanges:=False
objXL.Quit
End Sub
NB: (*) test OK sur mon PC
PS: Il s'agit toujours d'un exemple à vocation illustrative.
(*) ci-dessous résultat obtenu.
resultat.png
 
Dernière édition:

Alain79

XLDnaute Nouveau
Bonsoir,
Désolé mais la solution proposée ne correspond pas à la question posée. Dans la macro, je ne vois à aucune part mon document Word à enregistrer, et je n'ai aucune liste dans mon fichier excel indiquant les fichiers à enregistrer au format pdf.
 

Staple1600

XLDnaute Barbatruc
Re

=>Alain
Ai-je écrit solution?
Non, j'ai écrit exemple!
Et la question posée sur laquelle se base l'exemple est:
Sauf qu'il faudrait que je récupère dans mon fichier excell'emplacement et le nom du fichier, dans l'exemple ci-dessus "D:\Genealogie\Extraits\Naissance\EN 18541223 DUBOIS François (Fiche n° 217).pdf" qui se trouve sur ma feuille de calcul Feuil4 cellule E16
Dans mon exemple:
Les noms des fichiers sont en colonne E d'un fichier Excel appelé par une macro dans un document Word qui exporte N fois en PDF selon le nom indiqué en colonne E.
(Le chemin est indiqué dans la constante nommée modXL)

Et cette ligne fait bien référence au document Word!
Enrichi (BBcode):
ActiveDocument.ExportAsFixedFormat Chemin & ws.Cells(i, "E") & ".pdf", wdExportFormatPDF
As-tu au moins tester le code en reproduisant l'exemple que l'on voit sur la copie d'écran?
 

Alain79

XLDnaute Nouveau
Re
Merci pour le complément d'information, mais je testerais ta macro demain car ce soir je suis souffrant et je dois me coucher. Toutefois, je précise que mon fichier Excel au format .xlsm (car il convient plusieurs feuilles et plusieurs macros) n'est pas enregistré dans le même répertoire que les fichiers pdf qui sont eux même enregistrés dans 3 répertoires différents en fonction de la nature du document (Naissance, mariage, décès).
Désolé, mais je dois vraiment aller me coucher.
Cordialement
 

Staple1600

XLDnaute Barbatruc
Re

Toutefois, je précise que mon fichier Excel au format .xlsm (car il convient plusieurs feuilles et plusieurs macros)
Dans ce cas, joint une copie expurgée et anonymisée avec seulement un feuille mais avec le projet VBA (donc tes propres macros)
Au moins avec ces élements, mes tests seront plus proches de ta réalité.

Bon repos. (et rétablissement)
;)
 

Alain79

XLDnaute Nouveau
Bonsoir,
Désolé d'avoir interrompu la discussion mais des problèmes de santé m'ont imposé de rester aliter plusieurs jours.
Pour revenir à la question, j'ai trouvé une solution qui n'a pas apporté la réponse à ma question mais qui a réglé mon problème.
En fait, au lieu de créer un fichier Word avec l'entête provenu du fichier Excel, puis de coller l'image dans mon fichier Word, je colle directement dans ma feuille Excel contenant les éléments d'entête puis je colle en dessous mon image et j'enregistre une partie de ma feuille au format PDF avec le nom de fichier et l'emplacement d'enregistrement calculés automatiquement. Et ça fonctionne très bien.
Toutefois, je tiens particulièrement à te remercier pour le temps que tu as passé pour essayer de m'apporter une solution.
Peut-être aurais-je le plaisir de se recontacter si je rencontre un nouveau problème.
Encore merci.
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
311 712
Messages
2 081 802
Membres
101 819
dernier inscrit
lukumubarth