XL 2021 Extraire valeurs après caractère spécial ou numérique

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 !

sum01

XLDnaute Occasionnel
Bonsoir le forum,

Dans ce petite problème dont je ne parviens pas à trouver la formule/solution. Je cherche à extraire la première valeur qui vient juste après une valeur numérique ou un caractère spécial ("%"). Et si la cellule ne contient aucun des deux alors je prends la première valeur.
Les valeurs en A ne sont pas toujours structurée proprement et je n'ai pas la main sur ces données. Parfois, les valeurs peuvent être séparées par un espace et parfois non.

Je joins le fichier qui, je l'espère, illustre mieux le sujet.

Un grand merci pour votre aide

Belle soirée
 

Pièces jointes

Dernière édition:
Solution
Bonsoir à @sum01🙂, R@chid 😉,

Une autre pour le fun et pour toutes les versions de Excel. Formule à valider matriciellement (avec la combinaison des 3 touches Ctrl+Maj+Entrée) pour les anciennes version d'Excel :
=SUPPRESPACE(GAUCHE(SUBSTITUE(STXT(A2;EQUIV(FAUX;EXACT(MINUSCULE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2);1));1));MAJUSCULE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2);1));1)));0);255);" ";REPT(" ";255));255))

nota : en fait, on extrait à partir de la première lettre quels que soient les caractères avant cette première lettre.
Bonsoir @ tous,
en B2:
VB:
=LET(Fnc;SUPPRESPACE(SI(ESTNUM(CHERCHE("%";A2));STXT(A2;EQUIV("%";STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1);0)+1;99);SIERREUR(STXT(A2;EQUIV(9^9;--STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2)));1))+1;99);GAUCHE(A2;TROUVE(" ";A2)-1))));SIERREUR(GAUCHE(Fnc;TROUVE(" ";Fnc)-1);Fnc))
@ tirer vers le bas

Cordialement
 
Bonsoir à @sum01🙂, R@chid 😉,

Une autre pour le fun et pour toutes les versions de Excel. Formule à valider matriciellement (avec la combinaison des 3 touches Ctrl+Maj+Entrée) pour les anciennes version d'Excel :
=SUPPRESPACE(GAUCHE(SUBSTITUE(STXT(A2;EQUIV(FAUX;EXACT(MINUSCULE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2);1));1));MAJUSCULE(STXT(A2;LIGNE(INDIRECT("1:"&NBCAR(A2);1));1)));0);255);" ";REPT(" ";255));255))

nota : en fait, on extrait à partir de la première lettre quels que soient les caractères avant cette première lettre.
 

Pièces jointes

Dernière édition:
Bonjour sum01, R@chid, mapomme, le forum,

Extraction de lettres avec cette fonction VBA :
VB:
Function Lettres$(x$)
Dim liste$, i%, deb%
liste = "abcdefghijklmnopqrstuvwxyzàáâãäåòóôõöøèéêëìíîïùúûüÿñç"
x = x & " "
For i = 1 To Len(x)
    If deb = 0 Then If InStr(liste, LCase(Mid(x, i, 1))) Then deb = i
    If deb Then If InStr(liste, LCase(Mid(x, i, 1))) = 0 Then Lettres = Mid(x, deb, i - deb): Exit For
Next
End Function
Edit : ajouté x = x & " " pour border le texte.

A+
 

Pièces jointes

Dernière édition:
re @patricktoulon 😉,

J'ai détaillé dans le classeur joint tous les termes de la formule.
C'est sans doute "trop détaillé" pour toi mais je l'ai fait en pensant à tous les autres aussi (si ça les intéresse).

La formule est basée sur le principe énoncé dans le cadre en gris.
Les cellules orangées et en gras sont le résultat d'une formule dans ces cellules.

Si ce n'est pas clair, me solliciter...
 
Bonjour à tous

Autre solution sans formules ni VBA => avec Remplissage instantané => le raccourci Ctrl E :
CTRLE.gif
 
Autre solution VBA avec la méthode majuscule-minuscule utilisée par mapomme :
VB:
Function Lettres$(x$)
Dim i%, deb%, y$
x = x & " "
For i = 1 To Len(x)
    If deb = 0 Then y = Mid(x, i, 1): If LCase(y) <> UCase(y) Then deb = i
    If deb Then y = Mid(x, i, 1): If LCase(y) = UCase(y) Then Lettres = Mid(x, deb, i - deb): Exit For
Next
End Function
Pour tester j'ai recopié la plage A2:B6 sur 100 000 lignes et comparé les durées du recalcul.

Eh bien pour les 3 fichiers des posts #3 #4 et #15 cette durée est la même 1,1 seconde.
 

Pièces jointes

- 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

Retour