Une première solution serait de résoudre le problème à la racine ...
Function Utf8_Decode(ByVal txt As String) As String
Dim ln As Long, s As String, i As Integer, j As Integer, K As Integer
For ln = 1 To Len(txt)
i = Asc(Mid(txt, ln, 1))
If i > 127 Then
If Not i And 32 Then
j = Asc(Mid(txt, ln + 1, 1))
s = s & ChrW$(((31 And i) * 64 + (63 And j)))
ln = ln + 1
Else
j = Asc(Mid(txt, ln + 1, 1))
K = Asc(Mid(txt, ln + 2, 1))
s = s & ChrW$(((i And 15) * 16 * 256) + ((j And 63) * 64) + (K And 63))
ln = ln + 2
End If
Else
s = s & Chr$(i)
End If
Next ln
Utf8_Decode = s
End Function