Extraction d'une chaîne de caractères complexe

Résolu/Fermé
m.messaoud29
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021
- 26 déc. 2017 à 15:37
Mazzaropi
Messages postés
1965
Date d'inscription
lundi 16 août 2010
Statut
Contributeur
Dernière intervention
18 septembre 2022
- 26 déc. 2017 à 23:44
Bonjour A tous !

Franchement les gars ça fait deux jours que je galère afin de trouver une solution à mon problème.
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 "NIV", "étage", "4è étage" suivi d'un "chiffre".
Je dois extraire uniquement la chaîne de caractère représentant le niveau (étage de l'immeuble ou rez de chaussée)
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) clim hs niv 1
2) Hottes aspirantes HS*MO 2 niv 2
3) Urinoir bouché + 2 robinets HS*Co C 1er étage Module pair
4) Urinoir bouché*Niv 3 CO 9A bloc sanitaire n°BA 00 199
5) Absence complète de lumière (manque une télécommande)*3A - Nord - boquette DJ2M023 2è étage
6) 2 San bouché*Niv 2 co 4A/B et NIV 1 co 2B
7) L'extration de la chambre climatique ne fonctionne pas*rdc entre 5B et 7B est côté nord
8) Changer des néons*RDC atelier aev16 CO 6B
9) T° trop élevée 27°RDC atelier aev16 CO 6B
10) Changer des néons*Patisserie et zone préparation chaude au niveau des hotes RDC
11) Plusieur neons HS*RDC co 3C
12)Urinoir bouché*RDC CO C MO 19
13) Ne veut pas de lumière dans son bureau*entre 7A et 8A - Boquette H341NO59 - 1er étage
14) San H urinoirs et lavabos bouchés & san F lavabos bouchés*niv 1 CO 9B Sud
15) Problème d’extraction des fumées au niveau de nos fours*hall technique des Labos (Poteau Q103)
16) Odeur de brulé*Co 3A 3è étage Nord
17) San H poussoir de chasse d'eau HS*co C RDC rdc rue interieur
18) Télécommande HS*Niv 1 CO 8A Nord
19) Couloir dans le noir*4è étage Co 6A Nord
20) Ampoule de lampe de bureau HS*Niv 1 co 5B
21) 1 télécommande HS*niv 1 co 2B sud
22) 1 plafonnier HS*niv 1 co 2B sud


Moi je souhaiterais extraire ceci :

1) Niv 1
2) Niv 2
3) Niv 1
4) Niv 3
5) Niv 2
6) Niv 1
7) RDC
8) RDC
9) RDC
10) RDC
11) RDC
12) RDC
13) Niv 1
14) Niv 1
15) (ne rien mettre car pas renseigné)
16) Niv 3
17) RDC
18) Niv 1
19) Niv 4
20) Niv 1
21) Niv 1
22) Niv 1

Je sais qu'il est possible d'extraire en utilisant cette formule : =SIERREUR((SUPPRESPACE(STXT(SUBSTITUE(niv;"niv ";"Niv ");CHERCHE("niv ";C2;1);5)));"")

Mais je ne parviens malheureusement pas à trouver une solution. Je pense réellement que cela relève du génie ! :D



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

A+

m.messaoud29

5 réponses

Vaucluse
Messages postés
26495
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
8 avril 2022
6 272
26 déc. 2017 à 16:27
Bonjour
une solution partielle ici..
mais elle strictement liée au format d'écriture et ne fonctionne pas à tous les coups selon les textes
En particulier, elle ne fonctionne pas lorsque niv est précédé d'un * collé comme par exemple en ligne 4
pour résoudre ce point là, vous pouvez renvoyez vos données dans une seconde colonne avec cette" formule:

=SUBSTITUE(A1;"*";" ") avant d'appliquer celle du modèle, et faire un copier collage spécial valeur ça devrait améliorer mais je n'ai plus le temps là de faire le test
https://mon-partage.fr/f/KvZGKvG0/

crdlmnt
0
m.messaoud29
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021

26 déc. 2017 à 22:46
Merci pour l'aide apportée ;)
0
Mike-31
Messages postés
18048
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
19 septembre 2022
4 992
26 déc. 2017 à 17:14
Bonsoir le fil,

une autre approche parce qu'il y a plusieurs variables à traiter, les espaces, les étoiles, majuscule et minuscule etc

si ton tableau commence en A1 en B1 par exemple coller cette formule on verra après si elle peut être raccourcie
=SIERREUR(GAUCHE(DROITE(SUBSTITUE(A1;"niv";"Niv");NBCAR(A1)-TROUVE("Niv ";SUBSTITUE(A1;"niv";"Niv");1)+1);5);SIERREUR(GAUCHE(DROITE(SUBSTITUE(A1;"rdc";"RDC");NBCAR(A1)-TROUVE("RDC";SUBSTITUE(A1;"rdc";"RDC");1)+1);3);SIERREUR("Niv "&GAUCHE(SUPPRESPACE(SUBSTITUE(DROITE(A1;NBCAR(A1)-TROUVE("étage";A1;1)+5);"*";""));1);"")))
0
m.messaoud29
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021

26 déc. 2017 à 22:46
Apparemment il y a trop d'arguments et des signe "-" dans la fonction qui causent pro.
Merci pour votre aide
0
Mike-31
Messages postés
18048
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
19 septembre 2022
4 992
Modifié le 26 déc. 2017 à 17:43
Re,

une autre approche avec NB.SI
on commence par traiter les RDC avec
=SI(NB.SI(A1;"*rdc*")>0;"RDC";"")
ensuite les niv avec
SI(NB.SI(A1;"*niv 1*")>0;"Niv 1";SI(NB.SI(A1;"*niv 2*")>0;"Niv 2";SI(NB.SI(A1;"*niv 3*")>0;"Niv 3";SI(NB.SI(A1;"*niv 4*")>0;"Niv 4";""))))
puis les étages avec
SI(NB.SI(A1;"*1er étage*")>0;"Niv 1";SI(NB.SI(A1;"*2è étage*")>0;"Niv 2";SI(NB.SI(A1;"*3è étage*")>0;"Niv 3";SI(NB.SI(A1;"*4è étage*")>0;"Niv 4";""))))

et pour finir on relance chaque série de conditionnelle avec un & ce qui donne
=SI(NB.SI(A1;"*rdc*")>0;"RDC";"")&SI(NB.SI(A1;"*niv 1*")>0;"Niv 1";SI(NB.SI(A1;"*niv 2*")>0;"Niv 2";SI(NB.SI(A1;"*niv 3*")>0;"Niv 3";SI(NB.SI(A1;"*niv 4*")>0;"Niv 4";""))))&SI(NB.SI(A1;"*1er étage*")>0;"Niv 1";SI(NB.SI(A1;"*2è étage*")>0;"Niv 2";SI(NB.SI(A1;"*3è étage*")>0;"Niv 3";SI(NB.SI(A1;"*4è étage*")>0;"Niv 4";"")))) 

et si tous les cas n'ont pas été traités on peut relancer une série de conditionnelle
A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
0
m.messaoud29
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021

26 déc. 2017 à 22:50
Ah vous êtes génial merci beaucoup !!! C'est parfait!
0
Mazzaropi
Messages postés
1965
Date d'inscription
lundi 16 août 2010
Statut
Contributeur
Dernière intervention
18 septembre 2022
64
Modifié le 26 déc. 2017 à 20:25
m.messaoud29, Bonsoir.

Vous avez déjà reçu plusieurs options en réponse.
Aussi, je vais laisser ici ma modeste contribution à la solution de votre besoin.

La formule:
=MAJUSCULE(SIERREUR(STXT(A1;TROUVE("niv ";A1;1);5); SIERREUR(STXT(A1;TROUVE("RDC";A1;1);3);SIERREUR("NIV " & STXT(A1;RECHERCHE(9,99E+21;TROUVE({"er é";"è é"};A1))-1;1);""))))

https://www.cjoint.com/c/GLAtgkceglJ

S'il vous plaît dites-nous si cela a fonctionné comme vous en aviez besoin.
J'espère avoir aidé.
--
Belo Horizonte, Brasil.
Marcílio Lobão
0
m.messaoud29
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021

26 déc. 2017 à 22:53
Ah merci infiniment pour le temps consacré, votre programme fonctionne à merveille ! ;)
0

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

Posez votre question
Mazzaropi
Messages postés
1965
Date d'inscription
lundi 16 août 2010
Statut
Contributeur
Dernière intervention
18 septembre 2022
64
26 déc. 2017 à 23:44
m.messaoud29,

Content de t'avoir aidé.
Bonne semaine.
--
Belo Horizonte, Brasil.
Marcílio Lobão
0