Extraire une chaine de caracteres
Résoluhmcirta Messages postés 233 Date d'inscription dimanche 12 mars 2006 Statut Membre Dernière intervention 11 octobre 2024 - 10 oct. 2024 à 18:33
- Extraire une chaine de caracteres
- Extraire une video youtube - Guide
- Caractères ascii - Guide
- Extraire son d'une video - Guide
- Caractères spéciaux clavier azerty - Guide
- Chaine tnt gratuite sur mobile - Guide
11 réponses
9 oct. 2024 à 20:05
Bonjour à tous,
À condition de bien avoir un espace avant et après le mot composé:
On cherche la position du premier espace après "-" = CHERCHE(" ";A17;CHERCHE("-";A17))
On prend le texte à gauche B18=GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1)
on compte le nombre d'espaces =NBCAR(B18)-NBCAR(SUBSTITUE(B18;" ";""))
puis on cherche la position du dernier espace =CHERCHE("§";SUBSTITUE(B18;" ";"§";2))
On isole le texte à partir de cette position en regroupant tout dans une seule formule:
=STXT(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1);CHERCHE("§";SUBSTITUE(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1);" ";"§";2));99)
9 oct. 2024 à 17:10
Bonjour
En A1 le texte avec le -
En B1 cette formule
=GAUCHE(A1;CHERCHE("-";A1)-2)&DROITE(A1;NBCAR(A1)-CHERCHE("-";A1)-1)
9 oct. 2024 à 17:23
Bonjour,
L'un de nous deux a mal compris.
Supposons que j'écrive en A1:
Un porte-manteau noir (je ne mets pas j'ai devant pour ne pas aggraver le cas).
Ne devrais-je pas retourner:
porte-manteau?
9 oct. 2024 à 18:12
Bonjour Brucine
En A1 le texte avec les espaces et le " - "
En B1 cette formule
=SIERREUR(GAUCHE(A1;CHERCHE(" - ";A1)-1)&DROITE(A1;NBCAR(A1)-CHERCHE(" - ";A1)-1);A1)
Il y aura certainement des ratés du aux espaces
9 oct. 2024 à 18:23
Toujours pas chez moi, ça ramène à l'identique "un porte manteau-noir"
ça, ça ramène le résultat (manteau-noir) à condition qu'il n'y ait pas un autre espace avant (j'ai un porte-manteau noir), c'est capillotracté et sûrement beaucoup plus simple dans Excel 365.
=DROITE(GAUCHE(A1;CHERCHE("-";A1)-1);NBCAR(GAUCHE(A1;CHERCHE("-";A1)-1))-CHERCHE(" ";GAUCHE(A1;CHERCHE("-";A1)-1)))&"-"&GAUCHE(DROITE(A1;NBCAR(A1)-NBCAR(GAUCHE(A1;CHERCHE("-";A1))));CHERCHE(" ";DROITE(A1;NBCAR(A1)-NBCAR(GAUCHE(A1;CHERCHE("-";A1))))))
Modifié le 9 oct. 2024 à 19:01
Re,
"sûrement beaucoup plus simple dans Excel 365."
Oui:
=LET(tbl;FRACTIONNER.TEXTE(A1;" ");INDEX(tbl;EQUIVX("*-*";tbl;2)))
Mais je n'aurais jamais trouvé ta formule !
Daniel
9 oct. 2024 à 18:51
Bonjour Brucine
Si A1 contient "j'ai un porte-manteau - noir" la formule fonctionne
On supprime le " - " entre manteau et noir, comme si cela était une erreur de saisie
j'ai un porte-manteau noir |
Pour le reste je n'ai pas 365 et on a pas assez d'informations pour être sûr de bien répondre à la question
9 oct. 2024 à 19:09
Rien n'est parfait en ce bas monde: si je mets le tiret entre manteau et noir, je me fais jeter dans tous les cas si je ne mets pas un espace après noir, et si je mets j'ai devant, il faut que je coupe non pas au premier espace mais au second, mais là, on n'en finit pas, je peux aussi écrire "ce soir j'ai un porte-jarretelles noir".
La solution discriminante, en supposant là aussi qu'un seul "mot" ait ces caractéristiques serait d'extraire tout ce qui est avant tiret et après espace et de le coller à l'extraction après tiret espace.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question9 oct. 2024 à 18:54
Bonjour à tous,
Une fonction VBA :
Function Extr(C) Application.Volatile For Each Item In Split(C, " ") If IsNumeric(Application.Search("-", Item)) Then Extr = Item Exit For End If Next Item End Function
Utilisation (exemple) :
=EXTR(A1)
Si tu as des problèmes pour installer la fonction, n'hésite pas à demander.
Daniel
Modifié le 9 oct. 2024 à 22:30
Re bonjour
Merci a tous de vos reponses.
Alors voila ce que j'obtiens avec mon cas :
En A1 j'ai le texte suivant:
* Reception de tomate du client WHD-5 : 100kg mure, taille moyenne.
Le but c'est extraire WHD-5.
La reponse 1 donne ce resultat :"* Reception de tomate du client WH : 100 lkg mure, taille moyenne.
La reponse 2 donne ce resultat :"* Reception de tomate du client WHD-5 : 100 lkg mure, taille moyenne."
La reponse 3 donne ce resultat :"Reception de tomate du client WHD-5 "
La reponse 5 donne ce resultat :" de tomate du client WHD-5"
Pour l'installation de la fonction je veux bien de l'aide
Modifié le 10 oct. 2024 à 01:52
Bonjour.
"extraire la suite de caractères qui se trouve entre 2 espaces et qui contient -"
Cette suite peut contenir combien de caractères au maximum ? Ton exemple donne 5 ; est-ce la règle ?
Est-ce que le mot recherché est toujours précédé du mot "client" ?
10 oct. 2024 à 09:37
Bonjour à tous,
Pour installer la fonction :
Ouvre ton classeur. Appuie sur les touches Alt et F11 pour ouvrir la fenêtre de l'éditeur VB :
Repère dans la partie gauche le VBAProject qui a le même nom que ton classeur. Fais un clic droit dessus, clique sur Insertion et sur Module :
Dans la partie droite de la fenêtre, colle le code de la fonction :
Ferme la fenêtre de l'éditeur VB. Enregstre le classeur au format "Classeur Excel (prenant en charge les macros)(*.xlsm).
C'est tout. Tu peux maintenant te servir de la fonction (uniquement dans ce classeur).
Daniel
10 oct. 2024 à 12:49
Bonjour,
Pour Raymond PENTIER : la suite de caracteres peut contenir jusqu'a 10 caracteres et pas toujours precedee du mot client.
Pour danielc0 : Merci pour le tuto et ca marche tres bien.
je suis toujours preuneur si une formule peut le faire aussi.
Merci tous pour votre aide...
10 oct. 2024 à 15:01
Bonjour,
En regroupant j'ai oublié de remplacer un nombre par son expression! Oups!
position du dernier espace =CHERCHE("§";SUBSTITUE(B18;" ";"§";2))
Il faut:
position du dernier espace =CHERCHE("§";SUBSTITUE(B18;" ";"§";NBCAR(B18)-NBCAR(SUBSTITUE(B18;" ";""))))
Ce qui donne pour la formule globale:
=STXT(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1);CHERCHE("§";SUBSTITUE(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1);" ";"§";NBCAR(B18)-NBCAR(SUBSTITUE(B18;" ";""))));99)
je vous laisse remplacer A17 par A1.
Modifié le 10 oct. 2024 à 16:24
Bonjour,
A17 est remplacé par A1, mais reste B18 que je ne sais pas a quelle valeur elle correspond .
Si ca peut etre util, le resultat affiche #VALEUR! meme en remplacant B18 pas A1
10 oct. 2024 à 16:34
B18 est un intermédiaire qui ne sert que pour établir la formule finale.
Il faut se référer au post "9" en le corrigeant.
Il faut aussi décaler de 1 le départ du Stxt( ) pour enlever l'espace au début du résultat :
=STXT(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1);CHERCHE("§";SUBSTITUE(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1);" ";"§";NBCAR(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1))-NBCAR(SUBSTITUE(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1);" ";""))))+1;99)
10 oct. 2024 à 17:07
on peut simplifier un peu (à vérifier)
=STXT(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1);CHERCHE("§";SUBSTITUE(A17;" ";"§";NBCAR(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1))-NBCAR(SUBSTITUE(GAUCHE(A17;CHERCHE(" ";A17;CHERCHE("-";A17))-1);" ";""))))+1;99)
10 oct. 2024 à 18:33
Bonjour,
Les 2 formules marche impecablement !
En tout cas moi je prends les 2 solutions.
Merci a tous pour votre aide
je mets resolu