VBA : mis en forme du texte avant ecriture dans word

[Vba : mis en forme du texte avant ecriture dans word]

Bonjour,

novice en vba (depuis hier), voici ma question et son contexte.

je veux générer un rapport Word à partir d’un tableau excel, et ne parviens pas à mettre en forme le texte qui sera dans le fichier word.

Le tableau est du type

A | B | C

blabla | 224 | aaa38

blibli | 236 | bbb37

La sortie attendue est sous word :

(page1)

A

Blabla

B

224

C

Aaa38

(page2)

A

Blibli

B

236

C

Bbb37

Mon souci est la mise en forme des ‘A’, ‘B’ et ‘C’. Comment faire pour que ceux-ci soient en gras + bleu + centré ?

ci-dessous mon code actuel (qui nécessite d’ailleurs peut-être un peu d’optimisation).

Sub TestEcrireTemplate()

Dim MonWord As Object

Set MonWord = CreateObject("Word.Application")

' Création d'un nouveau document :

MonWord.Documents.Add

' Ecriture du texte dans ce nouveau document :

Dim nLine As Integer

Dim nColumn As Integer

Dim strValueTitle As String

Dim strValueSpecificProject As String

Dim nMaxLine As Integer

Dim nMaxColumn As Integer

'A MODIFIER PAR UN COUNT

nMaxLine = 3

nMaxColumn = 4

For nLine = 2 To nMaxLine

For nColumn = 1 To nMaxColumn

'read the value from the cell

strValueTitle = Cells(1, nColumn)

'Format the value

'write the value to the document

MonWord.Selection.TypeText Text:=strValueTitle

' ICI : MISE EN FORME QUI NE FONCTIONNE PAS

'With Text

' .Font.Bold = True

'End With

'move to the next line

MonWord.Selection.TypeParagraph

'read the value from the cell

strValueSpecificProject = Cells(nLine, nColumn)

'write the value to the document

MonWord.Selection.TypeText Text:=strValueSpecificProject

'move to the next line

MonWord.Selection.TypeParagraph

Next nColumn

'move to next page

MonWord.Selection.InsertBreak

Next nLine

' Sauvegarde de ce document ainsi créé :

MonWord.ActiveDocument.SaveAs "~\test.doc"

' Fermeture de ce document :

MonWord.ActiveDocument.Close

Set MonWord = Nothing

End Sub

Merci de votre aide !

Pierre

Bonjour,

Je pense que le plus simple est de faire ta mise en forme directement sur ton Word, car je ne pense pas que tu puisse modifié la mise en page d'un document word avec une macro excel ( vu que c'est pas vraiment le même VB...),

Tu peux peut etre utilisé les signet sous word et tu envoie ton information dessus du style

With ActiveDocument
        .Bookmarks("Lieu").Select
        .Bookmarks("Lieu").Range.Text = t
        .Bookmarks("Tableau").Range.Paste
        .PrintOut
        .Close DoNotSaveChanges
        End With

avec ton Word ouvert tu sélectionne ton signet ici" Lieu "et "Tableau" et tu peux faire une mise en forme spécifique sur ton signet directement dans ton modèle Word.

merci de votre réponse.

j'avais effectivement vu cette possibilité de le faire avec Word, mais ce tableau est destiné a être partagé entre plusieurs collègues.

et c'est pour ça que j'aurai aimé qu'à partir du classeur et d'un bouton ("exporter sous format word"), chacun puisse générer ce fichier word. Sans enregistrer le word, mais au moins l'ouvrir.

C'est donc pour cela que j’espérais faire tout depuis excel.

Pierre

Bonjour,

Pour ce type de besoin, j'ai écrit une démo de création d'un .doc depuis excel avec tableaux, mise en page, mise en forme, sauvegarde, etc ...

La démo avec explications est disponible ici =>

http://tatiak.canalblog.com/archives/2017/04/04/35132611.html

Le code est commenté.

Pierre

Pierrep56,

merci. Démo très utile.

je suis presque parvenu à faire tout de dont j'avais besoin, sauf un élément: l'insertion d'un saut de page entre 2 paragraphes.

auriez-vous une piste à me donner ?

Merci,

Pierre

Bonjour,

Il me semble qu'il suffit d'insérer au bon endroit le caractère Chr$(13)

c'est le code ascii du ^m pour un saut de page manuel

(il faudrait l'insérer juste avant le début du 2ème paragraphe)


Autre possibilité (à la place d'un saut de page manuel) :

screen

mais pour faire ça en VBA, j'laisse à un autre intervenant le soin de t'l'indiquer.

dhany

Bonjour à tous,

@Pierre4forums : pour passer une ligne voir dans la démo c'est indiqué, il suffit d'ajouter une ligne :

.Paragraphs.Add ' passe une ligne

Pierre

Bonjour pierrep56,

ce que tu as indiqué est pour ajouter un paragraphe, c'est pas pour ajouter un saut de page entre deux paragraphes ! or le demandeur pierre4forums a bien écrit dans son message de 17:07 : « je suis presque parvenu à faire tout ce dont j'avais besoin, sauf un élément : l'insertion d'un saut de page entre 2 paragraphes. »

dhany

@dhany =>oups désolé, au temps pour moi, lu trop vite.

Pour un saut de page c'est :

.Paragraphs(.Paragraphs.Count - 1).Range.InsertBreak Type:=7

7 est la valeur de la constante Word wdPageBreak

Bon week-end à tous

@pierrep56

oui, j'crois qu'c'est mieux ! bon weekend à toi aussi

dhany

Mise à jour de la démo pour intégrer un ajout de saut de page

=> http://tatiak.canalblog.com/archives/2017/04/04/35132611.html

Salut Tatiak

Je pense qu'il pourrait être intéressant d'ajouter l'application d'un style de paragraphe (Titre 1 par exemple) plutôt que le formatage basique qui ne permet pas d'utiliser tout ce qui découle des styles : sommaire, en-têtes dynamiques, renvois...

Et dans la foulée le paramétrage du format du style...

Bonjour 78Chris

En effet c'est une idée pertinente.

Pour appliquer un style c'est assez simple, voir code ci-après.

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 = "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

Pierre

merci à vous, je suis arrivé à bout de mon code, je reviens vers vous au prochain épisode.

le formatage texte étant clos, je veux maintenant insérer des graphs radars avec les séries à afficher sélectionnées par utilisateurs (vive le reporting).

j'ouvrirai un nouveau fil si j'ai des questions/commetnaires

Merci !

Pierre

Rechercher des sujets similaires à "vba mis forme texte ecriture word"