Découpage d'une chaîne de caractère après un saut de ligne [Résolu]

Signaler
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009
-
MISO92
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009
-
Bonjour, je souhaite effectuer un découpage d'une chaîne de caractères après un saut de ligne et renvoyer la chaine de caractère restante.

J'utilise pour mon test la fonction   textt1 = Mid(tutu, 130, lentext - 1) mais celle-ci m'oblige à respecter un certains nombres de caractères.

Comment puis-je faire pour récupérer la position de ma seconde chaine sachant quelle est séparée par un saut de ligne? '(à partir de {/rtf1)

7 réponses

Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
Bonjour,

la fonction Instr te retourne la 1ère position (appelons-la pos), dans une chaîne, d'une chaîne spécifiée (un vbcrlf dans ton cas)
Le fonction Mid  te permet de lire dans une chaîne de racractères à compter d'une position déterminée (Pos + 3 dans ton cas puisque vbcrlf est une chaine de 2 caractères)
Mid et Instr à lire donc dans ton aide en ligne ...


(Je préfère te guider ainsi plutôt que d'écrire à ta place un code aussi simple ! ...)
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009

Ok j'ai déjà regardé dans la doc les informations relatives à ces deux fonctions.

Seul petit problème la fonction Instr n'accepte pas en "cha (10)" , mais je crois que tu as répondu à mon problème, il s'agit dans ce cas d'indiquer la constante et non le valeur hexadécimale.

J'essai ca et je te tiens au jus
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009

Bah écoute j'ai essayé comme tu m'as dit mais je n'ai pas  réussi à obtenir mon résultat

mon code est le suivant:
Textpos = InStr(1, vbCrLf, tutu)
MsgBox (Textpos)
textt1 = Mid(tutu, 3, lentext - 1)
MsgBox (textt1)
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009

Mon problème est en partie résolu, j'obtiens bien ma chaîne de caractères souhaités. Il ne me reste plus qu'à supprimer les lignes
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009

Voici ma solution finale, ce n'est pas très propore mais cela à le mérite de fonctionner.

Textpos = InStr(1, tutu, vbCrLf)
textt1 = Mid(tutu, Textpos, lentext - 1)
Textpos = InStr(3, textt1, vbCrLf)
textt1 = Mid(textt1, Textpos, lentext - 1)
Textpos = InStr(3, textt1, vbCrLf)
textt1 = Mid(textt1, Textpos, lentext - 1)
textt1 = Mid(textt1, 3, lentext - 1)
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
Euh...

pas très propre du tout, même !

1) je t'avais parlé de pos + 2, non ? (cequi te permettait d'extraire après vbcrlf au lieu de recommencer un instr)
2) finalement, tu veux extraire jusqu'à un  2ème vbcrlf (-ce dont tu avais oublié de préciser dans ton 1er message) ...
Tu as alors la solution toute bête d'utiliser la fonction split, faite pour celà !

3) mais si tu ne veux pas de la fonction split, tu peux aussi :

  tutu = "aaaaaa" & vbCrLf & "bbbbbb" & vbCrLf & "cccccc"
  titi = Mid(tutu, InStr(tutu, vbCrLf) + 2)
  MsgBox Left(titi, InStr(titi, vbCrLf) - 1)
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009

Non étant donné la mise en page de mon texte affiché dans la msgBox, je veux en réalité extraire le 5ème vbCrlf.

J'essaierai ton bout de code demain au boulot. Merci pour ces conseils