Re,
Dans le fichier ci-joint, la macro ci-dessous execute ces operations :
1) Contrôle de la colonne AY : si un point-virgule est placé en dernier, il est effacé.
2) Passage en revue de toutes les lignes depuis la ligne 2, tant que la colonne A ET la colonne AY ne sont pas vides.
3) Séparation de lignes comme tu le désires.
Option Explicit
Sub Séparation()
Dim i As Integer, j As Integer, DerLig As Integer
Application.ScreenUpdating = False
DerLig = Range("AY" & Rows.Count).End(xlUp).Row
For j = 2 To DerLig
If Right(Range("AY" & j), 1) = ";" Then Range("AY" & j) = Left(Range("AY" & j), Len(Range("AY" & j)) - 1)
Next j
Range("AY2").Activate
Do Until ActiveCell = "" And Range("A" & ActiveCell.Row) = ""
On Error Resume Next
i = WorksheetFunction.Search(";", ActiveCell)
If i > 0 Then
Rows(ActiveCell.Row + 1).Insert shift:=xlDown
Range("A" & ActiveCell.Row & ":CF" & ActiveCell.Row).Copy Range("A" & ActiveCell.Row + 1)
Range("AY" & ActiveCell.Row) = Left(Range("AY" & ActiveCell.Row), i - 1)
Range("AY" & ActiveCell.Row + 1) = Right(Range("AY" & ActiveCell.Row + 1), Len(Range("AY" & ActiveCell.Row + 1)) - i)
End If
ActiveCell.Offset(1, 0).Activate
i = 0
Loop
End Sub
Amicalement.