Public Function ESP(Target As Range) As String
Dim I As Integer 'déclare la variable I (Incrément)
Dim TBE() As Integer 'déclare le tableau de variables TBE (TaBleau des Espaces)
Dim X As Integer 'déclare la variable X (incrément)
Dim G As String 'déclare la variable G (partie Gauche)
Dim D As String 'déclare la variable D (partie Droite)
Dim NV As String 'déclare la variable NV (Nouvelle Valeur)
For I = 1 To Len(Target.Value) - 1 'boucles sur tous les caractères (sauf le dernier) de la valeur de la cible
If IsNumeric(Mid(Target.Value, I, 1)) Then 'condition 1: si le caractère est numérique
If Not IsNumeric(Mid(Target.Value, I + 1, 1)) Then 'condition 2 : si le caractère suivant n'est pas numérique
ReDim Preserve TBE(X) 'redimensionne le tableau de variable TBE
TBE(X) = I + 1 'récupère la position du caractère suivant dans la variable indexée TBE(X)
X = X + 1 'incrémente X
End If 'fin de la condition 2
Else 'sinon (condition 1) = si le caractère n'est pas numérique
If IsNumeric(Mid(Target.Value, I + 1, 1)) Then 'condition 2 : si le caractère suivant est numérique
ReDim Preserve TBE(X) 'redimensionne le tableau de variablea TBE
TBE(X) = I + 1 'récupère la position du caractère suivant dans la variable indexée TBE(X)
X = X + 1 'incrémente X
End If 'fin de la condition 2
End If 'fin de la condition 1
Next I 'prochain caractère de la boucle
NV = Target.Value 'définit la nouvelle valeur NV
For X = UBound(TBE) To 0 Step -1 'boucle inversée de la dernière variable indexée du tableau TBE à la première
G = Left(NV, TBE(X) - 1) 'définit la partie gauche G
D = Mid(NV, TBE(X)) 'définit la partie droite G
NV = G & " " & D 'redéfinit la nouvelle valeur NV
Next X 'prochaine variable du tableau TBE
ESP = NV 'renvoie la nouvelle valeur NV
End Function