Convertir une chaine en un tableau de chaine (en tenant compte des retours chariot)

Contenu du snippet

Function StringToCharArray(ByVal sString As String, Optional ByVal bSplitVbCrLf As Boolean = True)  As String()
'sString            chaîne à  transformer en tableau
'bSplitVbCrLf       doit-on  couper les retours chariot en 2 ou non. rappel : VBCRLF = CHR(13) &  CHR(10)
'StringToCharArray  retourne le tableau  résultat, commence à 0
    
    If LenB(sString) Then
        Dim i As Long, saResult() As String
        If bSplitVbCrLf Then
'           on doit couper? ok  c'est le plus pratique
            ReDim saResult(Len(sString) - 1)
            For i = 1 To LenB(sString) - 1 Step 2
                saResult((i - 1) / 2) = MidB$(sString, i, 2)
            Next i
        Else
'           pas couper, on va vérifier à chaque fois s'il n'y a  pas un 10 après un 13
            Dim j As Long, sChar As String
            j = 0
            For i = 1 To Len(sString)
                sChar = Mid$(sString, i, 1)
                ReDim Preserve saResult(j)
                If sChar = vbCr Then
'                   si 10  après, on ne coupe pas
                    If Mid$(sString, i + 1, 1) = vbLf Then
                        saResult(j) = vbCrLf
                        i = i + 1
                    Else
'                       carac  classique, on sauve
                        saResult(j) = sChar
                    End If
                Else
'                   carac  classique, on sauve
                    saResult(j) = sChar
                End If
                j = j + 1
            Next i
        End If
'        retour
        StringToCharArray = saResult
        Erase saResult
    End If
End Function


Compatibilité : VB6, VBA

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.