Générer automatiquement un pdf lors de modif d'un doc word

Fermé
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017 - 21 août 2015 à 15:47
m@rina Messages postés 20794 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 8 septembre 2024 - 29 août 2015 à 01:17
Bonjour,
Je suis enseignant. Je réalise mes cours sur word et je convertis en PDF pour que mes élèves puissent y avoir accès à partir d'Internet sans qu'ils puissent modifier le doc.
Je souhaiterai automatiser cela. C'est à dire que lorsque je modifie pour fichier source word, le fichier PDF se mette à jour automatiquement.
Merci pour votre aide.
A voir également:

13 réponses

m@rina Messages postés 20794 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 8 septembre 2024 11 319
22 août 2015 à 00:37
Bonsoir,

Tu peux t'inspirer de cette macro qui enregistre au format pdf :
https://faqword.com/index.php/word/faq-word/environnement/892-creer-une-macro-pour-enregistrer-au-format-pdf

Il restera à donner le chemin du dossier de sauvegarde.

Pour que le document soit automatiquement enregistré en pdf à la fermeture du doc, tu peux la nommer AutoClose.

m@rina
0
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
22 août 2015 à 18:06
Bonjour,
Merci pour votre réponse.
Je n'y connais rien en code.

J'ai tapé cela :
Private Sub CommandButton1_Click()

'macro écrite par m@rina
Dim nfichier As String, nfichier2 As String, intpos As Byte

nfichier = ActiveDocument.Name
'trouve la position de l'extension
intpos = InStrRev(nfichier, ".")
'remplace l'extension doc par pdf
nfichier = Left(nfichier, intpos - 1)
nfichier2 = nfichier & ".pdf"
'enregistre dans le dossier en cours
ActiveDocument.ExportAsFixedFormat outputFileName:=ActiveDocument.Path & "/" & nfichier2, _
exportFormat:=wdExportFormatPDF

End Sub

Cela ne fonctionne pas. Quelles modifications sont à faire et où enregistrer le chemin ?
0
m@rina Messages postés 20794 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 8 septembre 2024 11 319
22 août 2015 à 20:29
Bonsoir,

Si tu as nommé ta macro "Private Sub CommandButton1_Click() ", c'est que tu as mis un bouton dans ton document, c'est ce que je suppose.
Ce nom est typique d'une macro événementielle qui s'exécutera lorsque tu cliqueras sur le bouton.

Par ailleurs cette macro permet d'enregistrer au format PDF avec le même nom que le fichier en question (moins l'extension).
Si s'agit d'un seul document qui a toujours le même nom, tu peux mettre en dur le nom ainsi que son chemin, ce qui simplifie considérablement ta macro :

Sub VersPDF()
Dim nfichier As String
nfichier = "M:\......\monfichier.pdf"
ActiveDocument.ExportAsFixedFormat outputFileName:=nfichier, exportFormat:=wdExportFormatPDF
End Sub

pour le nom du fichier (nfichier =), tu dois mettre le nom avec le chemin entier entre guillemets.
A noter que tu n'auras pas de message te demandant si tu veux écraser l'ancien fichier. Il sera automatiquement remplacé par le nouveau.

Si tu veux utiliser le bouton de commande, tu mets ("Private Sub CommandButton1_Click() ").

Si cette macro est destinée à un seul fichier, tu la mets dans le fichier en question. Si elle est destinée à plusieurs fichiers, le mieux est de la mettre dans un fichier quelconque que tu sauvegarderas dans le dossier STARTUP de Word, et tu mettras un bouton sur la barre d'outils Accès rapide pour y accéder. Dans ce cas, pour le nom du fichier, ll faudra reprendre la première macro.

m@rina

0
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
23 août 2015 à 17:24
Bonjour,

J'ai supprimé le bouton et j'ai mis ca :
Sub VersPDF()
Dim nfichier As String
nfichier = "C:\Users\Yann\OneDrive\ELEVES SB"
ActiveDocument.ExportAsFixedFormat outputFileName:=nfichier, exportFormat:=wdExportFormatPDF
End Sub

Ca me marque :
Impossible d'enregistrer l'élément suivant dans un document sans macros :
Projet VBA
Pour enregistrer un fichier avec ces fonctionnalités, cliquez sur Non pour revenir à la boîte de dialogue Enregistrer sous, puis choisissez un type de fichier prenant en charge les macros dans la liste déroulante Type de de fichier.
Voulez-vous continuer l'enregistrement en tant que document sans macros ?

Je précise, mon doc est un doc word.
Ps Dommage que je ne puisse pas mettre le fichier sur ce forum ca serait plus simple.
0
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228
23 août 2015 à 17:30
mikesubzero,

comme indiqué précédemment :
"Et si tu mets cette macro uniquement dans ton document de travail, enregistre-le en .docm"

Autrement dit, tu fais "Enregistrer sous", et dans la liste "Type" en bas de la boîte de dialogue, tu choisis "Document Word prenant en charge les macros (*.docm)".

Si tu veux mettre à disposition ton document, tu peux utiliser https://www.cjoint.com/ et revenir mettre le lien ici.

C-Claire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
23 août 2015 à 17:36
Bonjour,

J'ai justement enregistré comme précisé mais cela n'a pas l'air de fonctionner.

Voici le lien du fichier : http://www.cjoint.com/c/EHxpJ40UgO5

Merci pour votre aide.
0
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228
23 août 2015 à 17:48
Cela fonctionne très bien dans ton document, mais comme la conversion est rapide, tu ne vois pas que c'est déjà fait.
As-tu regardé dans ton dossier OneDrive ? Le PDF doit y être.

Avant le End Sub tu peux ajouter la ligne suivante
MsgBox "Le fichier PDF est créé."

Cela fera plus fini ;-)

C-Claire
0
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
23 août 2015 à 18:50
Bonjour,

Et bien je ne vois pas le fichier PDF de créé dans le dossier.

C'est à l'enregistrement ou à la fermeture du fichier word que le PDF est créé ?

Merci pour votre aide.
0
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228
Modifié par C-Claire le 23/08/2015 à 18:57
Ni l'un ni l'autre, mikesubzero.
Il faut que tu exécutes la macro. Retour à ma réponse d'hier :
"Appuie sur ALT F8 pour ouvrir la boîte de dialogue des macros et exécute-la."
Vérifie déjà qu'elle fonctionne comme ça.

Ensuite, pour automatiser la création du PDF à la fermeture, reprends la 1re réponse de m@rina, mais dans ce cas, tu pourrs enlever la ligne
MsgBox "Le fichier PDF est créé."


C-Claire
0
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017 > C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016
23 août 2015 à 19:59
Bonjour,

Donc, j'ai rouvert mon fichier Word. J'ai fait ALT F8. Ca m'ouvre les macros. Je prends VersPDF et je fais exécuter. Ca me marque le fichier PDF est créé. Par contre impossible de le retrouver dans le répertoire désigné.

Merci pour votre aide.
0
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228 > mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
24 août 2015 à 06:24
mikesubzero,

Il doit y être forcément sinon tu aurais un message du type "Le nom du dossier est incorrect".
Ton dossier OneDrive contient-il de nombreux documents ?
Vois-tu les extensions des noms de fichiers (.doc, .xlx, . pdf,...) dans l'Explorateur Windows ou sont-elles masquées ? Quelle version de Word utilises-tu ?

C-Claire
0
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017 > C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016
24 août 2015 à 20:42
Bonjour,

Je vais sur mon dossier OneDrive.
Voici l'adresse que je recopie pour voir si il n'y a pas d'erreur : C:\Users\Yann\OneDrive\ELEVES SB
Oui mon dossier OneDrive contient pas mal de documents.
Concernant les noms de fichiers, je ne vois que l'intitulé des fichiers dans la rubrique Nom, il n'y a pas d'extension affichées.
J'utilise la version Microsoft Word 2010.

Merci pour votre aide.
0
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228 > mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
24 août 2015 à 20:54
Dans l'Explorateur Windows, affiche les extensions. Cela ne résoudra pas le problème mais sera plus confortable et qui sait, permettra de mieux trouver le fichier.

Donc, dans l'Explorateur, selon ta version de Windows c'est dans "Outils" ou "Affichage", "Options des dossiers", onglet "Affichage", désactive la case "Masquer les extensions des fichiers dont le type est connu".

Vérifie si le PDF ne s'y trouve pas.
Sinon, crée un dossier à un autre endroit et change le chemin dans la macro, au moins le temps de vérifier.
Je maintiens qu'elle fonctionne parfaitement et avec la même version de Word que toi (2010).

C-Claire
0
m@rina Messages postés 20794 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 8 septembre 2024 11 319
23 août 2015 à 19:39
Bonsoir mikesubzero

Depuis la version 2007, les fichiers contenant des macros ont une extension particulière : docm (m comme macro) ou dotm pour les modèles avec macro.
Donc, il te suffit de choisir cette extension dans la liste d'Enregistrer sous.

Pour lancer la macro, je t'ai donné plusieurs méthodes :

- soit via le bouton que tu avais mis au début.
- soit avec une macro AutoClose qui déclenchera automatiquement la macro à la fermeture du document Word.
- Soit manuellement via l'éditeur de macro, via un bouton que tu aurais mis sur la barre d'outils ou le ruban, ou via un raccourci que tu aurais donné à la macro.

On peut compliquer la macro de façon à ce qu'au moment d'enregistrer ton fichier Word, elle génère automatiquement le fichier PDF.
A titre d'info, il n'y a pas d'événement pour ça, donc il faudrait modifier la macro.

m@ina

0
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
24 août 2015 à 20:47
Bonjour,

Concernant le fichier word, je l'ai effectivement enregistré sous avec prise en charge des macros, soit l'extension .docm

Relativement aux méthodes, j'avais commencé avec le bouton, mais je suis parti sur autre chose car je préférai que cela soit automatique. La macro autoclose me paraît une bonne option, après mes difficultés se situent au niveau du codage.
La dernière option que tu proposes correspondrait bien à mes attentes.
Merci pour votre aide.
0
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
24 août 2015 à 20:59
Bonjour,

J'ai essayé de regarder de mon côté.

Le chemin dans lequel je souhaitais qu'il range le fichier PDF était : C:\Users\Yann\OneDrive\ELEVES SB

Comme il y a un espace entre ELEVES et SB, j'ai changé le chemin dans la macro et j'ai choisi : C:\Users\Yann\OneDrive

Ca fonctionne cette fois, par contre, le PDF est nommé ELEVES SB, alors que je souhaiterai qu'il conserve le nom du fichier Word.

Par ailleurs, ca ne m'enregistre pas vraiment au bon endroit. Mais bon, pour l'instant mon problème avance petit à petit.

Merci pour votre aide et votre patience.
0
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
26 août 2015 à 22:58
Bonjour,

Oui cela fonctionne !

Par contre l'enregistrement automatique à la fermeture ne fonctionne pas et étrangement le code disparait à chaque fois, je suis obligé de le retaper.

Voici un copier-coller du code que j'ai tapé :
SubAutoClose VersPDF()
Dim nfichier As String, intpos As Byte
nfichier = ActiveDocument.Name
intpos = InStrRev(nfichier, ".")
nfichier = Left(nfichier, intpos - 1)
ActiveDocument.ExportAsFixedFormat outputFileName:="C:\Users\Yann\OneDrive\ELEVES SB" & "/" & nfichier, exportFormat:=wdExportFormatPDF
End Sub

Merci pour votre aide.
0
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228
Modifié par C-Claire le 27/08/2015 à 05:54
Mikesubzero,

En dehors du fait que le document doit être enregistré avec une prise en charge des macros (.docm), tu as simplement fait une petite erreur sur la première ligne. Tu as écrit :
SubAutoClose VersPDF()
au lieu de
Sub AutoClose()

Le reste est ok. Ne mets pas le nom du fichier "en dur". Tu pourras ainsi enregistrer le document sous un autre nom (toujours en .docm) et avoir le pdf correspondant.

PS : ne pas oublier les "droits" de l'auteure m@rina ;-)

C-Claire
0
m@rina Messages postés 20794 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 8 septembre 2024 11 319
27 août 2015 à 15:58
Respecter les droits d'auteur ?... Pour une macro de 3 lignes qu'on peut sans doute trouver n'importe où ? je serais mdr si je ne savais pas de qui ça vient ! Vraiment la tisane est de plus en plus imbuvable !
0
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228 > m@rina Messages postés 20794 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 8 septembre 2024
27 août 2015 à 16:34
m@rina,

En effet, pour une macro de 3 lignes qu'on trouve partout... Mais tu as pourtant l'air d'y tenir :

"macro écrite par m@rina"
"[...]puisque je suis l'auteur de cette macro"


Pas de problème de mon côté ;-)

C-Claire
0
m@rina Messages postés 20794 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 8 septembre 2024 11 319
27 août 2015 à 03:07
Bonsoir mikesubzero,

Alors je reprends depuis le début, puisque je suis l'auteur de cette macro :

Tout d'abord, si tu décides que la macro se déclenche à la fermeture du document, tu dois nommer cette macro AutoClose et la mettre dans le document en question, que tu enregistreras au format docm. Il n'y a pas de raison que ta macro disparaisse, si le fichier est bien enregistré avec ce format.

Ensuite, puisque a priori tu n'as qu'un seul fichier, et que tu veux avoir le nom de ce fichier, comme je l'ai dit, tu peux le mettre "en dur" et ta macro sera très simplifiée.

Donc voici la macro de fermeture (tu la nommes exactement comme ceci). Et à la place de "fichier.pdf", tu mets le nom du fichier avec l'extension PDF.

Sub AutoClose() 
Dim nfichier As String
nfichier = "C:\Users\Yann\OneDrive\ELEVES SB/fichier.pdf"
ActiveDocument.ExportAsFixedFormat outputFileName:=nfichier, exportFormat:=wdExportFormatPDF
End Sub


Plutôt qu'à la fermeture, tu pourrais prévoir d'enregistrer le PDF en même temps que tu enregistres ton doc Word. Dans ce cas, tu nommeras ta macro Filesave, ce qui donnera :

Sub FileSave() 
Dim nfichier As String
nfichier = "C:\Users\Yann\OneDrive\ELEVES SB/fichier.pdf"
ActiveDocument.ExportAsFixedFormat outputFileName:=nfichier, exportFormat:=wdExportFormatPDF
End Sub


m@rina
0
mikesubzero Messages postés 20 Date d'inscription vendredi 21 août 2015 Statut Membre Dernière intervention 1 janvier 2017
27 août 2015 à 22:23
Bonjour,
Bravo ! Cela fonctionne.
Vous êtes d'excellent conseil.
J'ai une dernière question, un petit bonus.
Est-il possible toujours d'imprimer automatiquement ce PDF, mais cette fois-ci de telle sorte que le PDF imprime 2 pages sur 1 car c'est du cours et ca permet aux élèves qui chargent le doc de directement imprimer un fichier plus compact.
Merci pour votre aide.
0
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228
28 août 2015 à 07:36
Mikesubzero,

La commande d'export ou d'enregistrement en PDF proposée par la macro ne permet pas de générer un PDF de 2 pages par feuille.

Cela se fait via une impression. Tu peux déjà essayer manuellement : dans la commande "Imprimer", tu indiques seulement "2 pages par feuille" en bas de la boîte de dialogue.
Pour obtenir ce résultat, il faut que tu aies une imprimante PDF et dans ce cas, on pourrait utiliser une instruction
ActiveDocument.PrintOut PrintZoomColumn:=2, PrintZoomRow:=1
à affiner selon que l'imprimante PDF est déclarée par défaut et quel est son paramétrage.

Une autre solution serait de passer par Acrobat mais cela implique une intervention manuelle.

C-Claire
0
m@rina Messages postés 20794 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 8 septembre 2024 11 319
29 août 2015 à 01:17
Bonsoir mikemikesubzero

Ce que tu demandes n'est pas impossible. Maintenant deux pages par feuille sous-entend que tu vas réduire la taille du contenu (textes, images, etc.). Est-ce bien ce que tu souhaites ?

m@rina
0
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228
22 août 2015 à 18:42
Bonjour mikesubzero,

La macro de m@rina enregistre le PDF dans le même dossier que le document source.

Le mot "Private" au début de la macro est en trop. Supprime-le.
Et remplace "CommandButton1" par "Export_PDF" par exemple. Elle sera plus facile à identifier.
Cela commencera donc par
Sub Export_PDF()
...

Appuie sur ALT F8 pour ouvrir la boîte de dialogue des macros et exécute-la.
Tu pourras lui affecter un raccourci ou l'attribuer à une icône dans la barre d'outils Accès rapide par exemple.

Pour l'exécution automatique, attention, si tu la nommes Sub AutoClose(), il ne faudra pas l'enregistrer dans le modèle Normal.dotm. Sinon tous tes documents seront enregistrés en PDF par la suite.

Et si tu mets cette macro uniquement dans ton document de travail, enregistre-le en .docm.
-1
C-Claire Messages postés 4014 Date d'inscription samedi 8 novembre 2014 Statut Membre Dernière intervention 3 octobre 2016 2 228
25 août 2015 à 06:41
Mikesubzero,

J'ai cru que "Eleves SB" était le nom du document de sortie...
Si tu veux conserver le même nom et enregistrer dans le dossier "ELEVES SB", tu peux reprendre la 1re macro de m@rina en modifiant le chemin du dossier. On peut encore la simplifier car il n'est pas nécessaire d'indiquer l'extension .pdf, le paramètre wdExportFormatPDF le faisant automatiquement.
Cela donnera au final :

Sub VersPDF() (ou Sub AutoClose si tu veux l'automatiser à la fermeture)
Dim nfichier As String, intpos As Byte
nfichier = ActiveDocument.Name
intpos = InStrRev(nfichier, ".")
nfichier = Left(nfichier, intpos - 1)
ActiveDocument.ExportAsFixedFormat outputFileName:="C:\Users\Yann\OneDrive\ELEVES SB" & "/" & nfichier, exportFormat:=wdExportFormatPDF
MsgBox "Le fichier PDF est créé." (ligne que tu peux supprimer pour économiser un clic ;-)
End Sub

Est-ce que c'est mieux ?
-1