Bonjour à tous,
Je viens vers vous car je lutte un peu avec VBA pour faire quelque chose de correct.
Mon besoin actuelle est de générer à partir d'un tableau Excel, en sélectionnant une ligne, divers documents (pour le moment un Word et un mail) qui reprennent les données de cette ligne.
J'ai déjà pu finaliser le besoin sur la partie MAIL, où la gestion des couleurs est très simple quand on injecte du HTML dans HTMLBody.
Cependant j'ai énormément de mal côté WORD à trouver une fonction simple me permettant d'injecter mon texte avec la couleur souhaité...
Voici le code :
Mon problème est donc de mettre par exemple en rouge le signet qui correspond à la ligne :
J'ai eu beau tester des trucs du style .bookmarks().Range.Font.Color = wdred ou des trucs dans ce style vu à droite à gauche, rien à faire 😕
Le test pour déterminer la couleur, j'en fais mon affaire, un petit if ou un switch et ça ira
Mais la fonction de changement de couleur ça veut pas
(et l'interface VB d'Excel est pas franchement cool à pas donner en automatique les fonctions associés en auto implémentation)
Si l'un de vous peut m'aider... merci par avance
Je viens vers vous car je lutte un peu avec VBA pour faire quelque chose de correct.
Mon besoin actuelle est de générer à partir d'un tableau Excel, en sélectionnant une ligne, divers documents (pour le moment un Word et un mail) qui reprennent les données de cette ligne.
J'ai déjà pu finaliser le besoin sur la partie MAIL, où la gestion des couleurs est très simple quand on injecte du HTML dans HTMLBody.
Cependant j'ai énormément de mal côté WORD à trouver une fonction simple me permettant d'injecter mon texte avec la couleur souhaité...
Voici le code :
Sub Creation_Word()
'# # # # # # # # OUVERTURE DU DOCUMENT # # # # # # # # # #
'Ouverture de l'application word
Set appwd = CreateObject("word.application")
'ouverture du fichier type, basé sur le nom de fichier de l'onglet Paramétrage (cellule appelé "fichier")
Set doc = appwd.documents.Open(ThisWorkbook.Path & "\" & ThisWorkbook.Names("fichier").RefersToRange)
'# # # # # # # # ENCAPSULATION DONNÉES EXCEL DANS VARIABLES VBA # # # # # # # # # #
Titre_Sujet = Sheets("Mon_Onglet").Cells(ActiveCell.Row, 1) 'Libellé du sujet (Colonne 1)
OK_KO = Sheets("Mon_Onglet").Cells(ActiveCell.Row, 2) 'Date de Fin du sujet (Colonne 2)
'etc...
'# # # # # # # # AJOUT DES DONNÉES DANS LES SIGNETS WORD # # # # # # # # # #
'Ajout des données dans les Signets Word correspondants --> doc.bookmarks([Libellé_Signet]).Range = XXX
doc.Bookmarks("Signet_Titre").Range = Titre_Sujet
doc.Bookmarks("Signet_OK_KO").Range = OK_KO
'etc...
'# # # # # # # # OUVERTURE DU DOCUMENT # # # # # # # # # #
'Enregistrer Sous
fileSaveWordName = Application.GetSaveAsFilename(InitialFileName:=Nom_Document, fileFilter:="Word Files (*.doc), *.doc")
With appwd
If fileSaveWordName <> False Then
.ActiveDocument.SaveAs Filename:=fileSaveWordName
.ActiveDocument.Close
MsgBox "Document bien enregistré dans le dossier spécifié"
Else ' Ferme le document sans enregistrement
.ActiveDocument.Close wdDoNotSaveChanges
End If ' Quitte l'application
.Quit
End With
Set appwd = Nothing
End Sub
Mon problème est donc de mettre par exemple en rouge le signet qui correspond à la ligne :
Code:
doc.Bookmarks("Signet_OK_KO").Range = OK_KO
J'ai eu beau tester des trucs du style .bookmarks().Range.Font.Color = wdred ou des trucs dans ce style vu à droite à gauche, rien à faire 😕
Le test pour déterminer la couleur, j'en fais mon affaire, un petit if ou un switch et ça ira
Mais la fonction de changement de couleur ça veut pas
(et l'interface VB d'Excel est pas franchement cool à pas donner en automatique les fonctions associés en auto implémentation)
Si l'un de vous peut m'aider... merci par avance