Retourner chaîne de caractére split

Résolu
Signaler
Messages postés
343
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
19 août 2006
-
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
-
Voilà j'ai une variable du style :
test = "Str1|Sti1|Sto1|Sta1,Str2|Sti2|Sto2|Sta1,etc"
et moi je voudrais retourner un par un:
Str1
Sti1
STo1
etc

moi ce que j'avais pensé faire c'est faire un split sur "," et faire une for qui va faire un split sur "|" sur chaque élément

En fait ce que je voudrais savoir c'est est-ce qu'il existe une fonction qui me permettrait de retourner le nombre d'élément dans une chaine de caractéres entourés par ","

Merci d'avance

3 réponses

Messages postés
402
Date d'inscription
jeudi 25 novembre 2004
Statut
Membre
Dernière intervention
7 juin 2009
5
Tu peux utiliser la fonction UBound, qui renvoie l'indice max d'un tableau
Un exemple vaut mieux qu'un long discours (je pense)

Dim Test as String
Dim ls_SplitVirgule() as String
Dim ls_SplitBarre() as String
Dim li_Index as Integer
Dim li_IndexBarre as Integer
Test = "Str1|Sti1|Sto1|Sta1,Str2|Sti2|Sto2|Sta1,etc"
ls_SplitVirgule = split(Test, ",")
For li_Index = 0 to Ubound(ls_SplitVirgule)
ls_SplitBarre = split(ls_SplitVirgule(li_Index), "|")
For li_IndexBarre = 0 to Ubound(ls_SplitBarre)
Debug.Print ls_SplitBarre(li_IndexBarre)
Next li_IndexBarre
Next li_Index
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
343
Date d'inscription
dimanche 30 novembre 2003
Statut
Membre
Dernière intervention
19 août 2006
1
Merci ça marche impécable

C'est justement la fonction que ej cherchais Ubound
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
ET ne pourrais tu pas plutot faire un replace des "," par des "|" dnas la chaine de base, pui sun split sur les "|", ce serait plus rapide que ton double splittage dans une boucle for !! Plus rapide à executer et aussi a coder, car cela ne fait qu'une seule ligne de code (ci-dessous en gras)

Dim Test As String,Res() As String, i As Long

Test = "Data1|Data2,Data3|Data4"
Res = Split(Replace$(Test, ",", "|"), "|")
For i = lbound(Res) to Ubound(Res)
Debug.Print Res(i)
Next

Christophe R