Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim x As Long 'déclare la variable x (incrément de ligne)
Application.ScreenUpdating = False 'masque les changement à l'écran
With Sheets("depart") 'prend en compte l'onglet "depart" (à adapter...)
'définit la plage pl (cellules éditées de la colonne A (en partant de la ligne 3) de l'onglet "depart"
Set pl = .Range("A3:A" & .Cells(Application.Rows.Count, 1).End(xlUp).Row)
For Each cel In pl 'boucle 1 : sur toutes les cellules cel de la plage pl
If Left(cel.Value, 1) <> "-" Then 'condition : si le premier caractère de la cellule n'est pas "-"
cel.Cut cel.Offset(0, 3) 'coupe la cellulle et la colle dans la colonne D
Else 'sinon
cel.Offset(1, 0).Cut cel.Offset(0, 3) 'coupe la cellule en dessous et la colle dans la colonne D de cel
cel.Value = Replace(cel.Value, "-", "") 'supprime les "-"
cel.Offset(0, 2).Value = Split(cel.Value, ")", -1)(1) 'récupère la partie après ")" en colonne C
cel.Offset(0, 1).Value = "(" & Split(cel.Value, "(", -1)(1) 'récupère la partie après "(" en colonne B
cel.Offset(0, 1).Value = Split(cel.Offset(0, 1).Value, ")", -1)(0) & ")" 'récupère la partie avant ")" en colonne B
cel.Value = Split(cel.Value, "(", -1)(0) 'recupère la partie avant "(" en colonne A
End If 'fin de la condition
Next cel 'prochaine cellule de la boucle 1
dl = pl.SpecialCells(xlCellTypeLastCell).Row 'définit la dernière ligne de la plage pl
For x = dl To 3 Step -1 'boucle 2 : sur toutes les lignes de la plage (en partant de la dernière jusqu'à la troisième)
'si la cellule de la colonne D de la ligne est vide, supprime la ligne
If .Cells(x, 4).Value = "" Then Rows(x).Delete shift:=xlShiftUp
Next x 'prochaine ligne de la boucle 2
End With 'fin de la prise en compte de l'onglet "depart"
Application.ScreenUpdating = True 'affiche les changement à l'écran
End Sub