Bonjour,
Voici un premier jet par rapport à ce que tu montres mais il va y avoir encore bien d'autres cas qu'il va falloir traiter de façon particulière à mon avis. Donc, pour le test, tes chaines en colonnes A et le résultat en colonne B sur la feuille "Feuil1" :
Sub Test()
Dim Plage As Range
Dim Cel As Range
Dim Tbl1
Dim Tbl2
Dim Chaine As String
With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
For Each Cel In Plage
'recherche si une virgule existe dans la chaine
If InStr(Cel.Value, ",") = 0 Then
'le séparateur est la parenthèse ouvrante
Tbl1 = Split(Cel.Value, "(")
'Left permet de supprimer la parenthèse fermante et Trim supprime les éventuels espaces en début et fin de chaine
Chaine = Trim(Left(Tbl1(1), Len(Tbl1(1)) - 1) & " " & Tbl1(0))
Cel.Offset(, 1).Value = Chaine
Else
Tbl1 = Split(Cel.Value, ",")
Tbl2 = Split(Tbl1(1), "(")
Chaine = Trim(Left(Tbl2(1), Len(Tbl2(1)) - 1) & Tbl2(0)) & " " & Tbl1(0)
Cel.Offset(, 1).Value = Chaine
End If
Next Cel
End Sub