---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 ****************