---Soumis par Dev Ashish---
Segmenter une chaîne de caractères en ses composantes individuelles.
(Q) J'ai une chaîne de caractères séparées par un séparateur (virgule, point, point virgule, espace). Comment extraire chaque valeur de cette chaîne?
(A) Vous pouvez utiliser ces deux fonctions fournies par Microsoft pour retrouver chaque valeur. Noter que ces fonctions sont écrites pour un cas où la virgule est utilisée comme séparateur, mais qu'elles peuvent être aisément être modifieés pour accomoder tout autre séparateur. Utiliser la procédure comme exemple.
'******************* Code Start ****************
Function CountCSWords(ByVal s) As Integer
'Compte le nombre de mots dans une chaîne avec virgules comme séparateur
Dim WC As Integer, Pos As Integer
If VarType(s) <> 8 Or Len(s) = 0 Then
CountCSWords = 0
Exit Function
End If
WC = 1
Pos = InStr(s, ",")
Do While Pos > 0
WC = WC + 1
Pos = InStr(Pos + 1, s, ",")
Loop
CountCSWords = WC
End Function
Function GetCSWord(ByVal s, Indx As Integer)
'Retourne le n-ième mot d'une chaîne spécifiée
Dim WC As Integer, Count As Integer
Dim SPos As Integer, EPos As Integer
WC = CountCSWords(s)
If Indx < 1 Or Indx > WC Then
GetCSWord = Null
Exit Function
End If
Count = 1
SPos = 1
For Count = 2 To Indx
SPos = InStr(SPos, s, ",") + 1
Next Count
EPos = InStr(SPos, s, ",") - 1
If EPos <= 0 Then EPos = Len(s)
GetCSWord = Trim(Mid(s, SPos, EPos - SPos + 1))
End Function
Sub Test()
Dim strAString As String
Dim I As Integer
Dim intCnt As Integer
strAString = "This,calls,the,two,functions,listed,above"
'Trouver combien de virgules sont présentes
intCnt = CountCSWords(strAString)
'Appeler la fonction pour retrouver les mots, un à un.
For I = 1 To intCnt
Debug.Print GetCSWord(strAString, I)
Next
End Sub
'******************* Code End ****************