Extraction d'une chaîne de caractères complexe [Résolu/Fermé]

Signaler
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021
-
Messages postés
1926
Date d'inscription
lundi 16 août 2010
Statut
Contributeur
Dernière intervention
12 juin 2021
-
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

Messages postés
26064
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
4 juin 2021
5 956
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
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021

Merci pour l'aide apportée ;)
Messages postés
17372
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 juin 2021
4 640
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);"")))
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021

Apparemment il y a trop d'arguments et des signe "-" dans la fonction qui causent pro.
Merci pour votre aide
Messages postés
17372
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 juin 2021
4 640
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...
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021

Ah vous êtes génial merci beaucoup !!! C'est parfait!
Messages postés
1926
Date d'inscription
lundi 16 août 2010
Statut
Contributeur
Dernière intervention
12 juin 2021
60
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
Messages postés
17
Date d'inscription
jeudi 19 octobre 2017
Statut
Membre
Dernière intervention
26 mars 2021

Ah merci infiniment pour le temps consacré, votre programme fonctionne à merveille ! ;)
Messages postés
1926
Date d'inscription
lundi 16 août 2010
Statut
Contributeur
Dernière intervention
12 juin 2021
60
m.messaoud29,

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