Fonction Split


Description  
Cette fonction qui est disponible à partir de la version Access 2000, permet de retourner un tableau à une dimension contenant les sous chaînes d'une expression en fonction d'un délimitateur bien précis. Le code qui suit permet donc de contourner le problème pour les utilisateurs d'Office 97 qui souhaiteraient utiliser cette fonction.
 
Synthaxe  

Variable_Tableau = fSplit(expression[, delimiter[, compare]])

La synthaxe de la fonction fSplit comprend les éléments suivants :

Eléments Description
expression Expression de chaîne contenant des sous-chaînes et des séparateurs. Si l'argument expression est une chaîne de longueur nulle (""), la fonction fSplit renvoie un tableau vide, c'est à dire un tableau ne comportant ni éléments ni données.
delimiter Facultatif. Caractère de chaîne utilisé pour identifier les limites de sous-chaîne. S'il est omis, le caractère espace (" ") est utilisé comme séparateur par défaut. Si l'argument delimiter est une chaîne de longueur nulle, un tableau à un élément contenant toute la chaîne expression est renvoyé.
compare Facultatif. Valeur numérique indiquant le type de comparaison à utiliser lors de l'évaluation des sous-chaînes. Reportez-vous à la section Valeurs.

Section Valeurs :
L'argument compare prend les valeurs suivantes

Constante Valeur Description
vbUseCompareOption -1 Effectue une comparaison à l'aide de la valeur de l'instruction Option Compare.
vbBinaryCompare 0 Effectue une comparaison binaire.
vbTextCompare 1 Effectue une comparaison de texte.
vbDatabaseCompare 2 Micorosft Access seulement. Effectue une comparaison basée sur des informations contenues dans votre base de données.
 
Exemple  

Cet exemple permet de retourner dans un msgBox la valeur retourner par la fonction fSplit :

Function fSplit_Exe()

    Dim TabfSplit As Variant
    Dim i%
    Dim strMsg As String

    TabfSplit = fSplit("toto-tata-titi", "-")
    If IsArray(TabfSplit) = False Then
        strMsg = "L'élément retourné est :" & vbCrLf
        strMsg = strMsg & vbCrLf & vbTab & TabfSplit
    Else
        strMsg = "Les éléments retournés sont :" & vbCrLf
        For i = 0 To UBound(TabfSplit)
            strMsg = strMsg & vbCrLf & vbTab & TabfSplit(i)
        Next
    End If
    MsgBox strMsg

End Function

Cet exemple retournera le msgbox suivant :

Image représentant le résultat de la fonction

 
Code de la fonction  


Public Function fSplit(expression As String, _
    Optional delimiter As String = " ", _
    Optional compare As VbCompareMethod = vbBinaryCompare) _
    As Variant

Dim L%, nb%, p%
Dim strResult As String
Dim varResult() As Variant

If IsNull(expression) Then
    fSplit = Null
Else
    strResult = expression
    L = Len(delimiter)
    If IsNull(delimiter) Or delimiter = "" Then
         fSplit = expression
     Else
         p = InStr(1, expression, delimiter, compare)
         If p = 0 Then
             fSplit = expression
         Else
             Do While p > 0
                 nb = nb + 1
                 ReDim Preserve varResult(nb)
                 varResult(nb - 1) = left(strResult, p - 1)
                 strResult = Mid(strResult, p + L)
                 p = InStr(1, strResult, delimiter, compare)
                 If p = 0 Then varResult(nb) = strResult
             Loop
             fSplit = varResult()
         End If
    End If
End If

End Function

 

 

Retour haut de page

Auteur : Jessy SEMPERE