Excel - Couper une chaîne de caractères
Résolu/Fermé
carthagod
Messages postés
33
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 mars 2013
-
18 oct. 2010 à 18:44
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 23 oct. 2010 à 17:55
eriiic Messages postés 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 - 23 oct. 2010 à 17:55
A voir également:
- Excel tronquer texte
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Si et excel - Guide
- Aller à la ligne excel - Guide
- Word et excel gratuit - Guide
7 réponses
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
Modifié par eriiic le 18/10/2010 à 19:12
Modifié par eriiic le 18/10/2010 à 19:12
Bonsoir,
Si ton arborescence est toujours à 4 niveaux :
=SUBSTITUE(STXT(GAUCHE(A1;NBCAR(A1)-5);CHERCHE("\";SUBSTITUE(A1;"/";"\";3))+1;100);"-";" ")
EDIT:
et si ton niveau d'arborescence peut varier, dans une cellule intermédiaire met :
=SOMMEPROD((STXT(A1;LIGNE(INDIRECT("1:" & NBCAR(A1)));1)="/")*1)
et remplace le 3 de la formule 1 par la référence de cellule de cette formule.
et coucou à vaucluse au passage ;-)
eric
Si ton arborescence est toujours à 4 niveaux :
=SUBSTITUE(STXT(GAUCHE(A1;NBCAR(A1)-5);CHERCHE("\";SUBSTITUE(A1;"/";"\";3))+1;100);"-";" ")
EDIT:
et si ton niveau d'arborescence peut varier, dans une cellule intermédiaire met :
=SOMMEPROD((STXT(A1;LIGNE(INDIRECT("1:" & NBCAR(A1)));1)="/")*1)
et remplace le 3 de la formule 1 par la référence de cellule de cette formule.
et coucou à vaucluse au passage ;-)
eric
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 416
Modifié par Vaucluse le 18/10/2010 à 19:07
Modifié par Vaucluse le 18/10/2010 à 19:07
Bonsoir
essayez si cette formule s'adapte à tous vos cas de figures, sachant qu'elle se base sur les points suivants:
le texte à ressortir se situe après le troisième slash
la fin du texte se situe avant le deuxième point
on verra pour les tirets après
La formule s'adapte à un texte complet en A1
Attention à tous les signes!!
=STXT(A1;TROUVE("_";SUBSTITUE(A1;"/";"_";3);1)+1;TROUVE("*";SUBSTITUE(A1;".";"*";2);1)-TROUVE("_";SUBSTITUE(A1;"/";"_";3);1)-1)
crdlmnt
Ps pour enlever les tirets, c'est celle ci:
=SUBSTITUE(STXT(A1;TROUVE("_";SUBSTITUE(A1;"/";"_";3);1)+1;TROUVE("*";SUBSTITUE(A1;".";"*";2);1)-TROUVE("_";SUBSTITUE(A1;"/";"_";3);1)-1);"-";" ")
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
essayez si cette formule s'adapte à tous vos cas de figures, sachant qu'elle se base sur les points suivants:
le texte à ressortir se situe après le troisième slash
la fin du texte se situe avant le deuxième point
on verra pour les tirets après
La formule s'adapte à un texte complet en A1
Attention à tous les signes!!
=STXT(A1;TROUVE("_";SUBSTITUE(A1;"/";"_";3);1)+1;TROUVE("*";SUBSTITUE(A1;".";"*";2);1)-TROUVE("_";SUBSTITUE(A1;"/";"_";3);1)-1)
crdlmnt
Ps pour enlever les tirets, c'est celle ci:
=SUBSTITUE(STXT(A1;TROUVE("_";SUBSTITUE(A1;"/";"_";3);1)+1;TROUVE("*";SUBSTITUE(A1;".";"*";2);1)-TROUVE("_";SUBSTITUE(A1;"/";"_";3);1)-1);"-";" ")
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 416
18 oct. 2010 à 19:19
18 oct. 2010 à 19:19
Voila ce que ça donne pour ce qui me concerne.
Et salut à Eriiiic bien sur :-)
http://www.cijoint.fr/cjlink.php?file=cj201010/cijIYJkTJV.xls
Crdlmnt à tous
Et salut à Eriiiic bien sur :-)
http://www.cijoint.fr/cjlink.php?file=cj201010/cijIYJkTJV.xls
Crdlmnt à tous
Voici comment je traite un pb analogue sur EXCEL.ça n'est pas élegant mais pour moi ça marche!!
je n'ai pas réussi à recopier correctement une portion du tableur
A B C D E F G H I J K L M N O P Q R
1
2
3 www.monsite.com/categorie/souscategorie/mot-motbis-motter.html. 4 12 16 26 40 44 51 58 63
4 .monsite com categorie souscategorie mot motbis motter html
5 www.monsite.com/categorie/souscategorie/mot-motbis-motter.html. 4 12 16 26 40 44 51 58 63
6 .monsite com categorie souscategorie mot motbis motter html
7
Fonctions utilisées pour "cadrer" les mots
CHERCHE(".";$B4;4) CHERCHE(".";$B$4;H4+1) CHERCHE("/";$B$4;I4+1)
Fonctions utilisées pour restituer les"mots"
STXT($B4;H4;I4-H4-1) STXT($B4;I4+1;J4-I4-1)
En espérant que cela pourra vous être utile.Sautations
Adresse mail supprimée pour votre sécurité
je n'ai pas réussi à recopier correctement une portion du tableur
A B C D E F G H I J K L M N O P Q R
1
2
3 www.monsite.com/categorie/souscategorie/mot-motbis-motter.html. 4 12 16 26 40 44 51 58 63
4 .monsite com categorie souscategorie mot motbis motter html
5 www.monsite.com/categorie/souscategorie/mot-motbis-motter.html. 4 12 16 26 40 44 51 58 63
6 .monsite com categorie souscategorie mot motbis motter html
7
Fonctions utilisées pour "cadrer" les mots
CHERCHE(".";$B4;4) CHERCHE(".";$B$4;H4+1) CHERCHE("/";$B$4;I4+1)
Fonctions utilisées pour restituer les"mots"
STXT($B4;H4;I4-H4-1) STXT($B4;I4+1;J4-I4-1)
En espérant que cela pourra vous être utile.Sautations
Adresse mail supprimée pour votre sécurité
carthagod
Messages postés
33
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 mars 2013
1
21 oct. 2010 à 14:16
21 oct. 2010 à 14:16
Bonjour,
Désolé pour la réaction tardive, je n'ai pas eu le temps de reprendre la question avant aujourd'hui.
Merci beaucoup pour vos réponses. eriiic, la solution est parfaite, cela marche nickel ! Par contre je ne comprends clairement pas tout !
J'ai compris la première partie, je ne comprends pas comment on trouve le nombre de / qu'il y a. (la formule =SOMMEPROD((STXT(A1;LIGNE(INDIRECT("1:" & NBCAR(A1)));1)="/")*1) ).
Merci aussi à Vaucluse et toutou84 pour vos idées !
Bonne journée
Désolé pour la réaction tardive, je n'ai pas eu le temps de reprendre la question avant aujourd'hui.
Merci beaucoup pour vos réponses. eriiic, la solution est parfaite, cela marche nickel ! Par contre je ne comprends clairement pas tout !
J'ai compris la première partie, je ne comprends pas comment on trouve le nombre de / qu'il y a. (la formule =SOMMEPROD((STXT(A1;LIGNE(INDIRECT("1:" & NBCAR(A1)));1)="/")*1) ).
Merci aussi à Vaucluse et toutou84 pour vos idées !
Bonne journée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
21 oct. 2010 à 19:19
21 oct. 2010 à 19:19
Bonjour,
LIGNE(INDIRECT("1:" & NBCAR(A1))) génère une suite de nombres {1;2;3;...;62} de la longueur de la chaine.
Elle sert à STXT pour extraire tous les caractères 1 à 1 pour obtenir une matrice : {"w";"w";"w";".";"m";"o";"n";"s";"i";"t";"e";".";"c";"o";"m";"/";"c"...;"l"}
(formule matricielle qu'on devrait valider par shift+ctrl+entrée mais comme sommeprod() est une formule matricielle à elle toute seule on peut s'en dispenser)
avec {...}="/" on obtient VRAI à chaque / :
{FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;VRAI;...;FAUX}
qui *1 donne :
{0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;...;0}
Il ne reste plus qu'à faire la somme des 1 avec sommeprod()
eric
LIGNE(INDIRECT("1:" & NBCAR(A1))) génère une suite de nombres {1;2;3;...;62} de la longueur de la chaine.
Elle sert à STXT pour extraire tous les caractères 1 à 1 pour obtenir une matrice : {"w";"w";"w";".";"m";"o";"n";"s";"i";"t";"e";".";"c";"o";"m";"/";"c"...;"l"}
(formule matricielle qu'on devrait valider par shift+ctrl+entrée mais comme sommeprod() est une formule matricielle à elle toute seule on peut s'en dispenser)
avec {...}="/" on obtient VRAI à chaque / :
{FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;FAUX;VRAI;...;FAUX}
qui *1 donne :
{0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;1;...;0}
Il ne reste plus qu'à faire la somme des 1 avec sommeprod()
eric
carthagod
Messages postés
33
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 mars 2013
1
22 oct. 2010 à 11:36
22 oct. 2010 à 11:36
merci pour l'explication. Je vais me pencher dessus ce week end pour voir si je comprends.
Sinon j'ai trouvé sur le web une autre solution pour compter le nombre de slash plus simplement :
=LEN(B3)-LEN(SUBSTITUTE(B3;"/";""))
(LEN=NBCAR)
J'ai maintenant une belle colonne toute propre ! merci !
bonne journée,
Thomas
Sinon j'ai trouvé sur le web une autre solution pour compter le nombre de slash plus simplement :
=LEN(B3)-LEN(SUBSTITUTE(B3;"/";""))
(LEN=NBCAR)
J'ai maintenant une belle colonne toute propre ! merci !
bonne journée,
Thomas
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
22 oct. 2010 à 14:55
22 oct. 2010 à 14:55
C'est vrai que c'est plus court... :-)
eric
eric
carthagod
Messages postés
33
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
4 mars 2013
1
23 oct. 2010 à 17:46
23 oct. 2010 à 17:46
Salut Eric,
J'ai à peu près compris ta formule, je ne comprends juste pas le rôle de indirect. que donne la fonction INDIRECT quand on lui donne comme variable une plage de cellule ?
J'ai à peu près compris ta formule, je ne comprends juste pas le rôle de indirect. que donne la fonction INDIRECT quand on lui donne comme variable une plage de cellule ?
eriiic
Messages postés
24601
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
25 novembre 2024
7 243
23 oct. 2010 à 17:55
23 oct. 2010 à 17:55
Bonjour,
Indirect() permet de fabriquer une référence à partir d'une chaine texte.
=indirect("A1") est équivalent à =A1
Indirect() permet de fabriquer une référence à partir d'une chaine texte.
=indirect("A1") est équivalent à =A1