ce n'est pas une question, mais je ne savais pas où poster...
J'ai essayé d'extraire la chaîne "rty" de "(aze(rty)uio)" entre les deux parenthèses intérieures avec la fonction FindPartString de la librairie "Tools" fournie avec OOo; mais cette fonction m'a retourné "aze(rty".
Je me suis pris par la main pour faire une autre fonction ( "ExtraitChaine") qui donne le résultat espéré dans ce cas.
- Code: Tout sélectionner AgrandirRéduire
Sub Main
Dim MonTexte$, Avant$ , Apres$, Debut%, MonResultat$, PosCherche%
GlobalScope.BasicLibraries.LoadLibrary("Tools")
MonTexte = "(aze(rty)uio)": Avant = "(": Apres = ")": Debut = 1
MsgBox FindPartString(MonTexte, Avant, Apres, Debut)
MsgBox ExtraitChaine(MonTexte, Avant, Apres, PosCherche) & Chr(10) & PosCherche
End Sub
Function ExtraitChaine(A, B$, C$, K%) as String ' extrait entre B et C
Dim I%, J%, L%, D$, E$
L = Instr(A, B)
E = Mid(A, L + Len(B)) ' pour le cas où B = C: pointe sur la première occurrence de B
I = InStr(E, C)
If I * L = 0 Then Exit Function
D = Left(E, I - 1) ' pointe sur la première occurrence de C après B
For J = Len(D) To 1 Step -1 ' remonte à l'occurrence de B précédente
If Mid(D,J,Len(B)) = B Then Exit For ' pour le cas où on a: (...(...)...)
Next
If J > 0 Then D = Mid(D, J + Len(B))
ExtraitChaine = D: K = L + J
A = Remplace(A, B & D & C, "", 1)
End Function
j'espère que ce code servira à quelqu'un (et surtout qu'il n'a pas de bugs...)
Bon week-end à tous
Joël



