Extraire une chaine de caractère excel
Résolu
yiye
Messages postés
4
Statut
Membre
-
chossette9 Messages postés 6855 Statut Contributeur -
chossette9 Messages postés 6855 Statut Contributeur -
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
A voir également:
- Regexextract excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel trier par ordre croissant chiffre - Guide
7 réponses
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)
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 "/".
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...
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
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 :
- Fermez Visual Basic Editor pour revenir dans votre feuille de calcul,
- La formule devient donc maintenant :
=Extraire8Chiffres(A1)
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)