Extraire une chaine de caractère

sganarelle

XLDnaute Nouveau
Bonjour,:p

J'ai un petit problème pour sur excel concernant l'extraction d'une chaine de caractère. J'ai essayé plusieurs formules, différents codes mais rien n'y fait :mad: . Sur la colonne A nommée "Perimeter" se trouve des chaines de caractères trop longues. Celles qui m'interessent commencent par MARK et sont les plus longues, et ce sont celles ci que je veux extraire sur la colonne B sans les caractères suivant le "-" à la fin.

Par exemple,

-sur la ligne 6, j'ai :GBIS -> MARK -> MARK/SOL -> MARK/SOL/COM -> MARK/SOL/COM/EXF -> MARK/SOL/COM/EXF/ITA -> MARK/SOL/COM/EXF/ITA - ITALY043 . Ce que je veux extraire sur la seconde colonne est MARK/SOL/COM/EXF/ITA
-sur la ligne 5, j'ai : GBIS -> MARK -> MARK/ASI . Ce que je veux extraire est MARK/ASI
et ainsi de suite.

Ca peut se faire soit par vba soit par formule dans une cellule, les deux me vont. :confused:

En pièce jointe le fichier excel.

A l'âme charitable qui m'aidera, je la remercie beaucoup.
 

Pièces jointes

  • mon_fichier.xls
    51.5 KB · Affichages: 92
Dernière édition:
J

JJ1

Guest
Re : Extraire une chaine de caractère

Bonjour et bienvenue.

Ton problème ne semble pas simple au vu de l'exemple (attention à modifier ton fichier car je pense que les noms ne sont pas "bidon" ..écris plutôt titi,toto...)

a+
 

Dranreb

XLDnaute Barbatruc
Re : Extraire une chaine de caractère

Bonjour.

Cette Function perso peut être :
VB:
Function DernMARKSlh(Z As String) As String
Dim Spl() As String
Spl = Split(Z, "MARK/")
DernMARKSlh = "MARK/" & Split(Spl(UBound(Spl)))(0)
End Function
Code:
=DernMARKSlh($C4)
Quoique celui là, justement, donne "MARK/GBIS" à mon léger étonnement avant d'en avoir compris le mécanisme évident, mais comme tous vos exemples comportaient "MARK/", on peut faire ce qu'on veut pour quand ça n'y est pas ?…
 
Dernière édition:

sganarelle

XLDnaute Nouveau
Re : Extraire une chaine de caractère

Merci beaucoup Dranreb, c'est presque parfait. Ta fonction marche pour toutes les lignes sauf pour les lignes où on a: GBIS -> MARK. Si on execute la fonction, on obtient : MARK/GBIS alors que le résultat voulu ici serait MARK tout simplement :confused:
 

Dranreb

XLDnaute Barbatruc
Re : Extraire une chaine de caractère

VB:
Function DernMARKSlh(Z As String) As String
Dim Spl() As String
Spl = Split(Z, "MARK/")
DernMARKSlh = "MARK" & IIf(UBound(Spl) > 0, "/" & Split(Spl(UBound(Spl)))(0), "")
End Function
Pour la ligne 14, il y a un élément "/TRD/" qui apparait, mais plus dans le dernier terme.

Edit: Erreur corrigée : IIf(UBound(Spl) > 0 au lieu de > 1.
Et vu avant moi, quoique indépendamment :p
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 246
Membres
103 163
dernier inscrit
Pelaez