Extraction d'une chaîne de caractères

m.messaoud29 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention   -  
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour A tous !

Franchement les gars ça fait deux jours que je galère afin de trouver une solution.
Si quelqu'un pouvait m'aider je lui en serais vraiment reconnaissant !

Alors voilà mon problème :

Je cherche à extraire toutes les chaîne de caractère "mo" suivi d'un "chiffre".
J'ai écrit les résultats que je dois obtenir sur le logiciel excel ci-joint.
Je m'explique --->

Voici quelques chaînes de caractères :

1) "sanitaires hommes Co B 3è étage Module 9"
2) "rdc mod 2 SAN H"
3) "niv 2 mo 2 co A"

Moi je veux extraire :
1) Mo 9
2) mo 2
3) mo 2

Je sais qu'il est possible d'extraire en utilisant cette formule : "=STXT(A1;1;TROUVE("Module";A1;1)+7)"

mais je ne parviens paas !

Voici une image excel sur lequel je travail :



Merci d'avance pour toute aide que vous pourrez m'apportez !

A+
A voir également:

4 réponses

Vaucluse Messages postés 26496 Date d'inscription   Statut Contributeur Dernière intervention   6 438
 
Bonjour
voyez ce modèle
https://mon-partage.fr/f/rXW8dTun/
mais il correspond exactement aux exemples que vous donnez,
la formule utilisée impose certains critères:
il n'y a pas de texte mo avant celui concerné
le texte mo ou mod ou modèle est suivi au maximum de deux blanc
le N° de module ne dépasse pas un seul chiffre
si ce n'est pas le cas, on pourra peut être voir autrement ou en deux temps si besoin, et donc revenez avec une liste plus complète de vos cas de figures
l
crdlmnt


La qualité de la réponse dépend surtout de la clarté de la question, merci!
1
m.messaoud29 Messages postés 17 Date d'inscription   Statut Membre Dernière intervention  
 
WOOOOOOOWW !! Franchement vous êtes vraiment génial ! Merci infiniment.
Je n'aurait jamais pu trouver cette formule tous seul.
dans mon tableau il apparaît quelques anomalies :

Mo17 RDC Co C #VALEUR!
San H RDC Co B mo9 #VALEUR!

Mais lorsque je rajoute un espace de cette facon entre "mo" et le "chiffre" le problème est réglé :

Mo 17 RDC Co C Mo 17
San H RDC Co B mo 9 Mo 9

Comment pensez vous que je dois réadapter cette formule du coup :

=SI(NB.SI(A20;"*mo*");"Mo";"")&" "&STXT(SUBSTITUE(STXT(A20;CHERCHE("mo";A20;1);20);" ";"///";1);TROUVE("///";SUBSTITUE(STXT(A20;CHERCHE("mo";A20;1);20);" ";"///";1)

Mercii pour votre temps !!!

Cordialement.
0
PHILOU10120 Messages postés 6445 Date d'inscription   Statut Contributeur Dernière intervention   824
 
Bonjour M.messaoud29

Essayer ceci

=SIERREUR("mo "&STXT(A1;CHERCHE("module";A1;1)+7;2);SIERREUR("mo "&STXT(A1;CHERCHE("mod";A1;1)+4;2);"mo "&STXT(A1;CHERCHE("mo";A1;1)+3;2)))

C'est en forgeant que l'on devient forgeron. -   C'est au pied du mur que l'on voit le maçon - on apprend toujours de ses erreurs
1
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
Bonjour à tous,
autre possibilité: 1 ou 2 chiffres mais il faut un espace entre le chiffre cherché et le texte qui suit.
="mo "&
SUPPRESPACE(STXT(A2;CHERCHE(" ";A2;CHERCHE("mo";A2;1))+1;2))
1
tontong Messages postés 2572 Date d'inscription   Statut Membre Dernière intervention   1 062
 
Bonjour,
J'avais cherché une formule courte mais avec des conditions qui se vérifient.

En effet la formule ne fontionne pas si le texte contient: Mo7 , Mo entre 3A et 3B, Mo 6B, mod 6:, ou, module pair.
En fait elle cherche "mo" puis le premier espace qui suit et renvoie les 2 caractères après cet espace.

Il n'y a pas de miracle, si la base n'est pas rigoureuse la formule se complique et peut devenir irréalisable dans le pire des cas.
0
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour,

Pour un n° de module de 0 à 999 avec ou sans espace :
=SIERREUR("mo " & GAUCHE(STXT(STXT(A1;TROUVE("mo";A1&"mo");99);MIN(TROUVE({1;2;3;4;5;6;7;8;9;0};STXT(A1;TROUVE("mo";A1&"mo");99)&"1234567890";3));3);SOMMEPROD(ESTNUM(STXT(STXT(STXT(A1;TROUVE("mo";A1&"mo");99);MIN(TROUVE({1;2;3;4;5;6;7;8;9;0};STXT(A1;TROUVE("mo";A1&"mo");99)&"1234567890";3));3);LIGNE(DECALER($A$1;0;0;NBCAR(STXT(STXT(A1;TROUVE("mo";A1&"mo");99);MIN(TROUVE({1;2;3;4;5;6;7;8;9;0};STXT(A1;TROUVE("mo";A1&"mo");99)&"1234567890";3));3));1));1)*1)*1));"") 

1
Patrice33740 Messages postés 8561 Date d'inscription   Statut Membre Dernière intervention   1 780
 
Bonjour m.messaoud29.

Désolé suite à ton MP, je vois qu'il faut employer CHERCHE() à la place de TROUVE()
Plutôt que répondre en MP, il vaut mieux répondre ici.

Pour un texte qui se trouve en colonne C, la formule en D2 est :
=SIERREUR("mo " & GAUCHE(STXT(STXT(C2;CHERCHE("mo";C2&"mo");99);MIN(CHERCHE({1;2;3;4;5;6;7;8;9;0};STXT(C2;CHERCHE("mo";C2&"mo");99)&"1234567890";3));3);SOMMEPROD(ESTNUM(STXT(STXT(STXT(C2;CHERCHE("mo";C2&"mo");99);MIN(CHERCHE({1;2;3;4;5;6;7;8;9;0};STXT(C2;CHERCHE("mo";C2&"mo");99)&"1234567890";3));3);LIGNE(DECALER($A$1;0;0;NBCAR(STXT(STXT(C2;CHERCHE("mo";C2&"mo");99);MIN(CHERCHE({1;2;3;4;5;6;7;8;9;0};STXT(C2;CHERCHE("mo";C2&"mo");99)&"1234567890";3));3));1));1)*1)*1));"") 


Cordialement
Patrice
0