Extraire PLUSIEURS FOIS du texte entre 2 symboles dans une chaine

Bonjour à tous,

Voilà ma problématique : j'ai dans ma cellule A1 le texte suivant : //bonjour!!oui))après!!non))

J'aimerais extraire dans ma cellule B1 l'ensemble des textes de A1 entourés de !! et )) et les concaténer par un - par exemple.

Dans mon exemple, B1 serait donc égale à : oui - non

Je sais comment extraire UN texte entre 2 symboles mais le faire pour plusieurs textes dans une même cellule, je dois dire que je galère...et je me demande si une formule suffit ou si il faut une macro.

J'espère que vous saurez m'aider dans cette recherche, merci beaucoup !

Bonjour jul997,

Il n'y a pas de moyen simple d'extraire plusieurs sous-chaînes spécifiques en utilisant une formule. Cependant, vous pouvez y arriver en utilisant une macro VBA.
Un exemple :

Function extraireTexte(str As String) As String
    Dim regexp As Object
    Set regexp = CreateObject("vbscript.regexp")

    With regexp
        .Global = True
        .Pattern = "!!(.*?)\)\)"
    End With

    Dim matches As Object
    Set matches = regexp.Execute(str)

    Dim result As String
    result = ""

    For Each match In matches
        result = result & "-" & match.SubMatches(0)
    Next match

    ' Enlever le "-" en début de chaîne
    If Left(result, 1) = "-" Then result = Right(result, Len(result) - 1)
    extraireTexte = result
End Function

La macro utilise les expressions régulières pour chercher toutes les occurrences de textes entre !! et )).

Bonjour jul997

J'ai trouvé une solution sans macro mais je ne sais pas si elle répondra à votre besoin :

En C1 vous pouvez mettre la formule suivante pour dispatcher dans les colonnes suivantes les différents blocs à concaténer :

=FRACTIONNER.TEXTE(FRACTIONNER.TEXTE(DROITE(A1;NBCAR(A1)-1-CHERCHE("!!";A1;1));"!!");"))")

Puis en B1 vous pouvez concaténer :

=JOINDRE.TEXTE(" - ";VRAI;C1:K1)

ici je vais jusqu'en K1 mais vous pouvez mettre plus de colonnes si besoin.

Rechercher des sujets similaires à "extraire fois texte entre symboles chaine"