Function MultiSplit(ByVal sStr As String, bKeepSepar As Boolean, ParamArray aArray()) As String()
' sStr -> chaîne à parser
' bKeepSepar -> garder ou non les caractères de référence
' aArray -> tableau des références de taille variables
Dim sCol As New Collection
Dim sChar As String, sLeft As String
Dim bFound As Boolean
Dim aRes() As String
Dim i As Integer, j As Integer, NbCarac As Integer
i = 0
While LenB(sStr) > 0
i = i + 1
bFound = False
For j = LBound(aArray) To UBound(aArray)
NbCarac = Len(aArray(j))
sChar = Mid$(sStr, i, NbCarac)
If sChar = CStr(aArray(j)) Then bFound = True: Exit For
Next j
If bFound Then
sLeft = Left$(sStr, i - 1)
If LenB(sLeft) > 0 Then sCol.Add sLeft
If bKeepSepar Then sCol.Add sChar
sStr = Right$(sStr, Len(sStr) - (NbCarac + (i - 1)))
i = 0
ElseIf sChar = vbNullString Then
sCol.Add sStr
sStr = vbNullString
End If
Wend
ReDim aRes(sCol.Count - 1)
For i = 1 To sCol.Count
aRes(i - 1) = sCol.Item(i)
Next i
MultiSplit = aRes
Set sCol = Nothing
Erase aRes
End Function
' EXEMPLE D'UTILISATION
Private Sub Form_Load()
Dim a$(), i%
a = MultiSplit( _
"Function MultiSplit(ByVal sStr As String, bKeepSepar As Boolean, ParamArray aArray()) As String()", _
False, "(", ")", ",", "String", " ")
For i = 0 To UBound(a)
Debug.Print "_" & a(i) & "_"
Next i
End Sub