Probléme avec la fonction SPLIT [Résolu]

Signaler
Messages postés
8
Date d'inscription
jeudi 9 juillet 2009
Statut
Membre
Dernière intervention
20 décembre 2011
-
Messages postés
8
Date d'inscription
jeudi 9 juillet 2009
Statut
Membre
Dernière intervention
20 décembre 2011
-
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

Messages postés
8
Date d'inscription
jeudi 9 juillet 2009
Statut
Membre
Dernière intervention
20 décembre 2011

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
Messages postés
8
Date d'inscription
jeudi 9 juillet 2009
Statut
Membre
Dernière intervention
20 décembre 2011

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
8
Date d'inscription
jeudi 9 juillet 2009
Statut
Membre
Dernière intervention
20 décembre 2011

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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
234
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
Messages postés
8
Date d'inscription
jeudi 9 juillet 2009
Statut
Membre
Dernière intervention
20 décembre 2011

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é
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
5
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.
Messages postés
8
Date d'inscription
jeudi 9 juillet 2009
Statut
Membre
Dernière intervention
20 décembre 2011

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
Messages postés
728
Date d'inscription
samedi 4 avril 2009
Statut
Membre
Dernière intervention
30 mars 2014
5
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.