Fonction SI() faisant appel uniquement à des cellules pour le test logique

Résolu
gurumiam Messages postés 16 Date d'inscription   Statut Membre Dernière intervention   -  
Raymond PENTIER Messages postés 58949 Date d'inscription   Statut Contributeur Dernière intervention   - 18 août 2021 à 14:56
Bonjour,

Je suis coincée sur un projet d'outil... je souhaite intégrer une mention en fonction d'un résultat.
Mais je souhaite ne faire appel qu'à d'autres cellules pour le test logique.
J'ai en I1 la direction de l'objectif (qui est différent en fonction de la ligne), en J1 la valeur de l'objectif, en K1 à V1 les résultats mensuels.
J'ai besoin de faire apparaitre un texte en W1 en fonction de plusieurs critères, W1 doit mentionner "Yes" si toutes ces conditions sont remplies :
1. T1 est soit meilleur que la moyenne des 3 mois précédents (Q1 à S1), soit à l'objectif
2. T2 est soit meilleur que la moyenne des 3 mois précédents (Q1 à S1), soit à l'objectif
3. T3 est soit meilleur que la moyenne des 3 mois précédents (Q1 à S1), soit à l'objectif

Je peux bien-sûr imbriquer une suite de SI(), ou SI.CONDITIONS() en précisant systématiquement la direction de l'objectif (ex : SI(I1="<=";ET(OU(T1<=J1;T1<MOYENNE(K1:V1);"Yes";"No") et ainsi de suite
Mais j'aimerai quelque chose de plus propre.

J'ai bien tenté quelque chose qui marche avec NB.SI(), mais la formule ne fonctionne pas avec SI() : SI(OU(T1&I1&J1;T1&GAUCHE(I1)&MOYENNE(K1:V1));"Yes";"No")
Je sais, il n'y a pas mes conditions précitées 1. 2. 3. mais j'ai déjà besoin de faire le premier test logique:))

(PI- je dois utiliser GAUCHE() car le test avec la moyenne doit être strictement meilleur, et non meilleur ou égal, alors que la direction de l'objectif est le plus souvent "<=" ou ">=")

Et je ne peux pas utiliser de macros (si ça avait été possible ?) car les utilisateurs du fichier seront nombreux, avec différentes versions d'Excel, j'ai eu de mauvaises surprises par le passé.

Voilà, j'espère que c'est assez précis...

Merci de votre aide !
A voir également:

11 réponses

Le Pingou Messages postés 12242 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Se serait plus simple de comprendre avec le fichier comme exemple, se qui évite de devoir tous construire pour arrivée à tout déchiffrer..
Et un petit exemple manuel serait le bien venu...!
Le mettre sur https://www.cjoint.com/ ou https://mon-partage.fr/ et poster le lien.
0
via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 742
 
Bonsoir

Assez précis peut être mais peu compréhensible et traitable sans l'exemple du fichier réel
Poste un exemple de ton fichier (allégé et anonymisé si nécessaire) sur cjoint.com, fais crééer un lien que tu copies et reviens coller ici

Cdlmnt
Via
0
Raymond PENTIER Messages postés 58949 Date d'inscription   Statut Contributeur Dernière intervention   17 320
 
Bonjour.

En attendant ton fichier, réclamé par mes petits camarades Le Pingou et Via, je peux déjà t'indiquer que, en raison de ta remarque "les utilisateurs du fichier seront nombreux, avec différentes versions d'Excel" , il te faut exclure l'idée d'utiliser la fonction SI.CONDITIONS() qui est disponible dans très peu de versions, récentes de surcroit.
0
gurumiam Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour et merci à tous les 3 de votre réactivité,

Voici le lien vers le fichier : https://www.cjoint.com/c/KHsh0cEnzzg

@Raymond, merci je n'utiliserai plus SI.CONDITIONS() à l'avenir dans ce type de fichiers. Sais-tu si la fonction SI.MULTIPLE() est également à éviter ?
0

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

Posez votre question
PapyLuc51 Messages postés 4490 Date d'inscription   Statut Membre Dernière intervention   1 473
 
Bonjour gurumiam

Salutations à Le Pingou, Via et Raymond

Je ne sais si j'ai tout compris ; je propose

=SI(ET(T1>=MOYENNE(Q1:S1);U1>=MOYENNE(Q1:S1);V1>=MOYENNE(Q1:S1));"Yes";"No")

ou une autre

=SI(ET(T1>=(Q1+R1+S1)/3;U1>=(Q1+R1+S1)/3;V1>=(Q1+R1+S1)/3);"Yes";"No")

Et en ce qui concerne la question sur SI.MULTIPLE() c'est effectivement la même chose

Une possibilité pour que tout le monde utilise ces fonctions c'est de passer à LibreOffice Calc

Cordialement
0
gurumiam Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour PapyLuc,

Merci pour ta réponse
Je doit cependant éviter d'inscrire la direction de l'objectif (figurant en I1) dans le test logique, car c'est une donnée qui est amenée à changer… d'où mon problème.
Je souhaite donc faire appel à I1 pour donner la direction du test logique, comme ça il s'adapte automatiquement (si <= alors il test si c'est inférieur, si >= alors il test si c'est supérieur)

D'autres pistes...?

Cordialement
0
PapyLuc51 Messages postés 4490 Date d'inscription   Statut Membre Dernière intervention   1 473
 
Je n'avais effectivement pas tout compris.

Tu veux dire J1 pour l'objectif (5%) à atteindre et non pas I1 où est inscrit <=

Chaque cellule doit donc être supérieur à la MOYENNE(Q1:S1) ou égale à J1

Si oui alors

=SI(ET(OU(T1=J1;T1>MOYENNE(Q1:S1));OU(U1=J1;U1>MOYENNE(Q1:S1));OU(V1=J1;V1>MOYENNE(Q1:S1)));"Yes";"No")

sinon décortique un peu plus en détail ce que tu cherches.

Cordialement
0
gurumiam Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Et non, justement I1 et J1 changent.

Je peux avoir des objectifs très différents dont la direction change :
un objectif <=5%
ou un autre >=90%
donc j'ai besoin de faire appel à I1 pour connaitre la direction du test logique (et bien-sûr comme tu le mentionne à J1 pour la valeur de référence)

Ta proposition ne marche malheureusement que pour une seule direction d'objectif, et non en fonction de la saisie en I1...
C'est pourquoi je cherche le moyen de n'inscrire dans la formule aucun signe de direction

Cordialement
0
via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 742
 
Re

Sous résèrve que j'ai bien compris ce que tu voulais, essaye la formule :
=SI(ET(OU(NB.SI(T1;GAUCHE(I1)&J1);NB.SI(T1;GAUCHE(I1)&MOYENNE(Q1:S1))); OU(NB.SI(U1;GAUCHE(I1)&J1);NB.SI(U1;GAUCHE(I1)&MOYENNE(Q1:S1))); OU(NB.SI(V1;GAUCHE(I1)&J1);NB.SI(V1;GAUCHE(I1)&MOYENNE(Q1:S1)))); "yes";"no")

Cdlmnt
Via
0
gurumiam Messages postés 16 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Via,

J'étais justement entrain de tester cette solution !
Et ça marche parfaitement :)

Merci à tous pour votre aide et vos précieux conseils :)
0
Raymond PENTIER Messages postés 58949 Date d'inscription   Statut Contributeur Dernière intervention   17 320
 
Bonjour gurumiam.

Tu trouveras la réponse complète et détaillée, pour les fonctions nouvelles, dans cet excellent lien
https://www.digicomp.ch/blognews/2017/05/05/la-nouvelle-fonction-si-conditions-quand-si-ne-suffit-plus
0