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

Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009
- - Dernière réponse : 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)
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
3
Merci
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 ! ...)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jmf0
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MISO92
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MISO92
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MISO92
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de MISO92
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
3
3
Merci
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)

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 127 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jmf0
Messages postés
10
Date d'inscription
vendredi 16 mai 2008
Statut
Membre
Dernière intervention
12 mai 2009
0
Merci
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
Commenter la réponse de MISO92