"PILOTER" WORD DEPUIS EXCEL - 4ème PARTIE (4/4)
Excel n'est pas adapté pour faire de la mise en page comme avec Word. Pour générer depuis Excel des rapports, des factures, des contrats ou autres documents, j'utilisais jusqu'à présent la méthode de remplissage d'un modèle déjà mis en page (décrite précédemment dans d'autres articles).
Seulement voilà quand on oublie de transmettre le modèle Word avec le fichier Excel, l'export des données vers Word est totalement inopérant!
La solution est de créer de zéro votre document Word depuis Excel. Votre xlsm sera alors complètement autonome.
Mieux qu'un long descriptif, je vous renvoie directement au code commenté de la démo jointe. Dans ce code, diverses opérations sont menées, dans l'ordre :
- création d'un nouveau document
- ajustement des marges
- ajout d'un logo
- ajout d'un titre
- ajout d'un signet (en cas de besoin ultérieur)
- ajout d'un ou de plusieurs paragraphes (selon choix fait sur la feuille Excel)
- ajout d'un saut de page
- ajout d'un tableau
- ajustement des colonnes du tableau
- remplissage de l'entête du tableau
- remplissage (et ajout) des lignes
- calcul d'un total d'une des colonne du tableau
- inscription du total calculé à la dernière ligne du tableau
- ajout de la date et de l'heure de la création du document
- enregistrement du document dans "Mes Documents" sous-dossier "Word" (qui se crée si besoin)
A chacune de ces opérations, on règle la police, le soulignement, l'alignement, l'espacement, ... bref on fait la mise en page qui rendra votre doc parfaitement lisible.
Ceci n'est pas exhaustif des possibilités offertes par le VBA, pour d'autres fonctions dites-moi votre besoin et je vous indiquerai le code à ajouter.
Cette démo est fonctionnelle avec Office 2016 (pas testée avec d'autres versions)
Bon téléchargement et laissez-moi vos commentaires!
Pierre
Téléchargement de : Créer_Doc_Word.xlsm
Téléchargement de : Créer_Doc_Word_20avril21.xlsm
Téléchargement de : Créer_Doc_Word_21avril21.xlsm
Téléchargement de : Démo_modif_tableau_3mai2021.xlsm
* Edit du 03/05/2021 : Pour répondre à Floflo, voici une démo de modification/création d'un tableau dans un doc
* Edit du 21/04/2021 : Pour répondre à Lilie, voici une démo pour positionner l'adresse au mieux dans une zone de texte
* Edit du 20/04/2021 : Pour répondre à Lilie, voici une démo pour positionner des images au mieux + diverses méthodes
* Edit du 02/06/2018 : Pour répondre à l'idée de 78Chris, voici du code pour appliquer un style pour permettre l'utilisation ultérieure de sommaire, en-têtes dynamiques, renvois, ...
La deuxième partie du code formate le style et n'est donc à écrire qu'une seule fois dans le code complet
' Ajoute un titre UTILISANT UN "STYLE"
.Paragraphs.Add
With .Paragraphs(.Paragraphs.Count - 1).Range
.Text = "2ème TITRE DU DOCUMENT AVEC STYLE"
.Style = "Titre 1"
.InsertParagraphAfter()
' Formatage du style "Titre 1" pour utilisation ultérieure
.Style.Font.Bold = True
.Style.Font.Underline = True
.Style.Font.Color = RGB(150, 150, 150)
.Style.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
Code à placer dans le bloc With WordDoc de la démo
* Ajout du 23/12/2020 : Pour répondre à la question de Dhardy : pour formater une partie de texte contenu dans un paragraphe ou dans une cellule d'un tableau word, on ajoute une procédure du genre "Formatage" comme ci-dessous avec les paramètres souhaités (couleur, taille, ...) et à chaque remplissage d'un paragraphe (ou d'une des cellules) on fait un appel du genre :
.cell(lig, col).Range.Text = LeTexteKiVaBien
Formatage WordDoc, "o" ' pour formater le 'o' et/ou
Formatage WordDoc, "2" ' pour formater le '2' contenu dans LeTexteKiVaBien
Sub Formatage(Wd As Object, S As String)
With Wd.Content.Find
.Text = S
.Forward = False
.Execute
If .Found = True Then
.Parent.Font.Name = "Arial"
.Parent.Font.Size = 14
.Parent.Font.Color = RGB(255, 0, 0) ' rouge
.Parent.Font.Bold = True ' en gras
.Parent.Underline = 1 ' wdUnderlineSingle
End If
End With
End Sub