Probléme avec la fonction SPLIT

Résolu
Sephirothgex Messages postés 8 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 20 décembre 2011 - 19 déc. 2011 à 16:06
Sephirothgex Messages postés 8 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 20 décembre 2011 - 20 déc. 2011 à 14:31
Bonjour

J'ai un problème avec la fonction SPLIT
Je split 2 variable string sur une ";" dans 2 variable
j'aimerais les stoqué l'une a la suite de l'autre dans une variable string avec des caractaires entre.

Mais rien y fais, à la dernière valeur de la premier variable le stockage ce stop comme si il y a vais un caractère de fin de chaine.

        cRepertoire = Trim(cRepertoire)
        str_Desc = cRepertoire.Split(";")
        str_valeur = cRepertoire.Split(";")
        'str_valeur(str_valeur.Length - 1).TrimEnd("", str_valeur(str_valeur.Length - 1))

        For int_j = 0 To str_Desc.Length - 1

            str_valeur(int_j) = Trim(str_valeur(int_j))

            str_text = str_text & " \par " & "{\fs21 " & str_valeur(int_j) & str_Desc(int_j)

        Next int_j

        str_text = str_text & " \fs18 \tab ttttt \par }"

        RichTextBox1.Rtf = str_text


voilà ce que vaux à la fin

str_text : "{\rtf1 \fs18 \tab Entretien \par \par {\fs21 12Vervier frein \par {\fs21 1300pneu \par {\fs21 14pneu2 \par {\fs21 5 \par {\fs21 9

9 étant la dernière valeur dans le tableau de "str_valeur"

en attendant vos commentaire merci

10 réponses

Sephirothgex Messages postés 8 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 20 décembre 2011
20 déc. 2011 à 14:31
Oui c'est des variable pour aller chercher les variable dans mon fichier .ini

En tout cas j'ai trouvé une solution pour mon problème, je rajoute une variable on utilisée dans mes 2 tableaux
Et lors de la lecture des tableaux, je stop la lecture 1 variable avant la dernière qui me bloque.

C'est nul comme solution mais sa marche.

Merci pour toute les personne qui m'ont aidé.

Sephirothgex
3
Sephirothgex Messages postés 8 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 20 décembre 2011
19 déc. 2011 à 16:13
Je rajoute pour qu'on comprenne mieux
Il me manque dans "str_text"

la dérniére valeur de "str_Desc" et les "\fs18 \tab ttttt \par }" qui suit
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
19 déc. 2011 à 16:55
Salut

L'inverse de Split est Join, comme dit dans l'aide de Split

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Sephirothgex Messages postés 8 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 20 décembre 2011
19 déc. 2011 à 20:00
Merci pour t'as réponse

Mais le problème c'est que je met la valeur de str_valeur(X) suivit de la valeur str_Desc(X) plus des caractères pour configurer les ligne que je vais afficher dans ma RichTextBox1

avec join je ne saurais pas insérer tout ça je crois
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
20 déc. 2011 à 04:21
J'avais lu en travers
A priori, comme str_valeur et str_Desc contiennent la même chose, pourquoi avoir voulu utiliser deux variables ?

Alors une boucle, oui.
Es-tu sûr que str_Desc.Length renvoie le dernier élément d'un tableau ?
Regarde plutôt du côté de UBound

Suis ce que ton programme fait, ligne à ligne et vérifie le contenu des tes variables.
Méthode de débogage :
- F9 sur une ligne de code; elle change de couleur
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 223
20 déc. 2011 à 07:33
Bonjour,

Ou j'ai mal compris le but recherché, ou les explications ne sont pas très claires, car, comme jack, j'ai immédiatement pensé à Join !
Tu "éclates" par split ===>> tu as un array (et je vois mal pourquoi 2)
Tu en modifies les éléments à ton gré
Tu ajoutes ce que tu veux ajouter (" \fs18 \tab ttttt \par }", si j'ai bien compris) au dernier élément
Tu utilises Join en lui passant le nouveau séparateur de ton choix.
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Sephirothgex Messages postés 8 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 20 décembre 2011
20 déc. 2011 à 09:02
merci pour les réponce

c'est vrais en regardant je remarque que c pas trés claire en faite

str_Desc = cRepertoire.Split(";")
str_valeur = cRepertoire2.Split(";")
str_Desc et str_valeur son des valeur différent j'ai oublier le 2 à cRepertoire2

désolé
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 6
20 déc. 2011 à 09:23
Bonjour,

Un petit exemple de principe

Public Class Form1
  Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim i As Integer
    Dim source = " un; deux"
    Dim separateur As String = ";"
    Dim t() As String = Split(source, separateur, , 1)
    Dim av As String = "Avant "
    Dim ap As String = " Après"
    Dim v As String = ""
    For i = 0 To UBound(t)
      v = v & av & Trim(t(i)) & ap & vbCrLf
    Next i
    TextBox1.Text = v
    'Avant un Après
    'Avant deux Après
  End Sub
End Class


Cordialement, Joe.
0
Sephirothgex Messages postés 8 Date d'inscription jeudi 9 juillet 2009 Statut Membre Dernière intervention 20 décembre 2011
20 déc. 2011 à 13:33
Merci grasse à ton exemple que j'ai recopier dans mon programme, j'ai remarqué que sa fonctionne très bien.

J'ai donc été voir plus haut et en faite je rapatrie des données d'un fichier .INI

        cRubrique = Famille.Text
        cKey = Type.Text
        istat = Get_Private_Profile_String(cRubrique, cKey, "0", cRepertoire, cIniFile)
        cRepertoire = Trim(cRepertoire)
        str_valeur = cRepertoire.Split(";")


Et même avant de faire la fonction split, en regardant la valeur de "cRepertoire" je remarque que le dérnier " n'existe pas
voilà ce que je vois en faisant une pause dans le programme:

cRepertoire = "12;1300;14;5;9

je me demande si il ne manquerais pas un dernier caractère à la string un ".

Désolé si je suis pas claire

En tout cas merci pour ton exemple
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 6
20 déc. 2011 à 14:10
Bonjour, suite...

Non... regarde mon exemple, volontairemet comme tu l'as fait, je n'ai pas mis de point-virgule à la fin, et pourtant SPLIT prend bien le dernier mot (le second) "deux"...

Ça :

cKey = Type.Text
istat = Get_Private_Profile_String(cRubrique, cKey, "0", cRepertoire, ccIniFile)


Je ne sais pas ce que ça veut dire !
"cKey" est peut être une variable qui prend le texte d'un objet nommé Type, cet objet est peut être un textBox ?
Ensuite la variable "istat", je présume que c'est une variable, reçoit je ne sais quoi, je ne connais pas ce vocabulaire... peut être est-ce une variable indicée, peut être est-ce une fonction, qui sait...

Cordialement, Joe.
0
Rejoignez-nous