Retourner chaîne de caractére split

Résolu
talking Messages postés 343 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 19 août 2006 - 2 févr. 2005 à 17:17
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 - 3 févr. 2005 à 00:06
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

mrdep1978 Messages postés 402 Date d'inscription jeudi 25 novembre 2004 Statut Membre Dernière intervention 7 juin 2009 6
2 févr. 2005 à 17:26
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
talking Messages postés 343 Date d'inscription dimanche 30 novembre 2003 Statut Membre Dernière intervention 19 août 2006 1
2 févr. 2005 à 17:32
Merci ça marche impécable

C'est justement la fonction que ej cherchais Ubound
0
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 29
3 févr. 2005 à 00:06
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
0