[VBA] Code pour modifié format du texte dans zone de texte

Résolu/Fermé
Floki72450
Messages postés
34
Date d'inscription
vendredi 17 octobre 2014
Statut
Membre
Dernière intervention
23 février 2016
- Modifié par Floki72450 le 2/02/2016 à 10:07
Floki72450
Messages postés
34
Date d'inscription
vendredi 17 octobre 2014
Statut
Membre
Dernière intervention
23 février 2016
- 9 févr. 2016 à 10:20
Bonjour,

J'ai un soucis sur Word lors de l'utilisation de VBA.

J'ai créé une macro VBA permettant de mettre à jour les zones de textes par l'ajout des propriété du document suite à leur modification. Cela fonctionne bien et tout ce met à jour, mais les formats du texte ne sont pas conservés ?!?

Ma question est donc : Comment forcer le changement du format d'une zone de texte par des lignes en code VBA ?
Dans mon document, il y a plusiers zones de texte, mais toutes n'ont pas un format identique, je voudrais donc qu'elles soient modifiées chacune avec un format particulier, hors comment savoir "l'identifiant" d'une zone de texte, afin de lui attribuer le bon format ?

Exemple :
- La première zone de texte ne doit pas être modifiée, car rien ne change dedans.
- le texte de la deuxième zone de texte doit être taille 20, en Franklin Gothic Medium, et avec des ombre (sur le texte, pas la zone de texte)
- le texte de la deuxième zone de texte doit être taille 22, en Franklin Gothic Medium, et avec des ombre (sur le texte, pas la zone de texte)
- le texte de la deuxième zone de texte doit être taille 24, en Franklin Gothic Medium, et avec des ombre (sur le texte, pas la zone de texte)
- le texte de mon pied de page (qui se met à jour aussi avec les propriétés du document) doit être taille 9, en Franklin Gothic Medium, et avec des ombre (sur le texte, pas la zone de texte)

Ce que je souhaite est-il réalisable ?

Lien pour obtenir le fichier : http://www.cjoint.com/c/FBciqpNRv10

PS : Dans le fichier joint, si vous modifier le commentaire dans les propriétés du document, et en cliquant sur la barre tout en haut de la première page, cela met à jour les donnée des zones de texte de la page. Vous verrez alors que les formats ne sont par respectés.

Merci par avance de votre aide

Cordialement

Floki72450

1 réponse

cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
711
3 févr. 2016 à 17:44
Bonjour,

Voici un exemple a adapter à la configuration. J'ai mis une MsgBox pour connaitre le nom des shapes. Ensuite je me suis amusé à modifier une shape avec un peu de fantaisie :-)

Private Sub CommandButton1_Click()
Dim oField As Field
Dim oSection As Section
Dim oHeader As HeaderFooter
Dim oFooter As HeaderFooter
Dim oSh As Shape
For Each oSection In ActiveDocument.Sections
For Each oFooter In oSection.Footers
If oFooter.Exists Then
For Each oField In oFooter.Range.Fields
oField.Update
Next oField
End If
Next oFooter
For Each oHeader In oSection.Headers
If oHeader.Exists Then
For Each oField In oHeader.Range.Fields
oField.Update
Next oField
End If
Next oHeader
Next oSection
'Boucle sur tous les shapes du document
For Each oSh In ActiveDocument.Shapes
    'Selection du Shapes
    oSh.Select
     MsgBox oSh.Name ' pour connaitre le nom des shapes
    If oSh.Name = "Rectangle 15" Then
    'exemple a adapter
    oSh.Select
    With Selection
     .Font.Size = 22
     .Font.Name = "Franklin Gothic Medium"
     .Font.Bold = True
     .Font.Color = wdColorRed
     End With
    End If
   'Mise à jour des champs
    Selection.Fields.Update
Next oSh
For Each champ In ActiveDocument.Range.Fields
champ.Update
Next champ


ActiveDocument.PrintPreview
ActiveDocument.ClosePrintPreview
ActiveDocument.PrintPreview
ActiveDocument.ClosePrintPreview
End Sub




0
Floki72450
Messages postés
34
Date d'inscription
vendredi 17 octobre 2014
Statut
Membre
Dernière intervention
23 février 2016

Modifié par Floki72450 le 8/02/2016 à 15:59
Bonjour,

Tout d'abord un grand MERCI à toi, cela m'a permis de beaucoup avancer dans mon projet ! J'ai donc réussi à faire la mise en format des zones de textes que je voulais, taille, couleur, police, j'ai même rajouter le fait d'avoir une police ombrée ! Donc merci

Cependant : J'aimerai faire quelques lignes de code pour mettre en forme mes pieds de pages avec ces propriétés :
.Font.Size = 9
.Font.Name = "Franklin Gothic Medium"
.Font.Bold = True
.Font.Color = wdColorBlack

J'ai tenter d'utiliser les premières lignes de codes qui permettent de mettre à jour les champs des pieds de pages, mais je n'arrive pas à leur insérer une mise en format spéciale...

Peut tu m'aider ?

Merci d'avance :)

Au passage, voici mon code VBA dans l'état actuel et au point (manque la mise en format des pieds de pages...) :

Private Sub CommandButton1_Click()
Dim oField As Field
Dim oSection As Section
Dim oHeader As HeaderFooter
Dim oFooter As HeaderFooter
Dim oSh As Shape

'Mise à jour des champs des en-têtes et pieds de pages
For Each oSection In ActiveDocument.Sections
For Each oFooter In oSection.Footers
If oFooter.Exists Then
For Each oField In oFooter.Range.Fields
oField.Update
Next oField
End If
Next oFooter
For Each oHeader In oSection.Headers
If oHeader.Exists Then
For Each oField In oHeader.Range.Fields
oField.Update
Next oField
End If
Next oHeader
Next oSection

'Boucle sur tous les shapes du document
For Each oSh In ActiveDocument.Shapes
'Selection du Shapes
If oSh.Name = "Text Box 22" Then
'Mise en forme de la séléction
oSh.Select
With Selection
.Font.Size = 20
.Font.Name = "Franklin Gothic Medium"
.Font.Bold = True
.Font.Shadow = True
.Font.Color = wdColorBlack
End With
End If
If oSh.Name = "Text Box 18" Then
'Mise en forme de la séléction
oSh.Select
With Selection
.Font.Size = 22
.Font.Name = "Franklin Gothic Medium"
.Font.Bold = True
.Font.Shadow = True
.Font.Color = wdColorBlack
End With
End If
If oSh.Name = "Text Box 20" Then
'Mise en forme de la séléction
oSh.Select
With Selection
.Font.Size = 24
.Font.Name = "Franklin Gothic Medium"
.Font.Bold = True
.Font.Shadow = True
.Font.Color = wdColorBlack
End With
End If
'Mise à jour des champs
Selection.Fields.Update
Next oSh

'Mise à jour des champs "libres" du document
For Each champ In ActiveDocument.Range.Fields
champ.Update
Next champ

'Aperçu avant impression pour mettre à jour le nombre de pages
ActiveDocument.PrintPreview
ActiveDocument.ClosePrintPreview
End Sub
0
cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
711 > Floki72450
Messages postés
34
Date d'inscription
vendredi 17 octobre 2014
Statut
Membre
Dernière intervention
23 février 2016

8 févr. 2016 à 18:32
Sub Pied_de_page()
    WordBasic.ViewFooterOnly
     With Selection
        .Font.Size = 9
        .Font.Name = "Franklin Gothic Medium"
        .Font.Bold = True
        .Font.Color = wdColorBlack
        End With
End Sub


Voilà

@+
0
Floki72450
Messages postés
34
Date d'inscription
vendredi 17 octobre 2014
Statut
Membre
Dernière intervention
23 février 2016
> cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022

9 févr. 2016 à 08:47
Je te remercie, mais ton code ne fonctionne pas vraiment, il permet simplement de voir le pied de page, mais pas de le modifier.
Cependant, j'ai trouver la solution en mélangeant des bribes d'aide sur d'autres sites internet.
Voici donc le code qui vas très bien :) (pour les curieux qui ont le même problème que moi ^^) :

ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Font.Size = 9
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Font.Name = "Franklin Gothic Medium"
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Font.Bold = False
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Font.Shadow = True
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).Range.Font.Color = wdColorBlack


Il est un peut répétitif mais je ne sais pas comment réduire la taille tout en conservant l'efficacité ^^
Si au passage tu as une idée pour en réduire la taille :)

Merci encore beaucoup pour ton aide, je marque résolu !! :)
0
cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022
711
9 févr. 2016 à 09:04
Il suffit de faire comme ceci:

Sub Pied_de_page_2()
With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary)
.Range.Font.Size = 9
.Range.Font.Name = "Franklin Gothic Medium"
.Range.Font.Bold = False
.Range.Font.Shadow = True
.Range.Font.Color = wdColorBlack
End With
End Sub


@+ Le Pivert
0
Floki72450
Messages postés
34
Date d'inscription
vendredi 17 octobre 2014
Statut
Membre
Dernière intervention
23 février 2016
> cs_Le Pivert
Messages postés
7784
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
24 juin 2022

9 févr. 2016 à 10:20
merci beaucoup :)
0