Extraire une chaine de caracteres
Résoluhmcirta Messages postés 237 Date d'inscription Statut Membre Dernière intervention - 10 oct. 2024 à 18:33
- Extraire une chaine de caracteres
- Extraire une video youtube - Guide
- Extraire le son d'une vidéo - Guide
- Caractères ascii - Guide
- Chaine tnt gratuite sur mobile - Guide
- Caractères spéciaux - Guide
11 réponses
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)
Bonjour
En A1 le texte avec le -
En B1 cette formule
=GAUCHE(A1;CHERCHE("-";A1)-2)&DROITE(A1;NBCAR(A1)-CHERCHE("-";A1)-1)
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
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))))))
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
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 questionBonjour à 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
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
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" ?
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
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...
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.
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)