Split

Description

Voici une fonction equivalente a la fonction SPLIT de VB6 ...
Je penses que de part sa simplicité d'utilisation et sa fiabilité, elle va se rendre tres utile pour les utilisateurs de VB6 et VB4 qui galere souvent pour decouper des chaines de characteres selon un delimiteur bien definit...

Source / Exemple :


Private Sub Command1_Click()
Dim MyTab1() As String
'Stockage des deux entrées de texte dans des variables de type string
mt = Text1.Text
sp = Text2.Text

'Verifie que tous les champs soit correctement renseigné
If Len(Text2.Text) = 0 Or Len(Text1.Text) = 0 Then Exit Sub

'Appel la fonction qui va permettre de separrer la chaine de charactere selon un separateur definit
MyTab1 = SplitBis(Text1.Text, Text2.Text)

'Ce bout de code est facultatif... Il permet juste de visualiser le resultat
For i = 0 To UBound(MyTab1)
resul = resul + MyTab1(i) & vbNewLine
Next i

Text3.Text = resul

End Sub

Private Function SplitBis(Chaine As String, Separateur) As Variant
'Definition des variables utlisé pour rendre le code plus rapide
Dim frase As String
Dim mem As Integer
Dim mot As String
Dim MyTab() As String
Dim temp As String

On Error Resume Next
n = 0

'Verifie qu'il exite bien des element
If Trim(Text1.Text) <> "" Then
temp = Chaine & Separateur
Else: MsgBox "La Chaine ne peut pas etre traité": Exit Function
End If

'Boucle permattant de compter le nombre d'occurence dans la chaine de charactere
For i = 0 To Len(temp)
If InStr(1, temp, Separateur) = "0" Then GoTo fin
temp = Mid$(temp, InStr(1, temp, Separateur) + 1)
n = n + 1
fin:
Next i

frase = LTrim(Chaine) & Separateur
m = 0

'Boucle permattant de separer les elements selon les criteres choisi soit le separateur
For i = 0 To n - 1
mem = InStr(1, frase, Separateur)
mot = Mid$(frase, 1, mem - 1)
frase = Mid$(frase, mem + Len(Separateur))

mot = Trim(mot)
'Verifie que le mot n'est pas du vide  (vbnullstring)
If Len(mot) = 0 Then test = False Else test = True

If test = False Then GoTo f1
'Redimenssione le tableau pour ne pas utiliser inutillment des espaces du tableau
ReDim Preserve MyTab(0 To m)

'Stocke le mot dans le tableau
MyTab(m) = mot
mot = vbNullString
m = m + 1
f1:
Next i

'Retourne le resultat de la fonction
SplitBis = MyTab

End Function

Conclusion :


Maintenant a vous d'en juger :]
Il y surement des moyens d'optimiser le code ...
J'attends vos remarques :]

Codes Sources

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.