Private Function SplitNumberChars(ByVal sStr As String, ByVal iCut As Long, Optional RemoveVbCrLf As Boolean = False, Optional SeparChar As String = "-", Optional bUseMnemonic As Boolean = False) As String()
Dim sRet As String, i As Long, lPos As Long, bCR As Boolean, sLine As String
' vire les VBCRLF et les ESPACE multiples générés
If RemoveVbCrLf Then
sStr = Trim$(Replace(sStr, vbCrLf, " "))
Do While InStr(1, sStr, " ") <> 0
sStr = Replace(sStr, " ", " ")
Loop
Else
sStr = Replace(sStr, vbCrLf, " " & vbCrLf)
End If
' traitement
sRet = vbNullString
Do While LenB(sStr) > 0
' retour chariot le plus loin
lPos = InStrRev(Left$(sStr, iCut + 2), vbCrLf)
If lPos = 0 Then
' y'en a pas? on cherche l'espace le plus loin
lPos = InStrRev(Left$(sStr, iCut + 1), " ")
bCR = False
Else
bCR = True
End If
If lPos = 0 Then
' lpos toujours à zéro? donc ligne non-sécable
If Len(sStr) > iCut Then
If RemoveVbCrLf Then
sRet = sRet & Left$(sStr, iCut - 1) & SeparChar & vbCrLf
sStr = SeparChar & Mid$(sStr, iCut)
Else
sRet = sRet & Left$(sStr, iCut) & SeparChar & vbCrLf
sStr = SeparChar & Mid$(sStr, iCut + 1)
End If
Else
sRet = sRet & sStr & vbCrLf
sStr = vbNullString
End If
Else
sLine = Left$(sStr, lPos - 1)
sStr = Right$(sStr, Len(sStr) - Len(sLine) - IIf(bCR, 2, 1))
sRet = sRet & sLine & vbCrLf
End If
Loop
' pas de UseMnemonic?....
If Not bUseMnemonic Then sRet = Replace(sRet, "&", "&&")
' retour
SplitNumberChars = Split(sRet, vbCrLf)
End Function