Extraire un mot entre deux chaines de caractère

Kassophie

XLDnaute Nouveau
Bonjour ou bonsoir,


Sachant que j'ai dans ma colonne A(désignation) actuellement 940 occurrences. Je voudrais extraire le nom de chaque personne nommée dans le texte de désignation (1 personne par cellule) dans une colonne B.

Le faire à la main est long et génère des erreurs. Les noms peuvent comporter majuscule, minuscules, nombre et même un espace.

Je n'ai pas eu de difficulté sauf pour les 2 exemples mis dans le fichier joint.

Cette difficulté est liée au fait qu'à gauche du nom à extraire, les chaines de caractères sont strictement identiques, alors qu'elles différent à la droite.

Ma formule pour chaque occurrence fonctionne, mais j'aimerai trouver une formule unique qui fonctionnerait pour toutes mes occurrences.

Désignation : Tu as tenté de congeler zebraman par deux fois mais tu n'as pas réussi à le faire entrer dans le congélo.
Résultat désiré : zebraman
Désignation : Tu as tenté de congeler Virtuose mais tu n'as pas réussi à le faire entrer dans le congélo.
Résultat désiré : Virtuose

J'ai essayé plusieurs solutions, hélas, soit je ne les maitrise pas assez pour bien les comprendre, soit je n'ai pas trouvé la bonne.
Il se peut aussi que la solution pour un seule occurrence puisse être simplifiée.
 

Pièces jointes

  • classeurextraction.xlsx
    11.2 KB · Affichages: 110
  • classeurextraction.xlsx
    11.2 KB · Affichages: 121
  • classeurextraction.xlsx
    11.2 KB · Affichages: 118

Gareth

XLDnaute Impliqué
Re : Extraire un mot entre deux chaines de caractère

Bonsoir,

Ci-joint une proposition
 

Pièces jointes

  • classeurextraction.xlsx
    11.3 KB · Affichages: 131
  • classeurextraction.xlsx
    11.3 KB · Affichages: 156
  • classeurextraction.xlsx
    11.3 KB · Affichages: 158

R@chid

XLDnaute Barbatruc
Re : Extraire un mot entre deux chaines de caractère

Bonsoir Kassophie et Bienvenu sur XLD,
Salut Gareth,
J'ai considéré que tout les noms @ extraire commencent par un Majuscule...
Voir PJ, Formule Matricielle,
@ valider par Ctrl+Maj+Entree
@ tirer vers le bas
@ micalement
 

Pièces jointes

  • classeurextraction.xlsx
    11.3 KB · Affichages: 131
  • classeurextraction.xlsx
    11.3 KB · Affichages: 125
  • classeurextraction.xlsx
    11.3 KB · Affichages: 118

Modeste geedee

XLDnaute Barbatruc
Re : Extraire un mot entre deux chaines de caractère

Bonsour®

Cette difficulté est liée au fait qu'à gauche du nom à extraire, les chaines de caractères sont strictement identiques, alors qu'elles différent à la droite.
s'il n'y a que 2 chaines differentes à gauche alors
Code:
=GAUCHE(SUBSTITUE(SUBSTITUE(A2;"Tu as tenté de congeler ";"");"Tu as pénétré chez ";"");TROUVE(" ";SUBSTITUE(SUBSTITUE(A2;"Tu as tenté de congeler ";"");"Tu as pénétré chez ";""))-1)
sinon il faudra ajouter un niveau de SUBSTITUE par chaine différentes

on ignore la difference de la chaine de droite car elle commence toujours par un espace
 

R@chid

XLDnaute Barbatruc
Re : Extraire un mot entre deux chaines de caractère

Bonsoir @ tous,
Oui Modeste geedee, mais...
Ma formule pour chaque occurrence fonctionne, mais j'aimerai trouver une formule unique qui fonctionnerait pour toutes mes occurrences.
on ne connait pas le nombre d'occurrences c'est pour cela j'ai choisi de passer par une formule un peu compliquée, qui fonctionne avec n'importe quelle occurrence @ condition que les phrases soient de cette façon : Occurrence Nom...
Amicalement
 

Modeste geedee

XLDnaute Barbatruc
Re : Extraire un mot entre deux chaines de caractère

Bonsour®
Bonsoir @ tous,
Oui , mais...

on ne connait pas le nombre d'occurrences c'est pour cela j'ai choisi de passer par une formule un peu compliquée, qui fonctionne avec n'importe quelle occurrence @ condition que les phrases soient de cette façon : Occurrence Nom...
Amicalement

:cool: Oui, mais ...
J'ai considéré que tout les noms @ extraire commencent par un Majuscule...
kassophie à dit:
Les noms peuvent comporter majuscule, minuscules, nombre et même un espace.

je suis bien d'accord avec toi Rachid, c'est au demandeur de bien préciser "les conditions" de départ !

une autre solution plus simple serait de partir d'une liste exhaustive des noms possibles...:rolleyes:

reste ensuite l'option VBA ... ?
mais pour le fun, j'apprécie particulièrement ton approche formuliste... :eek:
 

Kassophie

XLDnaute Nouveau
Re : Extraire un mot entre deux chaines de caractère

Bonjour,

Merci de vous êtes pencher sur mon problème. Et surtout de l'avoir résolu :D aussi rapidement en plus, vous êtes renversant.

Comme l'a fait remarqué Modeste geedee à R@chid, les noms à sortir ne commencent pas tous par une Majuscule. Au contraire, je dirais, à vu de nez qu'ils ne sont même 40% à en avoir une. Quelques uns commencent par un chiffre. Donc je n'ai pas choisi cette solution (Et là pour le coup, j'ai plongé aussi dans une incompréhension abyssale de cette formule.Effet que je ressens à chaque fois que j'affronte une formule matricielle. Trop fort pour moi.).

J'aurai pu choisir d'inclure simplement la formule de Modeste geedee dans la mienne, et le tout aurais très bien fonctionné. Sauf pour le Nom avec un espace "Lady Godavi". Ce n'aurait pas été un problème car les noms ayant cette particularité ont été interdit depuis 3 ans, ce qui fait leur rareté actuellement. Donc il est touà fait envisageable de faire une petite correction.

Passer par le VBA, je sais que ça existe, j'ai même été tenté de me pencher sur apprentissage. Il y a longtemps. J'avais renoncé, car lors de l'échanger de fichier la plupart des personnes sont réticentes à ouvrir un fichier contenant une macro (si mes souvenir sont bons). Surtout lorsqu'un message indique une possibilité de virus.

J'ai donc utilisé la formule de Gareth, car elle est celle qui m'étais la plus accessible. En fait je l'ai trouvé tellement bien que j'ai mis ma solution initiale au rencard (enfin presque, car elle me sert à autre chose, ailleurs, et que je manque de temps actuellement pour voir si finalement .... Ah! Excel quand tu me tiens !).

Dans le fichier joint je vous ai mis la solution que j'utilise, avec les 7 autres occurrences (j'avais juste manqué d'imagination pour les modifier en respectant la case).


J'avais effectivement envisager les solutions avec NBCAR (comme Gareth) et SUBSTITUE (Comme Modeste geedee), sans succès car je n'avais pas compris toutes les subtilités. Je ne les ai d'ailleurs toujours pas comprises

Serait-ce exagéré que de demandé à Gareth et Modeste de m'expliquer leurs formules ?

Exemple pour NCAR, je ne comprends toujours pas le pourquoi de "NBCAR(Ocurrences!$A$2)+2"

CHERCHE(" ";A1;NBCAR(Ocurrences!$A$2)+2)-NBCAR(Ocurrences!$A$2)-3)

Et cette façon de faire, je sais quelle fonctionne, je l'utilise avec la fonction TROUVE, mais je ne comprends pas comment et pourquoi elle fonctionne !!!

Je suis consciente d'avoir beaucoup de lacunes sur excel, bien que je l'utilise très souvent et toujours avec le même plaisir.


Merci encore à vous tous.


Oups, j'ai oublié, une liste exhaustive est impossible car il y a pas mal de mouvement et surtout actuellement près de 1520 actifs et n'ai trouvé actuellement que 501 d'entre eux.
 

Pièces jointes

  • Copie de classeurextraction.xlsx
    15.2 KB · Affichages: 83
Dernière édition:

Gareth

XLDnaute Impliqué
Re : Extraire un mot entre deux chaines de caractère

Bonjour,

Le NBCAR(Ocurrences!$A$2)+2, c'est la position de départ du CHERCHE.
On cherche un espace.
NBCAR(Ocurrences!$A$2) donne le premier espace apres l'occurence choisie (c'est à dire avant le mot cherché).
Donc +2 pour commencer apres et donc trouver la position de celui qui suit le mot cherché.
 

Gareth

XLDnaute Impliqué
Re : Extraire un mot entre deux chaines de caractère

Re,

Ci-joint une formule matricielle unique.
 

Pièces jointes

  • classeurextraction.xlsx
    15.9 KB · Affichages: 129
  • classeurextraction.xlsx
    15.9 KB · Affichages: 148
  • classeurextraction.xlsx
    15.9 KB · Affichages: 152

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 133
Membres
103 128
dernier inscrit
pmordel@parisbrestconsult