Sub test()
chaine = "3*2*8*4.5+10/1.5*2-4*2"
Debug.Print chaine
Debug.Print "--------------------"
Debug.Print PutPrioritySegment(chaine)
End Sub
Function PutPrioritySegment(chaine)
Dim elem, i&, t
For Each elem In Array("+", "-", "*", "/"): chaine = Replace(chaine, elem, "|" & elem): Next
chaine = Replace(chaine, "/", "*/")
Do While InStr(chaine, "*") > 0
t = Split(chaine, "|")
For i = 1 To UBound(t)
If InStr(t(i), "*") Then t(i - 1) = "(" & t(i - 1): t(i - 1) = t(i - 1) & Replace(t(i), "*", "x") & ")": t(i) = "": Exit For
Next
chaine = Replace(Replace(Replace(Replace(Join(t, ""), "*", "|*"), "+", "|+"), "-", "|-"), ":", "|:")
Debug.Print chaine
Loop
chaine = Replace(Replace(Replace(chaine, "(|+", "+("), "(|-", "-("), "(|:", "/(")
chaine = Replace(chaine, "(+", "+(")
chaine = Replace(chaine, "x/", "/")
chaine = Replace(chaine, "|", "")
PutPrioritySegment = chaine
End Function