Les Snippets

Connexion

Découper une chaîne de caractères d'après un séparateur vers une collection

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 28/07/2008 16:26:24 et initié par PCPT [Liste]
Vue : 2067
Catégorie(s) : Compression & Split, Chaîne de caractères
Langages dispo pour ce code :
- VB6, VBA



Langage : VB6 , VBA
Date ajout : 28/07/2008
Posté par PCPT [Liste]
Function SplitToCollection(ByVal sExpression As String, ByVal sSepar As String) As Collection
'sExpression    chaîne à  spliter
'sSepar         caractère(s) de  séparation
'Retour         retourne un  collection
    If (VBA.Strings.LenB(sExpression) = 0) Or  (VBA.Strings.LenB(sSepar) = 0) Then Exit  Function
    
    Dim oColl As New Collection
    Dim As Long, lPos As Long, sLine As String
    Do
        lPos = VBA.Strings.InStr(1, sExpression, sSepar)
        If lPos Then
            oColl.Add VBA.Strings.Left$(sExpression, lPos - 1)
            sExpression = VBA.Strings.Mid$(sExpression, lPos +  VBA.Strings.Len(sSepar))
        End If
    Loop Until lPos = 0
    
    If VBA.Strings.LenB(sExpression) Then  oColl.Add sExpression
    
    Set SplitToCollection = oColl
    Set oColl = Nothing
End Function
' NB : les préfixes  "VBA.Strings." sont facultatifs


'   ---------------------
'    EXEMPLE D'UTILISATION
'    ---------------------
Private Sub Form_Load()
    Dim s1 As Variant, s2 As Variant
    
'    -----------
'   EXEMPLE n°1
'   -----------
    Const EXEMPLE1 = "je suis une chaîne entrecoupée d'espaces"
    Dim oRes1 As Collection
    Set oRes1 = SplitToCollection(EXEMPLE1,  " ")
    Debug.Print EXEMPLE1
    Debug.Print "===================================="
    For Each s1 In oRes1
        Debug.Print s1
    Next s1
'   ----------------------
    
    
    Debug.Print vbCrLf & "************************************" & vbCrLf
    
'    -----------
'   EXEMPLE n°2
'   -----------
    Const EXEMPLE2 = _
    "Entet1" & vbTab & "Entet2" & vbTab & "Entet3" & vbTab & "Entet4" & vbTab & "Entet5" & vbCrLf & _
    "a" & vbTab & "b" & vbTab & "c" & vbTab & "d" & vbTab & "e" & vbCrLf & _
    "1" & vbTab & "2" & vbTab & "3" & vbTab & "4" & vbTab & "5" & vbCrLf & _
    "6" & vbTab & "7" & vbTab & "8" & vbTab & "9" & vbTab & "10"
    Dim oRes2 As Collection, oRes3 As Collection
    Set oRes2 = SplitToCollection(EXEMPLE2,  vbCrLf)
    
    Debug.Print EXEMPLE2
    Debug.Print "===================================="
    For Each s1 In oRes2
        Debug.Print s1
        Debug.Print "    --------------------------------"
        Set oRes3 = SplitToCollection(s1,  vbTab)
        For Each s2 In oRes3
            Debug.Print "    " & s2
        Next s2
        Debug.Print "----"
    Next s1
End Sub

Remarque :
ce snippet est essentiellement pour VB5. en effet pas de split.
il est néanmoins également utilisable en VB6 et VBA. utile pour le parsing de fichiers séquencés par exemple

Snippets en rapport avec : Découper, Séparateur, Split, Chaîne, Collection



Codes sources en rapport avec : Découper, Séparateur, Split, Chaîne, Collection

{Visual Basic, VB6, VB.NET, VB 2005} SPLITEUR DE FICHIERS (BINAIRES OU NON) AVEC INTERFACE GRAPHIQUE SOIGNÉE.
Ce source permet de découper/recomposer tous les types de fichiers. Pas de révolution sur ce type ...

{C / C++ / C++.NET} DECOUPAGE CHEMIN FICHIER (FORUM)
Suite a une demande sur le forum, voila un code qui permet de découper le chemin d'un fichier en so...

{ASP / ASP.NET} DÉCOUPER UNE CHAINE DE CARACTÈRE
Voici une petite fonction qui sert à découper une chaîne de caractère, pour l'utiliser, passer en pa...

{C# / C#.NET} DÉCOUPER UNE CHAÎNE
Vous vous retrouvrez devant une chaîne que vous aimeriez couper ? Voici la solution....

{C / C++ / C++.NET} ADDSLASH & REMOVESLASH ( CHAINE DE CARACTÈRE )
Sous VB il y à plusieurs petit exemple qui montre comment ajouter et/ou enlever une barre oblique(\)...

{Visual Basic, VB6, VB.NET, VB 2005} FONCTION SPLIT DE VB 6 POUR VB4/5 ET LOTUSSCRIPT
Utilisation : Exemple1: txtData = "Nom;Prenom;Rue;CodePostal;Ville" sField = RSSplit(txtData, ";"...

{Visual Basic, VB6, VB.NET, VB 2005} SCRIPT EN VBS QUI DÉCOUPE UN FICHIER EN PLUSIEURS FICHIERS DE X LIGNES.
Ce script permet de découper un fichier en plusieurs fichiers de x lignes. Je l'utilise assez souve...

{Flash} DETECTEUR AUTOMATIQUE DE MEDIA AS3 - AS2
je viens de la finir ! je m'en sers pour trier mes médias qui viennent d'un xml unique... ça peut se...

{ASP / ASP.NET} CUSTOM USER CONTROL COLLECTION
Le but de Custom user control est de pouvoir afficher un ou plusieurs messages suivant : - la cultu...

{PHP} GÉNÉRER UNE CHAÎNE ALÉATOIRE SANS BOUCLE NI CRYPTAGE (MD5 OU AUTRE)
Jusqu'à présent tous les générateurs de clé que j'ai trouvé utilisait une boucle ou les fonction sha...