Supriession d'une chaine da caractère excel

Résolu
Bonjour,

Dans une collonne excel, je souhaite suprimer les crochets [ et ] et récupérer la chaine du premier entre crochet, pour compliquer le problème le nombre de caractère entre les crochets est variable exemple:
[toto]
[bonbon]
[bi*da-]
[tata]/[titi]

je suis sur excel 2003.
merci d'avance
Configuration: Windows XP Internet Explorer 6.0

9 réponses

  1. Contributeur
    Bonjour,

    regarde si cette fonction personnalisée répond à ta demande
    les mots sont séparés par un "/"

    Function enleve_crochets(ByRef texto As String) As String
    Dim reg As Object
    Dim extraction As Object
    Dim tablo
        Set reg = CreateObject("vbscript.regexp")
        reg.Global = True
        reg.Pattern = "([^][])"
        
        Set extraction = reg.Execute(texto)
        For Each digit In extraction
            enleve_crochets = enleve_crochets & (digit.Value)
        Next digit
        tablo = Split(enleve_crochets, "/")
        enleve_crochets = tablo(0)
        Set extraction = Nothing
        Set reg = Nothing
    End Function


    edit 12:30h ajouter extraction uniquement du 1° mot
    0
    1. Contributeur
      Re, excuses moi j'avais très mal lu ta demande
      si tu veux extraire que le premier mot sans crochets quelque soit la séparation entre mots, il n'y a pas besoin de mon usine à gaz avec des expressions régulières !!!

      Function enleve_crochets(ByRef texto As String) As String
      Dim tablo
        tablo = Split(texto, "]")
        enleve_crochets = Right(tablo(0), Len(tablo(0)) - 1)
      End Function

      0
      1. Sans passer par une macro, une fonction dans la cellule est elle possible?
        0
        1. Avec par exemple de la substition, ou si non c'est qui le caractère qui représente le début de chaine de caractère.
          0
          1. Contributeur
            oui, mais tu as écris ta demande dans le forum programmation...donc j'ai réagi en langage de programmation XL-VBA
            si tu veux par formule, il eut été plus efficace de poster ta demande sur le forum bureautique.

            Je regarde une formule et te propose ca
            0
            1. Contributeur
              par exemple, 1 solution parmi d'autres
              =DROITE(GAUCHE(D8;CHERCHE("]";D8)-1);NBCAR((GAUCHE(D8;CHERCHE("]";D8)-2))))
              0
              1. ou sinon un simple replace(replace(variable,"[",""),"]","") fonctionne (je vien de le tester)
                0
                1. Salut,

                  Peut être comme cela

                  =SUBSTITUE(SUBSTITUE(GAUCHE(A1;CHERCHE("/";A1)-1);"[";"");"]";"")
                  0