Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/11/2011, 15h26   #1
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 2
Points : 2
Par défaut Modification d'un header sur tout un document

Bonjour à tous et à toutes.

Commençant tout juste le VBA, je suis venu de nombreuses fois consulter votre forum et jusqu'à présent, j'ai toujours trouvé une solution aux problèmes que je rencontrais.

J'explique le contexte de mon problème actuel.

Je possède un modèle "template" qui possède un header et un footer.
En fichier annexe, je possède un autre document, appelons-le "source".

Le but de ma macro est de copier le contenu du fichier source (qui possède ses styles, ses polices, ...) et d'adapter ce contenu au fichier template (donc remplacement des titres Heading 1, espacement des lignes, ...)

Jusque là tout allait bien, jusqu'à ce que je me heurte aux header/footer.

J'ai essayé plusieurs types de code, jusqu'à celui là
Code :
1
2
3
4
5
6
7
 
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
 
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
    "DOCVARIABLE tata ", PreserveFormatting:=False
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
    "DOCVARIABLE toto ", PreserveFormatting:=False
J'essaye que mes 2 fields soient sur la meme ligne; l'un a l'extrémité gauche, l'autre a l'extrémité droite.

Je suis un peu perdu pour le moment.
Je vous remercie d'avance pour vos réponses et je me tiens à disposition pour répondre à vos questions.

Pat
sugarcoma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/11/2011, 13h55   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
Salut,

On accède aux entête et pieds de page d'un document avec :

Code :
activedocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text
Tu peux passer par une sélection pour ajouter ton texte.

Code :
activedocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Select
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 08h34   #3
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 2
Points : 2
Salut,

Merci d'avoir répondu rapidement.

Ta solution me permet d'accéder au contenu du header; j'avais déjà essayé ça, et celà ne correspond pas à ce que j'aimerai obtenir, à savoir des Fields.

Ainsi, pour un exemple
Code :
1
2
3
4
5
 
WordDestination.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = "DOCVARIABLE toto"
 
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
    "DOCVARIABLE toto", PreserveFormatting:=False
La 2e ligne va m'ajouter en tant que Field, donc sous la forme {DOCVARIABLE toto}; la 1ere ne me met pas les accolades, et mon Field n'est pas exploitable par la suite.

Je tourne en rond depuis plus d'un jour à essayer de trouver une solution.

Cordialement,
sugarcoma est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 10h50   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 333
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 333
Points : 29 239
Points : 29 239
Salut,

Le premier code n'ajoute que du texte.

"Objet.Text" ne fera jamais rien d'autre.

Par contre, avec une sélection, tu peux ajouter ton champ.

Code :
1
2
activedocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Select
Selection.Fields.Add ...
En faisant un Collapse de la selection vers la fin, on peut ajouter du texte ou autre chose.

Code :
1
2
3
4
5
6
7
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Select
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="Date"
Selection.Collapse Direction:=wdCollapseEnd
Selection.TypeText "    Mon Texte    "
Selection.Collapse Direction:=wdCollapseEnd
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="Date"
ActiveDocument.StoryRanges(wdMainTextStory).Select
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/11/2011, 11h50   #5
Invité de passage
 
Inscription : janvier 2009
Messages : 6
Détails du profil
Informations forums :
Inscription : janvier 2009
Messages : 6
Points : 2
Points : 2
Merci beaucoup, ça fonctionne!

C'est le Collapse qui me manquait avec la Selection..

Bonne journée et bonne continuation.
sugarcoma est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h10.


 
 
 
 
Partenaires

Hébergement Web