Excel : Si.conditions et chaines de caractères

Clem17

XLDnaute Nouveau
Bonjour,

J'ai beau tourner le problème dans tous les sens, je dois coincer quelque part.

Dans une de mes colonnes, j'ai des chaines de caractères (par exemple : "H317 H319 H351 H360 H371 H400 H410") et je souhaiterai que Excel me cherche certaines chaines dans cette cellule et me renvoie dans une autre cellule "CMR1" ou "CMR2" ou "-"
Pour que CMR1 soit renvoyé il faut au moins une chaine suivante : H340 H350 H360 H370 H372
Pour que CMR2 soit renvoyé il faut au moins une chaine suivante : H341 H351 H361 H362 H371 H373
Si aucune de ces chaines de caractères sont présentes dans ma cellule, que "-" soit renvoyé

J'ai essayé avec SI.CONDITIONS, qui me paraissait être le plus pertinent vu le nombre d'arguments, mais ça me renvoie #NA. J'ai tenté d'imbriquer des OU ou NB.SI(G80;"*H351*".....), sans que ça fonctionne...

Actuellement :
Dans ma cellule G80 il y a : H317 H319 H351 H400 H410

=SI.CONDITIONS(G80="*H340*";"CMR1";
G80="*H341*";"CMR2";
G80="*H350*";"CMR1";
G80="*H351*";"CMR2";
G80="*H360*";"CMR1";
G80="*H361*";"CMR2";
G80="*H362*";"CMR2";
G80="*H370*";"CMR1";
G80="*H371*";"CMR2";
G80="*H372*";"CMR1";
G80="*H373*";"CMR2")

Techniquement la formule devrait me renvoyer "CMR2"

Je "crains" que le plus simple soit de créer une macro mais je ne sais pas (encore...) faire.
Sauriez-vous éclairer ma lanterne svp ?

Merci et bonne journée
Clément
 
Solution
Bonjour Clem, Patrick
Avec une formule. Essayez ça, ça a l'air de marcher :
VB:
=SI(NB.SI(G80;"*H340*")+NB.SI(G80;"*H350*")+NB.SI(G80;"*H360*")+NB.SI(G80;"*H370*")+NB.SI(G80;"*H372*")>0;"CMR1";
SI(NB.SI(G80;"*H341*")+NB.SI(G80;"*H351*")+NB.SI(G80;"*H361*")+NB.SI(G80;"*H362*")+NB.SI(G80;"*H371*")+NB.SI(G80;"*H373*")>0;"CMR2";
"-"))

patricktoulon

XLDnaute Barbatruc
bonjour
dans un module standard
VB:
Public Function liker(cel As String)
liker = "-"
If InStr(1, "H340 H350 H360 H370 H372", cel) > 0 Then liker = "CMR1"
If InStr(1, "H341 H351 H361 H362 H371 H373", cel) > 0 Then liker = "CMR2"
End Function

dans une cellule par exemple la formule simple
=LIKER(A3)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Clem, Patrick
Avec une formule. Essayez ça, ça a l'air de marcher :
VB:
=SI(NB.SI(G80;"*H340*")+NB.SI(G80;"*H350*")+NB.SI(G80;"*H360*")+NB.SI(G80;"*H370*")+NB.SI(G80;"*H372*")>0;"CMR1";
SI(NB.SI(G80;"*H341*")+NB.SI(G80;"*H351*")+NB.SI(G80;"*H361*")+NB.SI(G80;"*H362*")+NB.SI(G80;"*H371*")+NB.SI(G80;"*H373*")>0;"CMR2";
"-"))
 

Clem17

XLDnaute Nouveau
Bonjour Clem, Patrick
Avec une formule. Essayez ça, ça a l'air de marcher :
VB:
=SI(NB.SI(G80;"*H340*")+NB.SI(G80;"*H350*")+NB.SI(G80;"*H360*")+NB.SI(G80;"*H370*")+NB.SI(G80;"*H372*")>0;"CMR1";
SI(NB.SI(G80;"*H341*")+NB.SI(G80;"*H351*")+NB.SI(G80;"*H361*")+NB.SI(G80;"*H362*")+NB.SI(G80;"*H371*")+NB.SI(G80;"*H373*")>0;"CMR2";
"-"))


Bonjour,

C'est exactement ça, merci !!
Belle journée à vous
 

Membres actuellement en ligne

Statistiques des forums

Discussions
314 073
Messages
2 105 361
Membres
109 341
dernier inscrit
yucuf