Extraire une chaine de caractère excel
Résolu
yiye
Messages postés
4
Statut
Membre
-
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
chossette9 Messages postés 6855 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Dans EXCEL, je souhaite extraire la data qui se trouve dans le nom d'une cellule, dont voici des exemples:
aaaaaaaaaaa.download.aaaaaa.com/21060/.../20101115_aaaaaaaaaaa_high_en_cutqna.wmv
aaaaaaaaaaa.download.aaaaaa.com/21060/20110519/20110519_aaaaaaaaaaa_high_en.wmv
aaaaaaaaaaa.download.aaaaaa.com/21060/20110729/20110729_aaaaaaaaaaa_high_en.wmv
Je voudrais en fait extraire la partie en gras et la mettre dans une autre colonne.
le soucis est que je ne peux pas utiliser la fonction STXT comme ça, étant donné que la position de la date varie selon le nom qu'il y a dans chaque cellule...
Pouvez-vous m'aider à trouver la formule adéquate svp?
Merci d'avance.
yiye
Dans EXCEL, je souhaite extraire la data qui se trouve dans le nom d'une cellule, dont voici des exemples:
aaaaaaaaaaa.download.aaaaaa.com/21060/.../20101115_aaaaaaaaaaa_high_en_cutqna.wmv
aaaaaaaaaaa.download.aaaaaa.com/21060/20110519/20110519_aaaaaaaaaaa_high_en.wmv
aaaaaaaaaaa.download.aaaaaa.com/21060/20110729/20110729_aaaaaaaaaaa_high_en.wmv
Je voudrais en fait extraire la partie en gras et la mettre dans une autre colonne.
le soucis est que je ne peux pas utiliser la fonction STXT comme ça, étant donné que la position de la date varie selon le nom qu'il y a dans chaque cellule...
Pouvez-vous m'aider à trouver la formule adéquate svp?
Merci d'avance.
yiye
7 réponses
-
en fait je voudrais prendre les 8 chiffres suivant le 3ème " / "
-
Bonjour,
Tu pourras trouver ici une formule plus ou moins universelle.
Je l'ai adaptée à ton cas, ça donne :
Bien sur en A1 saisir : aaaaaaaaaaa.download.aaaaaa.com/21060/.../20101115_aaaaaaaaaaa_high_en_cutqna.wmv
La formule à inscrire en B1 (ou ailleurs...) :
=GAUCHE(STXT(A1;CHERCHE("|";SUBSTITUE(A1;"/";"|";NBCAR(A1)-NBCAR(SUBSTITUE(A1;"/";""))))+1;999);8) -
Merci beaucoup
j'ai essayé votre formule: elle marche presque pour toutes les lignes mais il y a un bug sur certaines lignes comme par exemple :
aaaaaaaaaaa.download.aaaaaa.com/21060/20101005/aaaaa_2010_EN.wmv
je viens de voir que sur toutes les lignes, je souhaiterais avoir les 8 chiffres suivant le 3ème "/". -
1- juste pour êter tout à fait exact ce n'est pas ma formule,
2- elle fonctionne selon la demande initiale.
je viens de voir que sur toutes les lignes, je souhaiterais avoir les 8 chiffres suivant le 3ème "/".
NON! Pas dans l'exemple que tu nous donnes ci-dessus :
aaaaaaaaaaa.download.aaaaaa.com/21060/20101005/aaaaa_2010_EN.wmv
....................
3- ce que tu souhaites faire est donc impossible par formule (1 fois après le 3ème "/", une fois après le second...)
Ne reste que VBA et une fonction personnalisée qui sera très lourde si tu as de nombreuses lignes à traiter.
Ou alors utilises la formule donnée plus haut et rectifies les quelques lignes ou elle ne fonctionne pas... -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Oui vous avez raison.
je vais faire comme vous me le conseillez il n'y en a pas tant que ça :)
Merci beaucoup à vous -
Bon t'as de la chance, j'y suis parvenu sans trop farfouiller...
Pour info, voici les sources :
- Tuto de Caféine
- Post et code de Michel_M
Procédure :
- Depuis la feuille de calcul Excel tapez ALT+F11
- Outils/Références, cocher : Microsoft VBScript Regular Expressions 5.5
- Puis Insertion/Module
- Dans ce module copiez/collez ce code :Function Extraire8Chiffres(texto As Range) Dim reg As Object Dim extraction As Object Dim maj As Variant Set reg = CreateObject("vbscript.regexp") reg.Global = False reg.Pattern = "(\d{8})" Set extraction = reg.Execute(texto) For Each maj In extraction Extraire8Chiffres = maj.Value Next maj End Function
- Fermez Visual Basic Editor pour revenir dans votre feuille de calcul,
- La formule devient donc maintenant :
=Extraire8Chiffres(A1)
-
Bonjour à tous,
La difficulté réside toujours dans la recherche d'un élément constant et sans ambiguité.
Si "/201" répond à ces critères on peut utiliser:
=STXT(A2;CHERCHE("/201";A2;1)+1;8)