Sub GetNoms()
Dim dlg&: dlg = Cells(Rows.Count, 1).End(3).Row: If dlg < 3 Then Exit Sub
Dim Tbl, txt$, chn$, p1%, p2%, p3%, lig&
dlg = dlg - 2: Tbl = [A3].Resize(dlg, 2)
For lig = 1 To dlg
txt = Tbl(lig, 1)
p3 = InStrRev(txt, "_"): If p3 = 0 Then Exit Sub
p2 = InStrRev(txt, "-", p3): If p2 = 0 Then p2 = p3
p1 = InStrRev(txt, "@", p2)
chn = Mid$(txt, p1 + 1, p2 - p1 - 1)
p3 = InStrRev(txt, "_", p1): If p3 = 0 Then GoTo 1
p2 = InStrRev(txt, "-", p3): If p2 = 0 Then p2 = p3
p1 = InStrRev(txt, "@", p2)
chn = Mid$(txt, p1 + 1, p2 - p1 - 1) & " " & chn
1 Tbl(lig, 2) = chn
Next lig
Application.ScreenUpdating = 0
With [B3].Resize(dlg)
.ClearContents
.Value = Application.Index(Tbl, Evaluate("Row(" & "1:" & dlg & ")"), 2)
End With
End Sub