Dans la macro ExampleWriteExpression, on peut éviter l'utilisation de l'instruction Selection.TypeText en utilisant un objet Range (que l'on modifie après chaque utilisation de la méthode Add) à la place de l'objet Selection.
La macro modifiée insère la chaîne Metric + inverse metric - metric à la position courante du curseur dans l'équation.
Les 4 lignes de codes de la modification peuvent être remplacées par une procédure prenant en paramètre un objet Range, et une chaîne représentant le signe + ou - à insérer.
Je ne sais pas si ceci est transposable à votre code.
Code:
Sub ExampleWriteExpression()
'insertion point should be in equation. Metric + inverse metric - metric inserted
Dim Equation As OMath
Dim MathTerm As OMathFunction
Dim plage As Range
' If Selection.OMaths.Count <> 1 Then ExpanderFatalError ("Cursor must be in an equation.")
Set Equation = Selection.OMaths(1)
'Initialisation de l'objet plage à la position du curseur dans l'équation
Set plage = Selection.Range
Set MathTerm = Equation.Functions.Add(plage, wdOMathFunctionScrSub)
MathTerm.ScrSub.E.Range.Text = "g"
MathTerm.ScrSub.Sub.Range = ChrW(&H3BC) & ChrW(&H3BD)
'remplace "Selection.TypeText"
Set plage = MathTerm.Range
plage.Collapse (wdCollapseEnd)
plage.Text = "+"
plage.Collapse (wdCollapseEnd)
Set MathTerm = Equation.Functions.Add(plage, wdOMathFunctionScrSup)
MathTerm.ScrSup.E.Range = "g"
MathTerm.ScrSup.Sup.Range = ChrW(&H3BC) & ChrW(&H3BD)
'remplace "Selection.TypeText"
Set plage = MathTerm.Range
plage.Collapse (wdCollapseEnd)
plage.Text = "-"
plage.Collapse (wdCollapseEnd)
Set MathTerm = Equation.Functions.Add(plage, wdOMathFunctionScrSub)
MathTerm.ScrSub.E.Range.Text = "g"
MathTerm.ScrSub.Sub.Range = ChrW(&H3BC) & ChrW(&H3BD)
End Sub