Private Sub DECOUPE_Click()
découpe_en_lignes_de_C_caractères C:=70
End Sub
Sub découpe_en_lignes_de_C_caractères(C%)
Dim i&, j&, o(), sDat$(), Tmp
With Sheets("original") 'feuille de données
o = .Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)).Value
End With
ReDim sDat(1 To 1)
For i = 1 To UBound(o, 1) - 1
If o(i, 1) <> "" Then '***
Tmp = CL_C(CStr(o(i, 1)), C)
For j = 0 To UBound(Tmp, 2)
sDat(UBound(sDat)) = Tmp(0, j)
ReDim Preserve sDat(1 To 1 + UBound(sDat))
Next
End If '***
Next
With Sheets("souhait") 'feuille de résultats
.Range(.Cells(1, 1), .Cells(Rows.Count, 1).End(xlUp)).ClearContents
.Cells(1, 1).Resize(UBound(sDat), 1).Value = WorksheetFunction.Transpose(sDat)
End With
End Sub
Private Function CL_C(rChn$, nCar%)
Dim i&, j%, k%, s$, t$(), x
ReDim t(1, 0)
If rChn <> "" Then
s = Replace(rChn, ",", ",#")
x = Split(s, "#")
Do While i < UBound(x)
ReDim Preserve t(1, j)
Do While Len(t(0, j)) + Len(x(i)) <= WorksheetFunction.Max(nCar - 0, Len(x(i))) And i < UBound(x)
t(0, j) = t(0, j) & x(i)
i = i + 1
k = j
Loop
j = j + 1
Loop
If Len(t(0, k)) + Len(x(UBound(x))) > nCar Then k = k + 1
If i = UBound(x) Then ReDim Preserve t(1, k): t(0, k) = t(0, k) & x(UBound(x))
End If
CL_C = t
End Function