Excel : Si.conditions et chaines de caractères

  • Initiateur de la discussion Initiateur de la discussion Clem17
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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";
"-"))
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)
 
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 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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour