VBA Word2007 - Modifier la police selon condition

Bonjour, pour récupérer le code de mes macros, j'utilise la coloration syntaxique de http://charles.racaud.free.fr/code-syntaxing/index mais les commentaires en verts sont avec une police de 7.5, ce qui est un peu petit pour moi.
Comme j'ai fait une macro pour recopier la coloration syntaxique dans Word, je voudrais savoir comment je peux coder pour augmenter la police quand celle-ci est verte ; j'imagine qu'il va falloir que je trouve le code de la couleur importée.

Sinon, peut-être peut-on écrire un code qui modifie la police entre tout ce qui commence par ' et qui finit par ^p.

Est-ce que c'est possible ? si oui, est-ce qu'on peut m'aider ? :(

8 réponses

  1. Contributeur
    Bonjour,
    Avec une exemple concret ce serait plus simple.
    Tu peu déposer un classeur sans donnée confidentielle par exemple sur https://www.cjoint.com/
    A+

    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    Note: Je ne répond pas aux MP pour les questions techniques. Et ma boule de cristal est cassée .
    0
    1. Bonjour Lermite222
      (ça fait plaisir de re-travailler avec toi...)
      voici le fichier sortant de la coloration syntaxique
      Sub NameOnglet()
      '
      'Attribution du nom de chaque feuille
      
      If IsEmpty(Range("B2")) Then Exit Sub
          ActiveSheet.Name = [B2] & " DA"
      '    ActiveWorkbook.SaveAs Filename:= _
      '        "N:\MDE\DPM\5-Processus Offre de Service-Relation Client\Etudes\Outil pilotage PFS\Documents de travail\Fichiers Jasper DAppels\2012\DA 04.xlsm" _
      '        , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
      End Sub
      Sub TriOnglet()
      Dim Encore As Boolean
      Dim i As Byte
          Do
          Encore = False
          For i = 1 To Sheets.Count - 2
            If Sheets(i).Name > Sheets(i + 1).Name Then
              Sheets(i).Move After:=Sheets(i + 1)
              Encore = True
            End If
          Next i
          Loop Until Encore = False
      
      End Sub
      la macro avec laquelle je le récupère sur Word
      Sub CollMacro()
      '
      ' CollMacro Macro
      '
      ' Collage spécial Htlm
          Selection.PasteAndFormat (wdPasteDefault)
          Selection.Shading.Texture = wdTextureNone
          Selection.Shading.ForegroundPatternColor = wdColorAutomatic
      ' met un fond vert
          Selection.Shading.BackgroundPatternColor = -704577690
          Selection.Find.ClearFormatting
          With Selection.ParagraphFormat
              .SpaceBefore = 0
              .SpaceAfter = 0
          End With
          Selection.Find.Execute Replace:=wdReplaceAll
          With Selection.Find
              .Text = "^l"
              .Replacement.Text = "^p"
          End With
          Selection.Find.Execute Replace:=wdReplaceAll
          Selection.HomeKey Unit:=wdStory
          Selection.Find.Execute Replace:=wdReplaceAll
      End Sub
      

      et je joins le fichier après traitement avec la macro
      https://www.cjoint.com/?CBqpAHbUkow
      Merci pour ton aide
      0
      1. Contributeur
        Je ne maîtrise pas beaucoup le VBA de Word, il serait peut-être possible de faire cette modif dans Excel ?
        Pourrais-tu déposer le classeur avec la coloration.
        PS: Il est fort probable que cette modif pourrait être faite dans Word, si un autre intervenant le peu... qu'il n'hésite pas à intervenir.
        0
        1. (Je suis d'ailleurs un peu étonné de te retrouver sur un forum Word, tu m'as toujours dépanné sur Excel.)

          En effet, je fais du VBA depuis peu et essentiellement sur Excel, mais pour chaque travail que je livre, je rédige un mode opératoire et une description applicative (autant pour l'évolution que pour du tutorat - à mon niveau...).
          Donc je récupère mon code sur excel, mais pour le coller sur word, je dois passer par un outil de coloration syntaxique (je n'ai rien trouvé de mieux, j'avais d'ailleurs demandé à des profs lors de mes DIF, il ne m'ont rien donné de mieux)...

          Donc voici un exemple sur excel.
          Encore merci d'essayer...
          https://www.cjoint.com/?CBqqgEPrLko
          0
          1. Contributeur
            (Je suis d'ailleurs un peu étonné de te retrouver sur un forum Word, tu m'as toujours dépanné sur Excel.)
            ?? c'est un forum VB et il n'est pas possible de connaître le VB "incriminer" au départ.
            Je regarde ton classeur.
            0
            1. Bonjour,
              J'ai pas beaucoup de succès...
              Bon alors j'ai essayé un truc, mais je n'ai encore jamais fait de boucle avec vba Word, et quand je lance avec F8, j'ai une erreur incompatibilité de type sur ma ligne For each...

              qq'1 peut-il corriger cette partie du code, que j'ai mis en gras et en italique ('MeF des commentaires" svp
              Sub CollMacro() 
              ' Collage spécial Htlm 
                  Selection.PasteAndFormat (wdPasteDefault) 
                  Selection.Shading.Texture = wdTextureNone 
                  Selection.Shading.ForegroundPatternColor = wdColorAutomatic 
              ' met un fond vert 
                  Selection.Shading.BackgroundPatternColor = -704577690 
              'MeF des commentaires 
              Dim c As Variant 
                  Selection.MoveUp Unit:=wdParagraph, Count:=1 
                          Selection.Find.ClearFormatting 
              For Each c In Paragraph    'je voudrais faire une boucle 
              'pour chaque c dans le paragraphe en cours 
              If c = "^l'" Or c = "^t'" Then 
              'alors sélection de la ligne entière ou mieux jusqu'au prochain ^l 
                  Selection.EndKey Unit:=wdLine, Extend:=wdExtend 
                  Selection.Font.Size = 9.5 
                  Selection.Font.Bold = wdToggle 
                  Selection.EndKey Unit:=wdLine     '   arrêt de la sélection 
              Next c 
              'MeF des paragraphes 
                  Selection.Find.ClearFormatting 
                  With Selection.ParagraphFormat 
                      .SpaceBefore = 0 
                      .SpaceAfter = 0 
                  End With 
                  Selection.Find.Execute Replace:=wdReplaceAll 
                  With Selection.Find 
                      .Text = "^l" 
                      .Replacement.Text = "^p" 
                  End With 
                  Selection.Find.Execute Replace:=wdReplaceAll 
                  Selection.HomeKey Unit:=wdStory 
                  Selection.Find.Execute Replace:=wdReplaceAll 
              End Sub


              Merci pour votre aide
              0
              1. Bonjour,

                Tu peux aussi tout simplement mettre en "chasse" fixe dans les paramètres de la coloration : http://charles.racaud.free.fr/code-syntaxing/pset
                0
                1. Bonjour Banaioupas,
                  Pourquoi faire simple quand on peut faire compliquer ?
                  C'est vrai qu'autrefois (quand je ne faisais que très très peu de vba), j'avais regardé les paramètres, mais le site ne conservait pas mes modifs à cause des cookies. Aujourd'hui, on a moins peur des cookies...
                  Je vais essayer ça, mais j'aimerai quand même bien savoir pourquoi mon code ne fonctionne pas
                  'MeF des commentaires 
                  Dim c As Variant 
                      Selection.MoveUp Unit:=wdParagraph, Count:=1 
                              Selection.Find.ClearFormatting 
                  For Each c In Paragraph    'je voudrais faire une boucle 
                  'pour chaque c dans le paragraphe en cours 
                  If c = "^l'" Or c = "^t'" Then 
                  'alors sélection de la ligne entière ou mieux jusqu'au prochain ^l 
                      Selection.EndKey Unit:=wdLine, Extend:=wdExtend 
                      Selection.Font.Size = 9.5 
                      Selection.Font.Bold = wdToggle 
                      Selection.EndKey Unit:=wdLine     '   arrêt de la sélection 
                  Next c 

                  au niveau de For Each...
                  Merci beaucoup.
                  0