Instr : sélectionner un texte entre deux caractères [Résolu]

Messages postés
88
Date d'inscription
jeudi 21 avril 2005
Dernière intervention
13 juin 2013
- - Dernière réponse : ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
- 29 avril 2013 à 20:54
Bonsoir,

j'ai fais ce code, qui me permet de sélectionner un texte (crochet compris) compris entre deux crochets :

'trouver les crochets
    pos1 = InStr(Text1.Text, "[")
    pos2 = InStr(Text1.text, "]")
'trouver la pos du curseur dans le texte
    poscur = Text1.SelStart

'si le curseur est entre les crochets, sélectionner le textes et les crochets
    If pos1 < poscur Then
        If poscur < pos2 Then
            Text1.SelStart = pos1 - 1
            Text1.SelLength = pos2 - pos1 + 1
        
        Else
        
            Text1.SelStart = poscur
        End If
    End If


Mais cela ne marche que pour le premier endroit ou il y à des crochets.
Par exemple si mon texte est :

salut [balise1], text texte text [balise2]


Le code va marcher pour balise1, mais pas pour balise 2...


Comment faire pour que le code cherche en partant du curseur vers la gauche pour chercher le "[" et vers la droite pour le "]", svp?
Ce qui me permettrait d'appliquer le code à tout les 'balise' présentent dans le texte.

merci

Malo
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
3
Merci
Bonjour,

Instr() a un paramètre pour désigner le numéro du caractère à partir duquel la recherche doit commencer. Il est à zéro ou un par défaut.

Merci Utilisateur anonyme 3

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

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
88
Date d'inscription
jeudi 21 avril 2005
Dernière intervention
13 juin 2013
3
Merci
Je viens de trouver InstrRev qui m'a permit de localiser le 1° crochet à tout les coups :

poscur = Text1.SelStart
    
'trouver la position des deux crochets
pos1 = InStrRev(Text1.Text, "[", poscur)


Puis je viens de comprendre pour pos2 :

code complet :


    poscur = Text1.SelStart
    
    'trouver la position des deux crochets
    pos1 = InStrRev(Text1.Text, "[", poscur)
    pos2 = InStr(pos1, Text1.Text, "]")
    
    'trouver la position du curseur dans le texte
    If pos1 < pos2 Then 's'assurer que le premier crochet et avant le deuxième ;-)
        If pos1 <= poscur Then
            If poscur <= pos2 Then
                'Sélectionner la partie entre les crochets (y compris les crochets)
                Text1.SelStart = pos1 - 1
                Text1.SelLength = pos2 - pos1 + 1
        
            Else
                'sinon mettre le curseur à sa position
                'Text1.SelStart = poscur
            End If
        End If
    End If




merci à vous deux


Malo

Merci malo777 3

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

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de malo777
3
Merci
Bonjour,
Oui... ou tout simplement:
Dim Str, StrA, StrB, Result As String
Str = "abcd<tefgh>ijlmn"
Dim Tableau() As String

StrA = "<"
StrB = ">"

Result = Split(Split(Str, StrA, 2)(1), StrB)(0)
MsgBox Result



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Merci Utilisateur anonyme 3

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

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Et on peut s'amuser en apprenant, par exemple ainsi :
toto = "salut [balise1], text texte text [balise2]blabla[balise3]atchoum [balise4] a tes souhaits"
  titi = toto
  pos1 = InStr(titi, "[")
  pos2 = InStr(titi, "]")
  Do While pos1 And pos2
    MsgBox Mid(titi, pos1, pos2 - pos1 + 1)
    titi = Mid(titi, pos2 + 1)
    pos1 = InStr(titi, "[")
    pos2 = InStr(titi, "]")
  Loop

et on pourrait avoir des quantité de [.....], toujours avec ce code

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.

Merci ucfoutu 3

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

Codes Sources a aidé 103 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour, instr (lis ton aide VB6 à ce sujet) te permet de déterminer une position de départ, à utiliser, donc (d'autant que tu as déjà pos2 !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Messages postés
88
Date d'inscription
jeudi 21 avril 2005
Dernière intervention
13 juin 2013
0
Merci
Merci de ta réponse ucfoutu,

Je penses avoir compris la fonction Instr en l'utilisant, mais je ne peux pas choisir le sens de recherche.
Il faudrait que je parte de pos2 vers la gauche pour la recherche.

Je ne vois pas ou tu veux en venir.

Malo
Commenter la réponse de malo777
0
Merci
pardon, le "Dim Tableau" n'a rien à faire la...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
88
Date d'inscription
jeudi 21 avril 2005
Dernière intervention
13 juin 2013
0
Merci
Super. Merci beaucoup pour ces deux autres solutions.
C'est comme ça qu'on avance... avec des Grands
qui apprennent aux petits
(je mesure 1m92 ;-)).

[Merci çà vous deux]


Malo
Commenter la réponse de malo777
0
Merci
Attention la chute pour les grands est plus douloureuse car ils tombent de plus haut...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme
Messages postés
88
Date d'inscription
jeudi 21 avril 2005
Dernière intervention
13 juin 2013
0
Merci
Mais l’ascension plus facile...
(sans prétention, humour)

Malo
Commenter la réponse de malo777
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Moi, depuis que ma canne à pêche a été victime du pied d'un badaud curieux et maladroit, je suis devenu un véritable as sans scion (et je ne mesure pourtant que 1,77 m).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.