Macro pour Doc Word En tête

rjcb

XLDnaute Occasionnel
Bonjour,

J'ai une petite question, Est il possible de modifier l'entête d'un doc word pour modifier l'auteur et la date.

Voici pour l'instant ma fonction:

Code:
Sub ExportWord()
     
    If k > 12 Then
    Dim wdApp As Object
    Dim wd As Object
   
    On Error Resume Next
    Set wdApp = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
        Set wdApp = CreateObject("Word.Application")
    End If
    On Error GoTo 0
     
    Set wd = wdApp.Documents.Open("V:\PRBT_Received\PRBT_EN.doc")
    wdApp.Visible = True
    Sheets("Macro").Range("A2:B" & k - 1).Copy
    wd.Range.Paste
    wd.SaveAs ("V:\PRBT_Received\" & Range("B1").Value)
   
    'wdApp.ActivePrinter = "PDFCreator"
    'wdApp.PrintOut
    'wdApp.Quit
    
    Set wdApp = Nothing
    Set wd = Nothing
    End If
    
End Sub

Mais je ne vois pas comment rentrer dans l'entête du document

Merci a vous
 

STephane

XLDnaute Occasionnel
Re : Macro pour Doc Word En tête

deux macros à lancer dans word pour t'aider
la première modifie l'auteur.
la seconde inscrit la liste des propriétés "Built In" (internes) et leur valeur.

Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 25/07/2008 par Steph
'
ActiveDocument.BuiltInDocumentProperties("Author") = "toto"
End Sub
Sub ListProperties()
Dim rngDoc As Range
Dim proDoc As DocumentProperty
Set rngDoc = ActiveDocument.Content
rngDoc.Collapse Direction:=wdCollapseEnd
For Each proDoc In ActiveDocument.BuiltInDocumentProperties
With rngDoc
.InsertParagraphAfter
.InsertAfter proDoc.Name & "= "
On Error Resume Next
.InsertAfter proDoc.Value
End With
Next
End Sub
 

rjcb

XLDnaute Occasionnel
Re : Macro pour Doc Word En tête

Donc si je comprend bien je colle cette macro dans le vb pour word.

Ma question, comment faire le lien entre macro xls et word, pour que dans le fichier xls il inscrive son nom et celui ci soit remis dans la macro pour word.

Merci
 

MichelXld

XLDnaute Barbatruc
Re : Macro pour Doc Word En tête

bonjour

je n'ai pas compris tout a fait la meme chose.
j'ai interprété (peut etre à tort) que tu cherchais une procedure pour insérer le champ Auteur dans l'entete d'un document Word :


Code:
Sub EnteteEtPiedDePageWord()
'necessite d'activer la reference
    'microsoft Word xx.x Object Library
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim Fichier As String
Fichier = "C:\dossier\nomdocument.doc"
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open(Fichier)

'Ajoute champ "Auteur dans l'en-tete
WordDoc.Fields.Add Range:=WordDoc.Sections(1). _
    Headers(wdHeaderFooterPrimary).Range, Type:=wdFieldEmpty, Text:= _
    "AUTHOR  ", PreserveFormatting:=True
With WordDoc.Sections(1)
    'en-tete
    .Headers(wdHeaderFooterPrimary).Range.Paragraphs. _
        Alignment = wdAlignParagraphCenter
    'pied de page
    .Footers(wdHeaderFooterPrimary).PageNumbers.Add
End With
End Sub


bon week end
michel
 

rjcb

XLDnaute Occasionnel
Re : Macro pour Doc Word En tête

Bonjour tout le monde!

En effet Michel tu as bien compris mon besoin.

Voici où j'en suis:

Code:
Sub ExportWord()
     
    If k > 12 Then
    Dim wdApp As Object
    Dim wd As Object
   
    On Error Resume Next
    Set wdApp = GetObject(, "Word.Application")
    If Err.Number <> 0 Then
        Set wdApp = CreateObject("Word.Application")
    End If
    On Error GoTo 0
     
    Set wd = wdApp.Documents.Open("V:\PRBT_Received\PRBT_EN.doc")
    wdApp.Visible = True
    Sheets("Macro_EN").Range("A1:B" & k - 1).Copy
    wd.Range.Paste
    
     'Ajoute champ "Auteur dans l'en-tete
    WordDoc.Fields.Add Range:=WordDoc.Sections(1). _
    Headers(wdHeaderFooterPrimary).Range, Type:=wdFieldEmpty, Text:= _
    "AUTHOR  ", PreserveFormatting:=True
    With WordDoc.Sections(1)
    'en-tete
    .Headers(wdHeaderFooterPrimary).Range.Paragraphs. _
        Alignment = wdAlignParagraphCenter
    'pied de page
    .Footers(wdHeaderFooterPrimary).PageNumbers.Add
    End With
    
    wd.SaveAs ("V:\PRBT_Received\" & Range("B9").Value)

    Set wdApp = Nothing
    Set wd = Nothing
    End If
    Application.CutCopyMode = False
End Sub

Ceci me fais bien mon doc word mais bug au niveau de ces 3 lignes:

Code:
    WordDoc.Fields.Add Range:=WordDoc.Sections(1). _
    Headers(wdHeaderFooterPrimary).Range, Type:=wdFieldEmpty, Text:= _
    "AUTHOR  ", PreserveFormatting:=True

Par contre dans reference, je n'ai pas le microsoft Word xx.x Object Library

J'ai juste microsoft office 11 object library.

Merci a vous
 

MichelXld

XLDnaute Barbatruc
Re : Macro pour Doc Word En tête

bonjour


Par contre dans reference, je n'ai pas le microsoft Word xx.x Object Library
J'ai juste microsoft office 11 object library.

Vérifie une nouvelle fois ...



sinon, une adaptation en remplaçant les constantes par leur valeur :
Code:
Sub EnteteEtPiedDePageWord()
Dim WordApp As Object
Dim WordDoc As Object
Dim Fichier As String

Fichier = "C:\dossier\fichier.doc"

Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WordDoc = WordApp.Documents.Open(Fichier)

'Ajoute champ "Auteur dans l'en-tete
WordDoc.Fields.Add Range:=WordDoc.Sections(1). _
    Headers(1).Range, Type:=-1, Text:= _
    "AUTHOR  ", PreserveFormatting:=True

With WordDoc.Sections(1)
    'en-tete
    .Headers(1).Range.Paragraphs. _
        Alignment = 1
    'pied de page
    .Footers(1).PageNumbers.Add
End With
End Sub


bonne journée
michel
 

rjcb

XLDnaute Occasionnel
Re : Macro pour Doc Word En tête

Salut Michel,

Bon je viens de re vérifier et je n'est pas la trace de cette référence.

Je viens de re tester avec ton code et ca bloque toujours au même endroit.

Code:
WordDoc.Fields.Add Range:=WordDoc.Sections(1). _
    Headers(1).Range, Type:=-1, Text:= _
    "AUTHOR  ", PreserveFormatting:=True

Il me dit:

Erreur d'exécution 91:

Variable objet ou variable de bloc with non définie

@+ ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 584
Messages
2 089 965
Membres
104 319
dernier inscrit
J-LZ