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

Résolu
MISO92 Messages postés 10 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 12 mai 2009 - 12 mai 2009 à 11:05
MISO92 Messages postés 10 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 12 mai 2009 - 12 mai 2009 à 23:15
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

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
12 mai 2009 à 11:24
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 ! ...)
3
MISO92 Messages postés 10 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 12 mai 2009
12 mai 2009 à 11:50
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
3
MISO92 Messages postés 10 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 12 mai 2009
12 mai 2009 à 13:57
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)
3
MISO92 Messages postés 10 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 12 mai 2009
12 mai 2009 à 14:34
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
3

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

Posez votre question
MISO92 Messages postés 10 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 12 mai 2009
12 mai 2009 à 15:42
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)
3
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
12 mai 2009 à 17:18
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)
3
MISO92 Messages postés 10 Date d'inscription vendredi 16 mai 2008 Statut Membre Dernière intervention 12 mai 2009
12 mai 2009 à 23:15
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
0
Rejoignez-nous