Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Extraire une chaine de caractère entre deux caractères différents

  • Initiateur de la discussion Initiateur de la discussion Al1_44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Al1_44

XLDnaute Junior
Bonsoir le forum,

Certainement un problème simple pour vous, je veux isoler une chaine de caractères contenu entre deux caractères spéciaux.

Exemple:
Machin chose,19875 Bidule TRUC (mois 2013, aert de gfe) hfu

En partant de la droite, extraire le texte à gauche de la virgule jusqu'au caractère ")" soit : "aert de gfe" , actuellement je passe par deux formules successives, voir fichier joint.

Merci beaucoup et à bientôt

AL1_44
 

Pièces jointes

Solution
Bonjour Al,
Un essai en PJ avec la fonction perso en VBA :
VB:
Function Extrait(C$)
    Extrait = Trim(Split(Split(C, ",")(UBound(Split(C, ","))), ")")(0))
End Function
Syntaxe : =Extrait(Chaine)

ou peut être plus rapide :
VB:
Function Extrait2(C$)
    Extrait2 = Trim(Mid(C, InStrRev(C, ",") + 1, InStr(C, ")") - InStrRev(C, ",") - 1))
End Function
Syntaxe : =Extrait2(Chaine)

Le problème est que "cherche par la droite" existe en VBA (InStrRev) mais pas en formule.
Sinon si le VBA vous rebute, vous pouvez concaténer vos deux formules :
VB:
=GAUCHE(SUPPRESPACE(DROITE(SUBSTITUE(A1;",";REPT(" ";NBCAR(A1)));NBCAR(A1))); TROUVE(")"; SUPPRESPACE(DROITE(SUBSTITUE(A1;",";REPT(" ";NBCAR(A1)));NBCAR(A1))))-1)

ou un poil plus court ...
Bonjour Al,
Un essai en PJ avec la fonction perso en VBA :
VB:
Function Extrait(C$)
    Extrait = Trim(Split(Split(C, ",")(UBound(Split(C, ","))), ")")(0))
End Function
Syntaxe : =Extrait(Chaine)

ou peut être plus rapide :
VB:
Function Extrait2(C$)
    Extrait2 = Trim(Mid(C, InStrRev(C, ",") + 1, InStr(C, ")") - InStrRev(C, ",") - 1))
End Function
Syntaxe : =Extrait2(Chaine)

Le problème est que "cherche par la droite" existe en VBA (InStrRev) mais pas en formule.
Sinon si le VBA vous rebute, vous pouvez concaténer vos deux formules :
VB:
=GAUCHE(SUPPRESPACE(DROITE(SUBSTITUE(A1;",";REPT(" ";NBCAR(A1)));NBCAR(A1))); TROUVE(")"; SUPPRESPACE(DROITE(SUBSTITUE(A1;",";REPT(" ";NBCAR(A1)));NBCAR(A1))))-1)

ou un poil plus court :
VB:
=SUPPRESPACE(STXT(STXT(A1;TROUVE("(";A1)+1;TROUVE(")";A1)-TROUVE("(";A1)-1);CHERCHE(",";STXT(A1;TROUVE("(";A1)+1;TROUVE(")";A1)-TROUVE("(";A1)-1))+1;10^3))

C'est indigeste mais ça marche. 🙂
 

Pièces jointes

Dernière édition:
Bonjour Sylvanu,

Je n'ai que l'embarras du choix, toute les solutions me conviennent.
Pour un coté plus simpliste, je vais travailler avec la fonction VBA.
Mais j'approuve la première formule, car c'est ce que je cherchais à
mettre en œuvre, sans succès.
Merci.

Bon WE à tous.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…