Récupérer un texte entre 2 caractères

Résolu
cs_veler
Messages postés
723
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
23 janvier 2013
- 6 nov. 2007 à 10:09
cs_veler
Messages postés
723
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
23 janvier 2013
- 6 nov. 2007 à 11:25
Bonjours,

dans un fichier ou textbox, j'ai une ligne dans lequel j'ai un texte entre guillmet. Comment faire pour récupérer le texte qui est entre ces guillmet? J'y arrive pas.

Merci
a+

ebaudoux@club.fr
http://www.velersoftware.fr.nf

12 réponses

mstarsup5
Messages postés
527
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
10 octobre 2013
1
6 nov. 2007 à 11:07
veler, une fois que t'as la première position, avec substring garde juste la chaine qui commence du premier " jusqu'à la fin.
Ensuite, calcule la 2ème position avec indexof, et enfin, extraits du début de ta seconde chaine jusqu'à ton 2ème "
3
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
6 nov. 2007 à 11:18
Testé et approuvé :

        pos1 = ligne.IndexOf(""""c)
        pos2 = ligne.IndexOf(""""c, pos1 + 1)
        If (pos1 > 0) And (pos2 > 1) Then
            MessageBox.Show(ligne.Substring(pos1, pos2 - pos1))
        End If

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
6 nov. 2007 à 10:37
Tu fais une recherche pour récupérer l'index du premier " avec IndexOf
tu refais pareil mais en partant de l'index trouvé pour trouver le suivant.

Ensuite avec substring, tu récupère à partir du premier index et sur une longueur de Index2-Index1

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
cs_veler
Messages postés
723
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
23 janvier 2013
3
6 nov. 2007 à 10:51
Ok, je vais essayé et je te tiens au courrant^^

ebaudoux@club.fr
http://www.velersoftware.fr.nf
0

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

Posez votre question
mstarsup5
Messages postés
527
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
10 octobre 2013
1
6 nov. 2007 à 11:00
Bizarre, ça marche pas substring et indexof chez moi (j'utilise vb6, c'est peut etre pour ça).
Si ça marche pas, utilise un mid$ à la place du substring:
mid$ (Tachaine, indexdepart, longueur)
et un instr à la place du indexof:
instr (Tachaine, "x")   ,  "x" étant le caractère dont tu recherches la position.

Je vais vérifier quand même encore pour le substring et le indexof, ça me chagrine que ça ne marche pas :x
0
cs_veler
Messages postés
723
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
23 janvier 2013
3
6 nov. 2007 à 11:04
Salut, j'ai récupérer le premier index:
                Position = ligne.IndexOf("""")

mais alors le second....:

                Position2 = ligne.IndexOf(Position)

nn, c'est pas ça....

                Chaine = Microsoft.VisualBasic.Left(ligne, position)
                Position2 = Chaine.IndexOf("""")

mmmm, ça va pas non plus...

ebaudoux@club.fr
http://www.velersoftware.fr.nf
0
mstarsup5
Messages postés
527
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
10 octobre 2013
1
6 nov. 2007 à 11:05
Je viens de regarder, ça marche bien en .NET et VB 2005.
Si tu programmes en vb6, utilise les deux que j'ai données :)
0
cs_veler
Messages postés
723
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
23 janvier 2013
3
6 nov. 2007 à 11:08
heins? ce que je viens d'envoyé? je suis en VB 2005, mmm, attendez, si j'ai cette chaine là:

Text "Ce texte est affiché dans la console"

c'est normale qu'il me renvoi 5 (ça, c'est le premier index, normale) et -1 (-1 étant l'index du second ")?

ebaudoux@club.fr
http://www.velersoftware.fr.nf
0
cs_veler
Messages postés
723
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
23 janvier 2013
3
6 nov. 2007 à 11:12
Au total, si je fais ça:

                Position = ligne.IndexOf("""")
                chaine = Microsoft.VisualBasic.Left(ligne, Position)
                Position2 = chaine.IndexOf("""")
                Dim m As String = Microsoft.VisualBasic.Mid(ligne, Position, Position2)
                MsgBox(m)

ça me dit que Position2 ne doit pas être inférieur ou égale à 0 (normale, ici, il fait -1)

ebaudoux@club.fr
http://www.velersoftware.fr.nf
0
mstarsup5
Messages postés
527
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
10 octobre 2013
1
6 nov. 2007 à 11:16
utilise setstring puisque tu es en VB2005, pas mid (qui ne marche qu'en vb6 apparament)
0
mstarsup5
Messages postés
527
Date d'inscription
lundi 15 octobre 2007
Statut
Membre
Dernière intervention
10 octobre 2013
1
6 nov. 2007 à 11:16
oups, substring, et pas setstring.. -_-
0
cs_veler
Messages postés
723
Date d'inscription
dimanche 26 novembre 2006
Statut
Membre
Dernière intervention
23 janvier 2013
3
6 nov. 2007 à 11:25
A, ça y est, j'ai trouvé!!!:

                Position = ligne.IndexOf("""") + 1
                chaine = ligne.Substring(Position, Len(ligne) - Position)
                Position2 = chaine.IndexOf("""")

                Dim m As String = ligne.Substring(Position, Position2)
                MsgBox(m)

ça fonctionne, allé, j'accepte quand même t'as réponse Casy, car elle fonctionne aussi, et puis mstarsup5 aussi, tu m'as bien aidée aussi.
merci de votre aide

a+^^

ebaudoux@club.fr
http://www.velersoftware.fr.nf
0