Vba word - intégration d'en tete et pied de page dynamique

cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010 - 27 mai 2010 à 16:11
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010 - 1 juin 2010 à 10:01
Bonjour à tous,
Pour un modèle de doc sous word, j'insère une en tête et pied de page grâce à cela :
'Traitement page 1/1
With ActiveDocument.Sections(1)
.Headers(wdHeaderFooterPrimary).Range.InsertFile "S:\Secrétariat\Banque de donnée\entete 1page.doc"
.Footers(wdHeaderFooterPrimary).Range.InsertFile "S:\Secrétariat\Banque de donnée\pied1 2pages.doc"
End With

Le problème c'est que cela marche bien quand il y a qu'une page mais quand mon futur courrier sera sur deux pages, je voudrais que sur la deuxième page il n'y ait rien comme en tête et en pied de page un autre pied de page différent de celui de la première page. Je ne connais aucune syntaxe en vba word alors je vous demande de l'aide. Merci.

15 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
31 mai 2010 à 11:54
Salut,



' Activation du pied de page
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter


Et comme il faut tout te dire, dans ton code cela devrait donner cela:

'on vas à la section qui nous interesses
Selection.GoTo wdGoToSection, , , 2
' Activation du pied de page
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
If Selection.HeaderFooter.LinkToPrevious = True Then
    Selection.HeaderFooter.LinkToPrevious = False 'pour casser le lien avec la page précédente
End If

'on retourne à la section qui nous interesses pour desactiver le pied de page
Selection.GoTo wdGoToSection, , , 2

'Traitement page2/2
With ActiveDocument.Sections(2)
    .Headers(wdHeaderFooterEvenPages).Range.InsertFile "S:\Secrétariat\Banque de donnée\entete2 2pages.doc"
    .Footers(wdHeaderFooterEvenPages).Range.InsertFile "S:\Secrétariat\Banque de donnée\pied2 2pages.doc"
End With


J'ai pas testé

A+
1
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
27 mai 2010 à 17:58
Bonjour
les entetes et pieds de pages peuvent être différents sur des sections différentes
Donc commencer par Insérer un saut de section continue.
0
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010
28 mai 2010 à 09:24
Ok d'accord mais comment fait-on pour faire un saut de ligne ? Merci
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
28 mai 2010 à 09:39
bonjour

Tu aurais pu te débrouiller avec l'enregistreur de macro de Word que je n'avais pas hier

Nécessite Saut de section continue : pas un saut de ligne

Selection.InsertBreak Type:=wdSectionBreakContinuous
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010
28 mai 2010 à 09:59
Ok daccord mais je n'arrive pas a insérer une autre en tête et pied de page pour ma seconde page, ce sont les mêmes que la première page !
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
28 mai 2010 à 10:15
Salut,

je suis completement d'accord avec le fait qu'il faut utiliser un saut de section , par contre je suis moins d'accord avec le type de saut de section proposé par loulou69 .

Les sauts de section continus posent beaucoup de problèmes dans les cas suivants :

* difficulté de mise en page si:
- orientation différente de la page suivante, les entête et pied de page ne peuvent avoir une mise en page différente.
- format diffèrent de la page suivante, les entête et pied de page ne peuvent avoir une mise en page différente.
- on se trouve en milieu d'un tableau (tableau sur plusieurs pages), les entête et pied de page disparaissent sur les pages suivantes.
- on se trouve au milieu d'un sommaire (sommaire sur plusieurs pages)les entête et pied de page disparaissent sur les pages suivantes.

pour eviter ces difficultées il est préférable d'utiliser le saut de section (page suivante)

Selection.InsertBreak Type:=wdSectionBreakNextPage

A+
0
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010
28 mai 2010 à 11:27
J'ai un autre problème maintenant, tout marche niquel sauf que sur ma deuxieme page, j'ai les mêmes en tete et pied de page alors que ce n'est pas ce que j'ai écris :
'Insertion en tête et pied de page (Page1)
With ActiveDocument.Sections(1)
.Headers(wdHeaderFooterPrimary).Range.InsertFile "S:\Secrétariat\Banque de donnée\entete 1page.doc"
.Footers(wdHeaderFooterPrimary).Range.InsertFile "S:\Secrétariat\Banque de donnée\pied1 2pages.doc"
End With

'Curseur position début de courrier
 Selection.MoveDown Unit:=wdScreen, Count:=1

'Saut de section
Selection.InsertBreak Type:=wdSectionBreakNextPage

'Traitement page2/2
With ActiveDocument.Sections(2)
.Headers(wdHeaderFooterEvenPages).Range.InsertFile "S:\Secrétariat\Banque de donnée\entete2 2pages.doc"
.Footers(wdHeaderFooterEvenPages).Range.InsertFile "S:\Secrétariat\Banque de donnée\pied2 2pages.doc"
End With
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
28 mai 2010 à 11:59
Salut,

oui j'aurai du te donner l'info dans mon précédent message

'Traitement page2/2
With ActiveDocument.Sections(2)
    If Selection.HeaderFooter.LinkToPrevious = True Then
        Selection.HeaderFooter.LinkToPrevious = False 'pour casser le lien avec la page précédente
    End If
    .Headers(wdHeaderFooterEvenPages).Range.InsertFile "S:\Secrétariat\Banque de donnée\entete2 2pages.doc"
    .Footers(wdHeaderFooterEvenPages).Range.InsertFile "S:\Secrétariat\Banque de donnée\pied2 2pages.doc"
End With


A+
0
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010
28 mai 2010 à 12:11
Erreur d'execution 91
variable objet ou variable de bloc with non défnie.
Il me met en surbrillance cela :
 If Selection.HeaderFooter.LinkToPrevious = True Then
0
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010
31 mai 2010 à 09:16
Personne pour m'aider s'il vous plait ? Merci par avance !
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
31 mai 2010 à 09:22
Bonjour

Je viens de tester
ne fonctionne que si on est positionné dans une entéte ou un pied de page
0
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010
31 mai 2010 à 10:38
Daccord, et quel code je dois mettre pour que cela fonctionne ? Merci
0
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010
31 mai 2010 à 12:32
Merci pour ce bout de code mais cela ne me fait pas d'erreur mais j'ai les mêmes en tête et pied de page, donc cela ne vas pas. Je vais essayer de trouver l'erreur mais si vous avez une solution , merci de me la précisé.

PS : je demande beaucoup de code oui car j'ai peu de syntaxe vba word, et je suis débutant en vba word. Merci de votre compréhension !
0
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010
31 mai 2010 à 16:40
Voilà ce que j'ai essayé mais cela ne change rien, les deux en tête et pied de page sont toujours les mêmes !!
Private Sub Document_Open()

'Insertion en tête et pied de page (Page1)
With ActiveDocument.Sections(1)
.Headers(wdHeaderFooterPrimary).Range.InsertFile "S:\Secrétariat\Banque de donnée\entete 1page.doc"
.Footers(wdHeaderFooterPrimary).Range.InsertFile "S:\Secrétariat\Banque de donnée\pied1 2pages.doc"
End With

'Curseur position début de courrier
Selection.MoveDown Unit:=wdScreen, Count:=1

'Saut de section
Selection.InsertBreak Type:=wdSectionBreakNextPage

'Traitement page2/2
    'on vas à la section qui nous interesses
Selection.GoTo wdGoToSection, , , 2

' Activation du pied de page
ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
    
    'Se mettre en début d'en tete 2
    If Selection.HeaderFooter.IsHeader = True Then
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
    Else
        ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageHeader
    End If

'Suppression des liens en en tete
Selection.HeaderFooter.LinkToPrevious = Not Selection.HeaderFooter. _
        LinkToPrevious
'If Selection.HeaderFooter.LinkToPrevious = True Then
'    Selection.HeaderFooter.LinkToPrevious = False 'pour casser le lien avec la page précédente
'End If

'on retourne à la section qui nous interesses pour desactiver le pied de page
Selection.GoTo wdGoToSection, , , 2


'Traitement page2/2
With ActiveDocument.Sections(2)
    .Headers(wdHeaderFooterEvenPages).Range.InsertFile "S:\Secrétariat\Banque de donnée\entete2 2pages.doc"
    .Footers(wdHeaderFooterEvenPages).Range.InsertFile "S:\Secrétariat\Banque de donnée\pied2 2pages.doc"
End With


End Sub
0
cs_pitros Messages postés 45 Date d'inscription mardi 11 octobre 2005 Statut Membre Dernière intervention 1 juin 2010
1 juin 2010 à 10:01
Personne pour m'aider s'il vous plait ?
0
Rejoignez-nous