Recuperer un mot dans une cellule

lkdrdjerid

XLDnaute Nouveau
Bonjour,

Je souhaite récupérer l'avant denier terme dune chaine de charactère.

le hic c'est qu'il y a quelque règle:

-quant le dernier terme de ma chaine de caractère est "Radioaccessservice" c'est ce terme que je dois recuperer
par ex: [RNC/RadioAccessService ] je veux récupérer :RadioAccessService


-dans tous les autres cas c'est l'avant dernière terme que je dois recuperer:l'avantage c'est qu'il est marqué comme ceci : espace,avant dernier terme,/dernier terme.Mais le problème c'est que les termes qui le précédent aussi
par ex :[RNC/RadioAccessService ] DlRbSetConf/CS_AMR_NB DlDynamicParameterPerDch/2 DlBlerQualityList/2

je veux récupérer : "DlBlerQualityList"


-la chaine de charactère peut être de longueur différent

Le but est de coller tous mes résultats dans une seul colonne dis "objet".

j'ai mis en place un ensemble de formule qui m'ont permis d'éclater mes chaines de charactère,mais au final je suis obligé de me retaper le fichier à la main pour coller mon résultat dans ma colonne objet

Je n'ai pas réussit à imbriquer toutes mes fomules en 1 ou ma stratégie est mauvaise

C'est pour cela que je vous demande votre aide.Je vous joint un bout de fichier avec tous les cas possible et les fomules que j'ai crée:
en colone d : le resultat souhaité
en colonne e: la source
en colonne F,G,H,I : les formules pour éclater ma source
 

Pièces jointes

  • test.xls
    15.5 KB · Affichages: 69
  • test.xls
    15.5 KB · Affichages: 68
  • test.xls
    15.5 KB · Affichages: 71

Staple1600

XLDnaute Barbatruc
Re : Recuperer un mot dans une cellule

Bonsoir à tous

Une piste :
Données/Convertir/Délimité/cocher [Espace], cocher [Autre]: /
azeeer.gif


Par VBA (l'équivalent de la manip ci-dessus)
Code:
Sub Macro_2b()'code modifié de l'enregistreur de macro
Selection.TextToColumns Range("A1"), _
xlDelimited, _
xlDoubleQuote, _
True, , , , True, True, "/"
End Sub
Voir la pièce jointe
 
Dernière édition:

lkdrdjerid

XLDnaute Nouveau
Re : Recuperer un mot dans une cellule

Bonjour à tous,

Merci beaucoup pour votre aide je les ait toutes essayé et sa marche nicqel

Comme j'avais 36000 lignes à traiter ,la plus rapide c'est celle de Pyrof !

J'ai un peu à galerer à comprendre l'imbriquement des differentes formules mais au moins je vais progresser.
Pyrof ,je ne sais pas comment faire pour voir ta fonction personnel (je souhaiterai la decortiquer)

Merci à tous
 

Pyrof

XLDnaute Occasionnel
Re : Recuperer un mot dans une cellule

Bonjour,

Pour la voir il faut passer en editeur macro F11


voici la fonction :
Function toto1(tmp)
Application.Volatile
tmp1 = Replace(tmp, "]", "/")
tmp2 = Split(tmp1, "/")
tmp3 = Trim(tmp2(UBound(tmp2) - 1))
tmp4 = Split(tmp3, " ")
toto1 = tmp4(UBound(tmp4))
End Function

explication
--> tmp1 = Replace(tmp, "]", "/")
remplace le caractère ] par /

[RNC/RadioAccessService ]
[RNC/RadioAccessService ] DlRbSetConf/CS_AMR_NB DlDynamicParameterPerDch/2 DlBlerQualityList/2

devient
[RNC/RadioAccessService /
[RNC/RadioAccessService / DlRbSetConf/CS_AMR_NB DlDynamicParameterPerDch/2 DlBlerQualityList/2

--> tmp2 = Split(tmp1, "/")
Tranforme la chaine en tableau avec comme séparateur /

ex 1:
tmp2(0)= "[RNC"
tmp2(1)= "RadioAccessService "
tmp2(2)=""

ex 2:
tmp2(0)= "[RNC"
tmp2(1)= "RadioAccessService "
tmp2(2)= " DlRbSetConf"
tmp2(3)= "CS_AMR_NB DlDynamicParameterPerDch"
tmp2(4)= "2 DlBlerQualityList"
tmp2(5)= "2"

--> tmp3 = Trim(tmp2(UBound(tmp2) - 1))
Ubound = numéro du dernier element 2 dans example1 et 5 dans le second
ex1: tmp3 = UBound(tmp2) - 1) =tmp2(1)= "RadioAccessService "
ex2: tmp3 = UBound(tmp2) - 1) =tmp2(4)= "2 DlBlerQualityList"

La fonction trim supprime les espaces en début et en fin de chaine

--> tmp4 = Split(tmp3, " ")
--> toto1 = tmp4(UBound(tmp4))
Meme principe on découpe d'après l'espace et on prend le dernier élément

ex1: tmp4(0)="RadioAccessService"
ex2 : tmp4(0)="2", tmp4(1)="DlBlerQualityList"


J'espère avoir été assez clair


Parfois il est plus facile d'écrire ses fonctions que d'utiliser une imbrication de commandes excel.
Ceci facilite le déploiement sur plusieurs cellules et facilite les éventuelles modifications (il suffit de modifier la fonction pour que toutes les cellules soient mise à jour)
 

Discussions similaires

Statistiques des forums

Discussions
312 677
Messages
2 090 824
Membres
104 677
dernier inscrit
soufiane12