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

Résolu
Floki72450 Messages postés 45 Statut Membre -  
Floki72450 Messages postés 45 Statut Membre -
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

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. Floki72450 Messages postés 45 Statut Membre
       
      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
    2. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > Floki72450 Messages postés 45 Statut Membre
       
      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