Private Sub Worksheet_Change(ByVal Target As Range)
Dim tablo, i&, s, ub%, ubmax%, resu(), decal%, j%
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
With [D5].CurrentRegion 'à adapter
.Columns(2).Resize(, Columns.Count - .Column).Delete xlToLeft 'RAZ
tablo = .Resize(, 2) 'matrice, plus rapide,au moins 2 éléments
For i = 1 To UBound(tablo)
s = Split(Application.Trim(tablo(i, 1))) 'Application.Trim => SUPPRESPACE
ub = UBound(s)
If ub > ubmax Then ubmax = ub: ReDim Preserve resu(1 To UBound(tablo), 0 To ubmax)
decal = 0
For j = 0 To ub
resu(i, j + decal) = Val(s(j))
If resu(i, j + decal) = 0 And Left(s(j), 1) = "(" Then resu(i, j + decal) = "": decal = decal - 1
Next j, i
'---restitution---
.Columns(2).Resize(, ubmax + 1) = resu
.Columns(2).Resize(, [D5].CurrentRegion.Columns.Count - 1).Borders.Weight = xlThin 'bordures
End With
Application.EnableEvents = True 'réactive les évènements
End Sub