Private Function GetSplitData(ByVal sSrc As String, ByRef aArray() As Variant, Optional ByVal bLongValue As Boolean = False, Optional ByRef sSepar As String = ";") As Long
Dim aString() As String
aString = Split(sSrc, sSepar)
If UBound(aString) = 0 Then
GetSplitData = 0
Else
Dim i As Long
ReDim aArray(UBound(aString))
If bLongValue Then
For i = 0 To UBound(aString)
aArray(i) = Val(aString(i))
Next i
Else
For i = 0 To UBound(aString)
aArray(i) = aString(i)
Next i
End If
GetSplitData = UBound(aString) + 1
Erase aString
End If
End Function
' EXEMPLE D'UTILISATION
'
Private Sub Form_Load()
Const sSample1 As String = "voici;une;phrase;séparée;par;des;point-virgules"
Const sSample2 As String = "1;215;6;7;895;200;41"
Dim aResult() As Variant, lRet As Long, i As Long
Dim sMess As String, lSum As Long
lRet = GetSplitData(sSample1, aResult())
sMess = sSample1 & vbCrLf
If lRet > 0 Then
For i = 0 To lRet - 1
sMess = sMess & vbCrLf & aResult(i)
Next i
MsgBox sMess
End If
lRet = GetSplitData(sSample2, aResult(), True)
sMess = sSample2 & vbCrLf
lSum = 0
If lRet > 0 Then
For i = 0 To lRet - 1
sMess = sMess & vbCrLf & CStr(aResult(i))
lSum = lSum + aResult(i)
Next i
MsgBox sMess & vbCrLf & "total = " & CStr(lSum)
End If
Unload Me
End Sub