Catégories
Éducation IA Technologie

Écrire une macro avec chatGPT

L’idée est la suivante (et je me demande pourquoi je ne l’ai pas eue avant) : je voulais que chatGPT m’aide à créer une macro pour Word.

Et cette idée est toujours la même que je décline encore et encore (voir par exemple L’IA pour aider, non pour remplace) : comment utiliser l’IA soit pour faire des choses que je sais faire, mais plus rapidement ? Ou encore : comment faire faire à l’IA des choses que je ne sais pas faire ou pas bien faire et qui font de celui qui passe commande une sorte de « power user » ?

Parce que oui, on peut utiliser ceci ou cela (par exemple, dans le cas qui nous préoccupe, le ruban du cartable fantastique), mais ici, on fait les choses soi-même ou – parce qu’il y a contradiction — on voit comment l’IA nous assiste dans le processus de création de fonctions taillées sur mesure.

Enfin, bref, je voulais qu’en un clic, on puisse passer d’un texte quasi illisible pour un élève dyslexique en un texte dûment formaté, c’est-à-dire avec

  • Une police sans serif
  • Une taille de 14px
  • Un interligne de 1.5
  • Un espacement entre les caractères de 0.5
  • etc.

La macro fait tout ça en un clic. Mieux encore, elle aide l’enseignant qui ignorerait tout des subtilités éditoriales à rendre son document dyslexic friendly. Voici donc la macro, pour ceux que ça intéresse, et si vous n’avez jamais utilisé ou créé de macros, rappelez-vous, chatGPT sera très heureux de vous aider.


Sub FormatForDyslexia_WithFootnotes()
    Dim para As Paragraph
    Dim doc As Document
    Dim style As Style
    Dim footnote As Footnote

    ' Associer le document actif
    Set doc = ActiveDocument
    
    ' Modifier le texte principal
    For Each para In doc.Paragraphs
        If Not para.Range.InlineShapes.Count > 0 Then
            para.Range.Font.Name = "Arial"
            para.Range.Font.Size = 14
            para.LineSpacingRule = wdLineSpaceExactly
            para.LineSpacing = 2 * 12 ' Interligne de 2
            para.Alignment = wdAlignParagraphLeft
            para.SpaceBefore = 6 ' Espacement avant
            para.SpaceAfter = 6 ' Espacement après
            para.Range.Font.Spacing = 0.5 ' Espacement des lettres
        End If
    Next para

    ' Modifier les titres
    For Each style In doc.Styles
        If style.Type = wdStyleTypeParagraph Then
            If style.NameLocal = "Titre 1" Then
                style.Font.Size = 24 ' Taille du titre 1
            ElseIf style.NameLocal = "Titre 2" Then
                style.Font.Size = 20 ' Taille du titre 2
            ElseIf style.NameLocal = "Titre 3" Then
                style.Font.Size = 18 ' Taille du titre 3
            End If
        End If
    Next style

    ' Modifier les notes de bas de page
    For Each footnote In doc.Footnotes
        With footnote.Range
            .Font.Name = "Arial"
            .Font.Size = 12 ' Taille légèrement plus petite que le texte principal
            .ParagraphFormat.LineSpacingRule = wdLineSpaceExactly
            .ParagraphFormat.LineSpacing = 1.5 * 12 ' Interligne de 1,5
            .ParagraphFormat.Alignment = wdAlignParagraphLeft
            .ParagraphFormat.SpaceBefore = 3 ' Espacement avant chaque note
            .ParagraphFormat.SpaceAfter = 3 ' Espacement après chaque note
        End With
    Next footnote

    ' Afficher un message de confirmation
    MsgBox "Le texte et les notes de bas de page ont été formatés.", vbInformation, "Formatage terminé"
End Sub