Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajouter ou supprimer du texte dans l'entête ou pied de page

9 réponses
Avatar
rico34
Bonjour

Je souhaiterai ajouter des paragraphes dans
l'entête et le pied de page d'un fichier word en fonction d'un fichier word
de référence.
Une personne d'une file précédente (pied de page) a écrit le code ci-dessous
et je n'arrive pas à le modifier.

Set docSource = ActiveDocument
'Établir des Ranges pour le pied de page et l'en-tête
With docSource.Sections(1)
Set rgeHeader = .Headers(wdHeaderFooterPrimary).Range.FormattedText
Set rgeFooter = .Footers(wdHeaderFooterPrimary).Range.FormattedText
End With

'Établir chemin du dossier
PathToUse = "D:\eric\Livres\DECF 2007\Comptalia_UE8\CP 3e version\Module 03b"

'Chemin et type de fichiers à traiter
myFile = Dir$(PathToUse & "*.doc")
While myFile <> ""
'Ouvrir document
Set myDoc = Documents.Open(PathToUse & myFile)

'copier les 2 ranges
With myDoc.Sections(1)
.Headers(wdHeaderFooterPrimary).Range.FormattedText = rgeHeader
'Enlever le ¶ de trop
.Headers(wdHeaderFooterPrimary).Range.Characters.Last.Delete
.Footers(wdHeaderFooterPrimary).Range.FormattedText = rgeFooter
.Footers(wdHeaderFooterPrimary).Range.Characters.Last.Delete
End With
'Enregistrer et fermer document
myDoc.Close SaveChanges:=wdSaveChanges

'Prochain fichier dans le dossier
myFile = Dir$()
Wend

Merci

9 réponses

Avatar
Anacoluthe
Bonjour !

'rico34' nous a écrit ...
Une personne d'une file précédente (pied de page) a écrit le code ci-dessous
et je n'arrive pas à le modifier.


Qu'est-ce que vous voulez modifier exactement dans l'exemple de Jean-Guy ?
Tout est modifiable ! Savez-vous modifier le code vba d'une macro ?

Anacoluthe
« On ne renonce pas à ses rêves, on les modifie »
- Jean-Claude CLARI

Avatar
rico34

Bonjour !

'rico34' nous a écrit ...
Une personne d'une file précédente (pied de page) a écrit le code ci-dessous
et je n'arrive pas à le modifier.


Qu'est-ce que vous voulez modifier exactement dans l'exemple de Jean-Guy ?
Tout est modifiable ! Savez-vous modifier le code vba d'une macro ?



Non, car j'ai essayé d'effectuer une modif dans cette partie en ajoutant
quelques lignes avec telle police, telle taille comme Jean-guy l'a réalisé
dans les premiers paragraphes d'un document.

'copier les 2 ranges
With myDoc.Sections(1)
.Headers(wdHeaderFooterPrimary).Range.FormattedText = rgeHeader
'Voici la partie où je souhaite ajouter quelques paragraphes avec telle
police, telle taille (idem pour le pied de page)
'Enlever le ¶ de trop
.Headers(wdHeaderFooterPrimary).Range.Characters.Last.Delete
.Footers(wdHeaderFooterPrimary).Range.FormattedText = rgeFooter
.Footers(wdHeaderFooterPrimary).Range.Characters.Last.Delete
End With

Merci


Avatar
rico34
'copier les 2 ranges
With myDoc.Sections(1)
.Headers(wdHeaderFooterPrimary).Range.FormattedText = rgeHeader
.Headers(wdHeaderFooterPrimary).Range.Paragraphs
With .Item(1).Range
.Text = "module" & module & Chr(13)
With .Font
.Name = "Verdana"
.Size = 14
.Bold = True
.Italic = False
.Underline = wdUnderlineSingle
End With
With .ParagraphFormat
.SpaceAfter = "0"
.Alignment = wdAlignParagraphCenter
End With
End With

J'ai essayé le code qui fonctionne très bien pour modifier du texte et sa
forme, mais j'ai une erreur.
Avatar
rico34
J'ai oublié de dire qu'il y a un tableau dont les bordures ne sont pas
visibles dans l'entête. La cellule de gauche possède une image, celle de
droite du texte auquel j'ajoute quelques éléments en fonction du nom du
message.

J'ai réussi avec le code de Jean-Guy de modifier le contenu du texte mais
pas l'entête. J'arrive à copier l'entête du document de référence mais pas à
le modifier.


Bonjour !

'rico34' nous a écrit ...
Une personne d'une file précédente (pied de page) a écrit le code ci-dessous
et je n'arrive pas à le modifier.


Qu'est-ce que vous voulez modifier exactement dans l'exemple de Jean-Guy ?
Tout est modifiable ! Savez-vous modifier le code vba d'une macro ?

Anacoluthe
« On ne renonce pas à ses rêves, on les modifie »
- Jean-Claude CLARI






Avatar
Anacoluthe
Bonjour !

'rico34' nous a écrit ...
'copier les 2 ranges
With myDoc.Sections(1)
.Headers(wdHeaderFooterPrimary).Range.FormattedText = rgeHeader
.Headers(wdHeaderFooterPrimary).Range.Paragraphs
With .Item(1).Range
.Text = "module" & module & Chr(13)
With .Font
.Name = "Verdana"
.Size = 14
.Bold = True
.Italic = False
.Underline = wdUnderlineSingle
End With
With .ParagraphFormat
.SpaceAfter = "0"
.Alignment = wdAlignParagraphCenter
End With
End With

J'ai essayé le code qui fonctionne très bien pour modifier du texte et sa
forme, mais j'ai une erreur.


VBA prend la peine de vous décrire l'erreur : utilisez le message
d'erreur pour corriger votre code.

la ligne
.Headers(wdHeaderFooterPrimary).Range.Paragraphs
est bancale : on fait quoi avec ces paragraphes ?
et la suivante ne veut rien dire
With .Item(1).Range
veut dire ici With myDoc.Sections(1).Item(1).Range : non-sens !
alors que vous souhaitez je suppose traiter le 1er paragraphe
de l'entête primaire de la première section de votre document myDoc

Il est difficile de vous répondre car nous ne possédons pas vos
documents et comprenez que le forum n'est pas là pour vous mâcher
les macros à votre place :-s

Je suis dans l'incapacité de tester votre code
Tout ce que je peux vous dire est qu'il est syntaxiquement faux

Sous réserve de faire moi-même une faute de recopiage je l'écrirai :

With myDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range
.FormattedText = rgeHeader
With .Paragraphs(1).Range
.Text = "module" & module & Chr(13)
With .Font
.Name = "Verdana"
.Size = 14
.Bold = True
.Italic = False
.Underline = wdUnderlineSingle
End With
With .ParagraphFormat
.SpaceAfter = "0"
.Alignment = wdAlignParagraphCenter
End With
End With
End With

Il suffit de suivre la logique du modèle *objet* qu'on utilise.

Mais encore une fois et c'est très important /je n'ai pas testé/ !!!

On ne peut pas CODER à votre place !!!!!!!!!
On ne peut que vous donner des exemples de code.
Tous les intervenants de ce forum ont l'éthique de tester les codes
qu'ils postent. Si ça ne marche pas chez vous, c'est que vos
modifications du code proposé sont erronées.
Ne recopiez que le code que vous comprenez !

Les macros ne sont pas des recettes de cuisine (et encore, quand
j'applique les recettes de cuisine du journal c'est jamais très bon,
je me plante toujours :-) )

Bon courage !

Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD

Avatar
JièL
Bonjoir(c) Anacoluthe

Le 13/05/2007 10:13 vous avez écrit ceci :
Les macros ne sont pas des recettes de cuisine (et encore, quand
j'applique les recettes de cuisine du journal c'est jamais très bon,
je me plante toujours :-) )


Ah tu me rassures, je croyais être le seul à raté les recettes de cuisine
;-)))

JièL Recetteur rateur

Avatar
Geo

Les macros ne sont pas des recettes de cuisine (et encore, quand
j'applique les recettes de cuisine du journal c'est jamais très bon,
je me plante toujours :-) )


Ah tu me rassures, je croyais être le seul à raté les recettes de cuisine ;-)))


Faites bien de prévenir.
Si on se fait une bouffe, ce sera au restaurant.

--
A+


Avatar
Geo

Merci pour toutes vos infos. Après quelques modifs, j'ai enfin réussi à finir
cette petite macro. Juste pour finir, pouvez vous me donner une piste pour
modifier le nom de l'auteur du fichier word.


ActiveDocument.BuiltInDocumentProperties("Author")="C'est moi l'auteur"

--
A+

Avatar
rico34
Merci pour toutes vos infos. Après quelques modifs, j'ai enfin réussi à finir
cette petite macro. Juste pour finir, pouvez vous me donner une piste pour
modifier le nom de l'auteur du fichier word.
Mais excusez moi, si je n'emploie pas les bons termes.


Bonjour !

'rico34' nous a écrit ...
'copier les 2 ranges
With myDoc.Sections(1)
.Headers(wdHeaderFooterPrimary).Range.FormattedText = rgeHeader
.Headers(wdHeaderFooterPrimary).Range.Paragraphs
With .Item(1).Range
.Text = "module" & module & Chr(13)
With .Font
.Name = "Verdana"
.Size = 14
.Bold = True
.Italic = False
.Underline = wdUnderlineSingle
End With
With .ParagraphFormat
.SpaceAfter = "0"
.Alignment = wdAlignParagraphCenter
End With
End With

J'ai essayé le code qui fonctionne très bien pour modifier du texte et sa
forme, mais j'ai une erreur.


VBA prend la peine de vous décrire l'erreur : utilisez le message
d'erreur pour corriger votre code.

la ligne
..Headers(wdHeaderFooterPrimary).Range.Paragraphs
est bancale : on fait quoi avec ces paragraphes ?
et la suivante ne veut rien dire
With .Item(1).Range
veut dire ici With myDoc.Sections(1).Item(1).Range : non-sens !
alors que vous souhaitez je suppose traiter le 1er paragraphe
de l'entête primaire de la première section de votre document myDoc

Il est difficile de vous répondre car nous ne possédons pas vos
documents et comprenez que le forum n'est pas là pour vous mâcher
les macros à votre place :-s

Je suis dans l'incapacité de tester votre code
Tout ce que je peux vous dire est qu'il est syntaxiquement faux

Sous réserve de faire moi-même une faute de recopiage je l'écrirai :

With myDoc.Sections(1).Headers(wdHeaderFooterPrimary).Range
.FormattedText = rgeHeader
With .Paragraphs(1).Range
.Text = "module" & module & Chr(13)
With .Font
.Name = "Verdana"
.Size = 14
.Bold = True
.Italic = False
.Underline = wdUnderlineSingle
End With
With .ParagraphFormat
.SpaceAfter = "0"
.Alignment = wdAlignParagraphCenter
End With
End With
End With

Il suffit de suivre la logique du modèle *objet* qu'on utilise.

Mais encore une fois et c'est très important /je n'ai pas testé/ !!!

On ne peut pas CODER à votre place !!!!!!!!!
On ne peut que vous donner des exemples de code.
Tous les intervenants de ce forum ont l'éthique de tester les codes
qu'ils postent. Si ça ne marche pas chez vous, c'est que vos
modifications du code proposé sont erronées.
Ne recopiez que le code que vous comprenez !

Les macros ne sont pas des recettes de cuisine (et encore, quand
j'applique les recettes de cuisine du journal c'est jamais très bon,
je me plante toujours :-) )

Bon courage !

Anacoluthe
« C'est encore en méditant l'objet
que le sujet a le plus de chance de s'approfondir. »
- Gaston BACHELARD