[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)
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