Extraire une chaine de caracteres

hmcirta Messages postés 226 Date d'inscription dimanche 12 mars 2006 Statut Membre Dernière intervention 9 octobre 2024 - 9 oct. 2024 à 16:35
tontong Messages postés 2557 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 9 octobre 2024 - 9 oct. 2024 à 20:05

Bonjour,

Comment extraire la suite de caracteres qui se trouve entre 2 espaces et qui contient "-" (sans guillemets).

Merci de votre aide habituelle

NB: j'ai excel 2010

A voir également:

5 réponses

PHILOU10120 Messages postés 6393 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 9 octobre 2024 810
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)


0
brucine Messages postés 17108 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 9 octobre 2024 2 428
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?

0
PHILOU10120 Messages postés 6393 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 9 octobre 2024 810
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


0
brucine Messages postés 17108 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 9 octobre 2024 2 428
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))))))
 

0
danielc0 Messages postés 1180 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 9 octobre 2024 134 > brucine Messages postés 17108 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 9 octobre 2024
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

0
PHILOU10120 Messages postés 6393 Date d'inscription lundi 16 avril 2012 Statut Contributeur Dernière intervention 9 octobre 2024 810
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


0
brucine Messages postés 17108 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 9 octobre 2024 2 428
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.

0
danielc0 Messages postés 1180 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 9 octobre 2024 134
9 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


0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tontong Messages postés 2557 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 9 octobre 2024 1 057
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)

0