Sauvegarder un document word utilisant des macros via vba excel

Résolu/Fermé
Coloc52 Messages postés 9 Date d'inscription mercredi 29 juillet 2020 Statut Membre Dernière intervention 5 mars 2022 - 29 juil. 2020 à 22:30
Coloc52 Messages postés 9 Date d'inscription mercredi 29 juillet 2020 Statut Membre Dernière intervention 5 mars 2022 - 30 juil. 2020 à 23:47
Bonjour,

Je travaille avec word et excel depuis des années et je n'ai aucun soucis pour créer des documents. Ma seule grande lacune, c'est la programmation VBA. Je m'en sers au besoin mais je n'ai jamais eu le temps ni de suivre une formation, ni d'essayer de comprendre seule son fonctionnement.J'arrive cependant à certains résultats grâce à des recherches sur internet mais là je bloque.


Je suis en charge de créer un contrat de location de salle des fêtes dans ma commune mais les personnes qui vont l'utiliser ne connaissent absolument rien à l'informatique.

Il faut donc que je construise des documents très facile d'utilisation pour eux mais avec en bout de course un document nickel à faire signer au locataire.

Aussi, pour leur faciliter la tâche, j'ai créé un genre de formulaire sous Excel avec des cases à options, des cellules à remplir et des cases à cocher. Le document est protégé et ils ne pourront pas aller ailleurs que dans les cellules à remplir. Il est créé sous le format modèle excel acceptant les macros

Pour le formulaire sous excel, j'ai réussi toute la programmation VBA, peut-être pas dans les règles de l'art mais quand ils cocheront une case à option, l'opération qui en découle fonctionne. (Par exemple, si c'est une personne physique, je fais afficher une zone à remplir, si c'est une association, c'est une autre zone qui s'affiche). Dans une partie à droite de mon classeur qui est masqué à l'utilisateur, j'ai mis en place des cellules avec des fonctions qui me permettent d'avoir les différentes informations dont je vais avoir besoin pour le document final (nom du locataire, n° assurance, date de location, etc. j'ai comme cela une bonne quantité de données nécessaires). A chaque cellule j'ai défini un nom comme "nom", "prénom", "adresse", etc.

En bas de mon formulaire j'ai un bouton, quand ils auront fini de remplir le formulaire, ils cliquent dessus.
Plusieurs opérations doivent alors se dérouler :
1 - sauvegarder mon document excel sous le format standard acceptant les macros (afin de pouvoir revenir dessus et utiliser les macros en cas de changement). Le nom du document est calculé par une formule dans une cellule : dateinversée_nomlocataire (200729_toto)
2 - ouvrir un document word qui est également créé sous le format modèle word acceptant les macros car je devrais leur mettre un bouton permettant de sauvegarder le document et lancer l'impression.
3 - sauvegarder immédiatement ce document word mais sous le format standard acceptant les macros en utilisant le même nom que pour le fichier excel
4 - exporter les données qui sont dans mes cellules excel à l'intérieur de mon document word, sachant que j'ai créé des signets pour toutes les zones à remplir portant les mêmes noms que les cellules excel.

Toutes ses opérations se font normalement dans les modèles VBA de mon excel.
Pour les points 1 et 2, j'ai réussi à programmer et ça fonctionne.
Je bloque totalement pour le point 3, j'ai vu plein de chose sur internet mais rien ne fonctionne.
Pour le point 4, je n'arrive pas à comprendre ce qu'il faut que je fasse.

Mes questions sont donc :

Comment sauvegarder en VBA à partir d'excel, un document word acceptant les macros ?

Comment on programme l'exportation d'excel vers word (par exemple je veux exporter la cellule "Nom" de mon document excel vers le signé "Nom" de mon document word ?

Je suis preneuse de toute aide

Voici ma programmation pour les points 1 et 2 :

Private Sub Lancementcontrat_Click()

'enregistrement du fichier excel en format standard acceptant les macros

Dim extension1 As String
Dim chemin1 As String
Dim nomfichier1 As String

extension1 = ".xlsm"
chemin1 = "C:\Mairie\"
nomfichier1 = ActiveSheet.Range("A20") & extension


With ActiveWorkbook

.SaveAs Filename:=chemin & nomfichier1, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

End With

'ouverture du fichier word en partant d'un modèle acceptant les macros

Dim WordObj As Object, Doc As Object
Dim chemin2 As String
Dim nomfichier2 As String

chemin2 = "C:\Mairie\"
nomfichier2 = "Contrat.dotm"


Set WordObj = CreateObject("Word.Application")
WordObj.Visible = True
Set Doc = WordObj.Documents.Add(Template:=chemin2 & nomfichier2, NewTemplate:=False, DocumentType:=0)

End Sub



Configuration: Windows 10 / Firefox 78.0 / Office 2016
A voir également:

3 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 778
29 juil. 2020 à 23:10
Bonjour et bienvenue sur le Forum,

Piloter Word, c'est pas mon hobby ....
Mais tu devrais trouver ce que tu cherches ici :
https://www.excel-downloads.com/threads/ref-wiki-3-de-michelxld-piloter-dautres-applications-depuis-excel.92359/

Ceci dit, je pense que tu pourrais tout faire depuis Excel (ouvrir un doc Word d'après un modèle .dotx, mettre à jour ce document, l'imprimer et l'enregistrer).
Il n'y aurait pas besoin de macros dans le fichier Word
0
Coloc52 Messages postés 9 Date d'inscription mercredi 29 juillet 2020 Statut Membre Dernière intervention 5 mars 2022
29 juil. 2020 à 23:16
Merci Patrice

Je vais aller voir.

Pour ce qui est de mettre une macro sur word, c'est toujours une question de simplifier le travail des utilisateurs.
Une fois que le document word va être mis à jour, il va s'ouvrir pour que le locataire comme la personne de la mairie puissent vérifier que c'est bon.
Je ne veux pas leur faire faire une manipulation pour retourner sur excel pour imprimer puisqu'ils seront alors sous word. D'où l'utilité d'une macro sous word, mais là ce ne m'inquiète pas, j'ai déjà fait.

Je regarde ton lien et si ça me va je reviens ici le dire
Corinne
0
Coloc52 Messages postés 9 Date d'inscription mercredi 29 juillet 2020 Statut Membre Dernière intervention 5 mars 2022
30 juil. 2020 à 23:47
Finalement je vais faire totalement différemment
Merci de m'avoir lu
Corinne
0