[Office] Importer/Exporter votre dictionnaire : \lambda → "λ"

Bonjour à tous,

Ci-après deux petites macros pour importer/exporter votre dictionnaire de "Autocorrect as you type" / Correction pendant que vous tapez dans les applications MS Office (Word, Excel, PPT…). Personnellement, j'utilise beaucoup les lettres grecques en mathématiques, et c'est très pénible de devoir passer par une police custom ou l'insertion de caractères ou le copier/coller à chaque apparition du symbole.

Une solution est d'utiliser le dictionnaire de correction pour remplacer par exemple le texte \lambda par λ (lors de la frappe, après espace).

Alors on peut définir ce dictionnaire manuellement, mais également via VBA. Je vous ai mis ci-joint le dictionnaire que j'utilise, contenant l'alphabet grec ainsi que quelques symboles courants comme les flèches ou les inégalités.

La macro d'export permet de créer un CSV contenant TOUTES vos options de correction (aussi celles par défaut). Utile pour transférer les options d'un PC à un autre. Le CSV est sauvegardé dans "Documents" par défaut.

La macro d'import permet d'importer un CSV qui suit le format "MotFrappé","Correction".

Mon fichier CSV (lettres grecques + quelques ajouts)

22autocorrectentries.csv (777.00 Octets)

NOTES

  • Le préfix "\" n'est pas obligatoire (auquel cas : à retirer/modifier), mais je préfère le garder pour la correspondance avec l'outil d'écriture d'équations.
  • Le code actuel efface les éventuelles entrées précédentes pour les remplacer par celles-ci. Donc supposons que vous ayez déjà enregistré que "\lambda" soit remplacé par "lampe à huile", il sera retiré et replacé par "λ". Cependant les mots-clés non listés sont gardés intacts.
  • Il faut faire la manip dans chacune des applications Office, car elles ne partagent pas le dictionnaire.
  • Il FAUT BIEN SAUVEGARDER LE FICHIER ayant lancé la macro après l'avoir lancée, sinon vous risquez de ne pas retrouver vos ajouts après avoir fermé/réouvert Word.
  • Parfois ça bugue (la correction ne se fait pas), je ne sais pas trop pourquoi. Mais bon 90% du temps ça marche.
  • Gardez bien l'encodage UTF8 du fichier CSV pour garantir un export/import correct des caractères spéciaux.

Macros

' nota : BIEN ENREGISTRER LE FICHIER AYANT LANCE LA MACRO AVANT DE FERMER WORD/EXCEL
' EXPORT : definir le filePath

' IMPORT
Sub ImportAutoCorrectEntriesFromCSV_UTF8()  
    ' Select file using FileDialog
    Dim filePath As String
    Dim fd As FileDialog
    Set fd = Application.FileDialog(msoFileDialogFilePicker)
    With fd
        .Title = "Select CSV File"
        .Filters.Clear
        .Filters.Add "CSV Files", "*.csv"
        .AllowMultiSelect = False

        If .Show <> -1 Then
            MsgBox "No file selected.", vbExclamation
            Exit Sub
        End If

        filePath = .SelectedItems(1)
    End With

    ' Create ADODB.Stream to read UTF-8
    Dim stream As Object: Set stream = CreateObject("ADODB.Stream")
    With stream
        .Type = 2 ' Text
        .Charset = "utf-8"
        .Open
        .LoadFromFile filePath
    End With

    ' Read lines one by one
    Dim lineText As String, replaceText As String, withText As String
    Dim splitLine() As String
    Dim alreadyExists As Boolean, i As Long, 
    Do While Not stream.EOS
        lineText = stream.ReadText(-2) ' Read line

        If Trim(lineText) = "" Then GoTo ContinueLoop

        splitLine = Split(lineText, ",")

        If UBound(splitLine) <> 1 Then GoTo ContinueLoop

        replaceText = Replace(splitLine(0), """", "")
        withText = Replace(splitLine(1), """", "")

        ' Remove existing entry if it exists
        On Error Resume Next
        Application.AutoCorrect.Entries(replaceText).Delete
        On Error GoTo 0

        ' Add new entry
        On Error Resume Next
        Application.AutoCorrect.Entries.Add Name:=replaceText, Value:=withText
        On Error GoTo 0
ContinueLoop:
    Loop

    stream.Close
    Set stream = Nothing

    MsgBox "AutoCorrect entries imported successfully.", vbInformation
End Sub

' EXPORT
Sub ExportAutoCorrectEntriesToCSV_UTF8()
    ' Set output file path
    ' FOR EXCEL ONLY
    ' filePath = ThisWorkbook.Path & "\AutoCorrectEntries.csv"
    ' ALL APPS
    Dim filePath As String
    filePath = Environ("USERPROFILE") & "\Documents\AutoCorrectEntries.csv"

    ' Get AutoCorrect replacement list
    Dim autoCorrectList As Variant
    autoCorrectList = Application.AutoCorrect.ReplacementList
    ' Create ADODB.Stream for UTF-8 encoding
    Dim utf8Stream As Object: Set utf8Stream = CreateObject("ADODB.Stream")
    With utf8Stream
        .Type = 2 ' Text
        .Charset = "utf-8"
        .Open
    End With

    ' Loop through AutoCorrect entries
    Dim i As Long, textLine As String
    For i = LBound(autoCorrectList, 1) To UBound(autoCorrectList, 1)
        textLine = """" & Replace(autoCorrectList(i, 1), """", """""") & """,""" & Replace(autoCorrectList(i, 2), """", """""") & """"
        utf8Stream.WriteText textLine & vbCrLf
    Next i

    ' Save to file
    With utf8Stream
        .SaveToFile filePath, 2 ' Overwrite if exists
        .Close
    End With

    ' Cleanup
    Set utf8Stream = Nothing
    MsgBox "AutoCorrect entries exported to:" & vbCrLf & filePath, vbInformation
End Sub
Rechercher des sujets similaires à "office importer exporter dictionnaire lambda"