XL pour MAC extraire les caractères avant une occurence pas toujours présente

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 !

cloum1

XLDnaute Nouveau
Bonjour,
j'ai une tres longue liste du type
AA-BBB-CCCCC-DDDDD-1
AAAA-BBBB-CCCCC-DDD-2
AAAA-BBBB-CCC-DDDDD-EEEE-11
AAAA-BB-CCC-DDD


entre chaque tiret la chaine est de longueur variable
chaque chaine est composé lettres ou chiffres
Il y a 4 ou 5 chaines séparées d'un tiret mais pas toujours le dernier tiret avec un numéro (1 ou 2 caractères de 1 à 19)

Je souhaiterais pouvoir extraire tout ce qu'il y a à gauche du dernier tiret dans le cas ou il y est présent (et dans ce cas garder la cellule intacte
AA-BBB-CCCCC-DDDDD
AAAA-BBBB-CCCCC-DDD
AAAA-BBBB-CCC-DDDDD-EEEE
AAAA-BB-CCC-DDD


Merci
 
Dernière édition:
Hello
une autre solution par fonction personnalisée

VB:
Function SupprimerIndice(textinit As Range) As String

fin = Split(textinit, "-")(UBound(Split(textinit, "-")))
If IsNumeric(fin) Then
    SupprimerIndice = WorksheetFunction.Substitute(textinit, "-" & fin, "")
Else
    SupprimerIndice = textinit
End If
End Function
 
Bonjour à tous ,

Oups ! J'avais oublié le fait que le texte pouvait ne pas finir par un chiffre...

Voici la formule corrigée :
Une petite formule matricielle en B1 à recopier vers le bas :
VB:
=SI(A1="";"";SI(ESTNUM(--DROITE(A1;1));GAUCHE(A1;MAX(SI(STXT(A1;LIGNE($1:$99);1)="-";LIGNE($1:$99)-1;"")));A1))

Remarque : 99 doit un nombre supérieur à la longueur maximum des chaines en colonne A. On pourrait le paramétrer mais ça alourdit la formule.

Formule matricielle (sur Apple, la touche contrôle doit correspondre à la touche "pomme") :
ValidMatric.png
 

Pièces jointes

Dernière édition:
Bonsoir le fil

Test OK sur Office 365 (mais sur Windows)
(avec le jeu de données du message#1)
=JOINDRE.TEXTE("-";VRAI;TRANSPOSE(FILTRE.XML("<t><s>"&SUBSTITUE(A1;"-";"</s><s>")&"</s></t>";"//s[last()]/preceding::*")))
Avec les données en colonne A, saisir la formule ci-dessus en B1 puis recopier vers le bas
Occurences.png
 
- 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
Retour