VBA Excel et Word - Ouverture d'un modèle
David
-
David -
David -
Bonjour,
J'ai un modèle Word (.dotx) que je souhaiterais ouvrir depuis une macro dans Excel. Actuellement ça fonctionne si j'ouvre le document Word (.docx) avec une macro (ci-dessous) faisant référence à des cellules spécifiques. Je que je souhaiterais c'est qu'un document Word (.docx) soit généré à partir de mon modèle Word (.dotx) tant qu'il y a des données dans Excel. Auriez-vous une idée ?
Sub ExcelVersWord()
Dim AppWord As Object
Dim Doc As Object
Dim i As Integer
'crée une instance de Word
Set AppWord = CreateObject("Word.Application")
With AppWord
.Visible = True
'ouvre un document, ATTENTION de mettre l'extension ".doc"
Set Doc = .Documents.Open("C:\XXX\XXX\Portefeuille clients\Lettres d'anniversaire\Anniversaires.docx")
With Doc
.Bookmarks("Titre_destinataire").Range.Text = Range("A2")
.Bookmarks("Nom").Range.Text = Range("C2") & " " & Range("B2")
.Bookmarks("Adresse").Range.Text = Range("D2")
.Bookmarks("Ville").Range.Text = Range("E2")
If Range("A2") = "Monsieur" Then
.Bookmarks("Titre_texte").Range.Text = "Cher " & Range("A2") & " " & Range("B2")
Else
.Bookmarks("Titre_texte").Range.Text = "Chère " & Range("A2") & " " & Range("B2")
End If
End With
End With
End Sub
Merci de votre précieuse aide et sincères salutations.
J'ai un modèle Word (.dotx) que je souhaiterais ouvrir depuis une macro dans Excel. Actuellement ça fonctionne si j'ouvre le document Word (.docx) avec une macro (ci-dessous) faisant référence à des cellules spécifiques. Je que je souhaiterais c'est qu'un document Word (.docx) soit généré à partir de mon modèle Word (.dotx) tant qu'il y a des données dans Excel. Auriez-vous une idée ?
Sub ExcelVersWord()
Dim AppWord As Object
Dim Doc As Object
Dim i As Integer
'crée une instance de Word
Set AppWord = CreateObject("Word.Application")
With AppWord
.Visible = True
'ouvre un document, ATTENTION de mettre l'extension ".doc"
Set Doc = .Documents.Open("C:\XXX\XXX\Portefeuille clients\Lettres d'anniversaire\Anniversaires.docx")
With Doc
.Bookmarks("Titre_destinataire").Range.Text = Range("A2")
.Bookmarks("Nom").Range.Text = Range("C2") & " " & Range("B2")
.Bookmarks("Adresse").Range.Text = Range("D2")
.Bookmarks("Ville").Range.Text = Range("E2")
If Range("A2") = "Monsieur" Then
.Bookmarks("Titre_texte").Range.Text = "Cher " & Range("A2") & " " & Range("B2")
Else
.Bookmarks("Titre_texte").Range.Text = "Chère " & Range("A2") & " " & Range("B2")
End If
End With
End With
End Sub
Merci de votre précieuse aide et sincères salutations.
A voir également:
- VBA Excel et Word - Ouverture d'un modèle
- Word et excel gratuit - Guide
- Modèle organigramme word - Guide
- Word 2013 - Télécharger - Traitement de texte
- Modèle de style word - Guide
- Tableau word - Guide
4 réponses
Re,
Voici le principe avec une boucle (non testée faute de modèle) :
Voici le principe avec une boucle (non testée faute de modèle) :
Option Explicit Sub ExcelVersWord() Dim AppWord As Object Dim Doc As Object Dim rng As Range Set rng = Worksheets("Feuil1").Range("A2:E2") ' Crée une instance de Word Set AppWord = CreateObject("Word.Application") AppWord.Visible = True Do While rng(1, 1).Formula <> "" ' Ouvre un nouveau document non enregistré Set Doc = AppWord.Documents.Add("C:\XXX\XXX\Portefeuille clients\Lettres d'anniversaire\Anniversaires.dotx") With Doc .Bookmarks("Titre_destinataire").Range.Text = rng(1, 1).Value .Bookmarks("Nom").Range.Text = rng(1, 3).Value & " " & rng(1, 2).Value .Bookmarks("Adresse").Range.Text = rng(1, 4).Value .Bookmarks("Ville").Range.Text = rng(1, 5).Value If rng(1, 1).Value = "Monsieur" Then .Bookmarks("Titre_texte").Range.Text = "Cher " & rng(1, 1).Value & " " & rng(1, 2).Value Else .Bookmarks("Titre_texte").Range.Text = "Chère " & rng(1, 1).Value & " " & rng(1, 3).Value End If End With ' Ici il faudrait enregistrer et fermer le doc, ' c'est pas obligatoire pour les essais : les fichiers restent ouverts ' Doc.SaveAs nomCompletFichier ' Doc.Close Set rng = rng.Offset(1) 'ligne suivante Loop End Sub
Bonjour,
Au lieu de Document.Open(Fichier) utiliser Document.Add(modèle)
Au lieu de Document.Open(Fichier) utiliser Document.Add(modèle)
Oserais-je abuser de ta gentillesse et connaissances ? Dans le code que je t'ai montré, je souhaiterais à présent générer une boucle pour que la macro ouvre un nombre de fichiers Word (.docx) en fonction du nombre de ligne visible. Je ne sais pas si je m'explique bien. Actuellement, les données inscrites dans le document Word sont définies manuellement par "range("A2"). J'aimerais que cette boucle fasse pareil mais depuis chaque ligne visible. 1 ligne = un document Word.
Encore merci et belle soirée.
Encore merci et belle soirée.
Encore merci. Le point positif est que ça fonctionne. Le moins positif est que ça prend toutes les lignes (plus de 800). Ce que je souhaiterais c'est que ça prenne que les lignes affichées. En effet, le tableau montre les clients qui ont leur anniversaire aujourd'hui (date du jour). Dans le cas d'aujourd'hui, il y en avait 3 et j'aimerais que les données des cellules de ces trois clients soient insérées dans le document Word (3 fois uniquement).
Bonne soirée et salutations.
Tout fonctionne à la perfection.
Très sympa de ta part. Salutations