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 : 5939
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

{C# / C#.NET} SPLIT SQL SANS TABLE TEMPORAIRE
Voici une fonction qui permet de splitter les données contenues dans une seule colonne avec séparate...

{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...

{Visual Basic, VB6, VB.NET, VB 2005} SÉRIALISTION - DÉSERIALISATION DE TABLEAUX ET COLLECTIONS
Après la source pour la sérialisation - désérialisation d'une LameGrid (que j'ai amélioré d'ailleurs...

{Delphi} COMPOSANT TTHRESCOLLECTION
TThResCollection sert de conteneur de "ressources" non compilées avec l'application. Vous pouvez ...