VBA Word2007 - Modifier la police selon condition

Mouftie Messages postés 234 Statut Membre -  
Mouftie Messages postés 234 Statut Membre -
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. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. Mouftie Messages postés 234 Statut Membre 17
     
    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
  3. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  4. Mouftie Messages postés 234 Statut Membre 17
     
    (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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    (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
  7. Mouftie Messages postés 234 Statut Membre 17
     
    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
  8. Bananioupas
     
    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
  9. Mouftie Messages postés 234 Statut Membre 17
     
    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