Extraire une référence dans la description d'une cellule

Bonjour,

Sur +/- 2000 lignes, j'essaie d'extraire une référence dans la description d'une cellule.

Par exemple;

en A1: 2345

en A2: "bla bla 999 bla bla ABCD12345678 bla toujours du bla bla"

J'essaie d'obtenir "ABCD12345678" comme résultat en A3 par exemple.

D'avance merci pour votre aide,

Bonjour,

L'exemple n'est pas assez parlant pour travailler surtout tu nous parles d'environ 2000 lignes. Il nous faut un fichier avec quelques exemples dans une colonne et dans une autre colonne le résultat à obtenir. Ainsi tu pourras attendre une solution efficace.

Voici le document,

Bien à vous,

20book1.xlsx (8.91 Ko)

Ça, c'est la version laborieuse !

=DROITE(SUBSTITUE(GAUCHE(B1;CHERCHE(" ";B1;CHERCHE(A1;B1))-1);" ";"###";SOMMEPROD((STXT(GAUCHE(B1;CHERCHE(" ";B1;CHERCHE(A1;B1))-1);LIGNE(INDIRECT("1:"&NBCAR(GAUCHE(B1;CHERCHE(" ";B1;CHERCHE(A1;B1))-1))));1)=" ")*1));NBCAR(SUBSTITUE(GAUCHE(B1;CHERCHE(" ";B1;CHERCHE(A1;B1))-1);" ";"###";SOMMEPROD((STXT(GAUCHE(B1;CHERCHE(" ";B1;CHERCHE(A1;B1))-1);LIGNE(INDIRECT("1:"&NBCAR(GAUCHE(B1;CHERCHE(" ";B1;CHERCHE(A1;B1))-1))));1)=" ")*1)))-CHERCHE("###";SUBSTITUE(GAUCHE(B1;CHERCHE(" ";B1;CHERCHE(A1;B1))-1);" ";"###";SOMMEPROD((STXT(GAUCHE(B1;CHERCHE(" ";B1;CHERCHE(A1;B1))-1);LIGNE(INDIRECT("1:"&NBCAR(GAUCHE(B1;CHERCHE(" ";B1;CHERCHE(A1;B1))-1))));1)=" ")*1)))-2)

On doit pouvoir faire mieux avec du matriciel chaîne : à rechercher chez Boisgontier...

Cordialement

Ferrand

13jb007-book1.xlsx (9.62 Ko)

Un petit peu plus courte :

=STXT(B1;CHERCHE("###";SUBSTITUE(B1;" ";"###";SOMMEPROD((STXT(B1;LIGNE(INDIRECT("1:"&NBCAR(B1)));1)= " ")*(LIGNE(INDIRECT("1:"&NBCAR(B1)))<CHERCHE(A1;B1)))))+1;CHERCHE(" ";B1;CHERCHE("###";SUBSTITUE(B1;" ";"###";SOMMEPROD((STXT(B1;LIGNE(INDIRECT("1:"&NBCAR(B1)));1)= " ")*(LIGNE(INDIRECT("1:"&NBCAR(B1)))<CHERCHE(A1;B1)))))+1)-CHERCHE("###";SUBSTITUE(B1;" ";"###";SOMMEPROD((STXT(B1;LIGNE(INDIRECT("1:"&NBCAR(B1)));1)= " ")*(LIGNE(INDIRECT("1:"&NBCAR(B1)))<CHERCHE(A1;B1))))))

Vu la longueur de la formule, une fonction personnalisée pour ce type d'extraction n'est pas du luxe.

Function EXTRACTREF(idc As String, rref As String) As String
    Dim tref, i%
    Application.Volatile
    tref = Split(rref)
    For i = 0 To UBound(tref)
        If InStr(tref(i), idc) Then
            EXTRACTREF = tref(i)
            Exit Function
        End If
    Next i
    EXTRACTREF = CVErr(xlErrNA)
End Function

Cordialement.

Rechercher des sujets similaires à "extraire reference description"