Sub test()
Dim tablo() As Variant
Dim tablofinal() As Variant
With ActiveSheet
Fin = .Range("A" & .Rows.Count).End(xlUp).Row
tablo = .Range("A2:G" & Fin).Value
Taillefinale = UBound(tablo, 1)
For i = LBound(tablo, 1) To UBound(tablo, 1)
If tablo(i, 7) <> "" Then
Taillefinale = Taillefinale + UBound(Split(tablo(i, 7), ";")) - 1
End If
Next i
ReDim tablofinal(1 To Taillefinale, 1 To 7)
indFinal = 1
For indInit = LBound(tablo, 1) To UBound(tablo, 1)
If tablo(indInit, 7) = "" Then
For j = 1 To 7
tablofinal(indFinal, j) = tablo(indInit, j)
Next j
indFinal = indFinal + 1
Else
nblignes = UBound(Split(tablo(indInit, 7), ";"))
For k = 0 To nblignes - 1
For j = 1 To 6
tablofinal(indFinal, j) = tablo(indInit, j)
Next j
tablofinal(indFinal, 7) = Split(tablo(indInit, 7), ";")(k)
indFinal = indFinal + 1
Next k
End If
Next indInit
End With
With Sheets("Result")
.Range("A2").Resize(UBound(tablofinal, 1), UBound(tablofinal, 2)) = tablofinal
End With
End Sub