Limitation Fonction SI()

  • Initiateur de la discussion Initiateur de la discussion Pierre
  • 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 !

P

Pierre

Guest
Bonjour le Forum,

Etant limité par les 7 imbrications de la fonction SI() sauriez-vous me dire s'il existe-t'il une possibilité de faire référence à une plage de cellules discontinues lorsqu'on utilise la fonction SI.

Déjà merci et bonne journée


Pierre
 
Bonjour amis

pour Pierre:
tu peux aussi essayer de combiner avec des
OU et des ET suivant le cas
mais souvent on est obligé de passer par des cellules intermédiaires de travail (et parfois même des feuilles des travail)

et puis ensuite on se dit que l'on est trop limité par Excel en temps que feuilles de calcul, alors, on se met alors petit à petit aux macros VB et là c'est un autre monde qui ne connait pas les mêmes limites . . . (mais d'autres . . . )

pour Monique qui demande un exempl, voicii je pense un exemple d'imbrication de SI combiné avec OU dans une feuille de travail
=SI(MAX(résumé!AL3:résumé!AL146)=0;"";SI(OU(MOIS(MAX(résumé!AL3:résumé!AL146))=4;MOIS(MAX(résumé!AL3:résumé!AL146))=8;MOIS(MAX(résumé!AL3:résumé!AL146))=10);"Mois d' "&TEXTE(MAX(résumé!AL3:résumé!AL146);"mmmm aaaa");"Mois de "&TEXTE(MAX(résumé!AL3:résumé!AL146);"mmmm aaaa")))
 
bonjour a tous,

moi je passe par des criteres de selections, c'est un peu plus long mais c'est tres fiable .

il est vrai pierre qu'avec un exemple ce serait plus facile de te répondre .

bonne journée à tous
 
Tiens Pierre, regardes cet exemple.

Tu remarqueras, que selon la valeur de AH4, ma plage change.

Et naturellement, tu remarqueras, que j'ai imbriqué plus de sept "Si"

SI(1+$AG$4>$AI$7;"0";SOMME(SI($AH$4=2;NB.SI(C15😀15;$AI$4));SI($AH$4=3;NB.SI(C15:E15;$AI$4));SI($AH$4=4;NB.SI(C15:F15;$AI$4));SI($AH$4=5;NB.SI(C15:G15;$AI$4));SI($AH$4=6;NB.SI(C15:H15;$AI$4));SI($AH$4=7;NB.SI(C15:I15;$AI$4));SI($AH$4=8;NB.SI(C15:J15;$AI$4));SI($AH$4=9;NB.SI(C15:K15;$AI$4));SI($AH$4=10;NB.SI(C15:L15;$AI$4));SI($AH$4=11;NB.SI(C15:M15;$AI$4));SI($AH$4=12;NB.SI(C15:N15;$AI$4));SI($AH$4=13;NB.SI(C15:O15;$AI$4))))

En fait, dans ce cas, tu peux choisir la plage de cellule de ton choix, et selon une condition.

Il me semble que cette formule, se rapproche de ce que tu demandes.

@ +

Moa
 
Salut à tous et merci pour votre intérêt,

IL est vrai que j'imaginais une réponse assez générale aussi ai-je sans doute manqué de précision dans ma demande.

En vérité, je travaille sur un classeur qui reprend la grille horaire de mon équipe. Plus qu'une grille horaire, c'est 3 grilles différentes qui sont générées lorsque je travaille sur la première d'entre-elles.
La seconde (qui me préoccupe) reprend les données nécessaires au service.
Par exemple les M (matins) les S (soir) les Va (vacances annuelles)...A l'exceptions de quelques données, les autres codes sont remplacés par un "*".
La troisième grille est celle destinée à l'adminitration et filtre à son tour les données de la grille de travail.
Donc ma formule dans la première cellule de la seconde grille (AN5) est
=SI(C5="M";"M";SI(C5="S";"S";SI(C5="Mld";"Mld";SI(C5="Va";"Va";SI(C5="4";"4";SI(C5="Cc";"Va";SI(C5="Ca";"Va";SI(C5=8;8;"*"))))))))
alors que la cellule BZ5 est
=SI(C5="M";" ";SI(C5="S";" ";SI(C5="Rh";" ";SI(C5="Jr";" ";SI(C5=8;" ";SI(C5=4;" ";SI(C5="T";" ";C5)))))))
Il faut savoir en outre que tous les codes acceptés dans la grile de travail sont présents sur la feuille et serve à une validation pour éviter que des codes non reconnus par l'administration soient introduits.
Ce que j'aimerais c'est utiliser cette zone qui me sert de validation pour pouvoir "bypasser" la limite des 7 Si() en faisant référence à cette zone plutôt qu'à la cellule C5 (par ex), mais quand j'esssaye ça ne marche pas.
J'espère n'avoir pas été trop brouillon dans mes explications, parce qu'envoyer le classeur est difficile (plus de 4 Mb avant compression)

Déjà merci.


Pierre
 
Bonjour,

On peut regrouper dans un même "OU" toutes les conditions qui donnent le même résultat.
=SI(OU(C5="M";C5="S";C5="Mld";C5="Va";C5=4);C5;SI(OU(C5="Cc";C5="Ca");"Va";SI(C5=8;8;"*")))
=SI(OU(C5="M";C5="S";C5="Rh";C5="Jr";C5=8;C5=4;C5="T");" ";C5)

On peut aussi regrouper les symboles dans une plage et utilise la fonction NB.SI :
pour la 1ère formule :
=SI(NB.SI(plage;C5)>0;C5;SI(NB.SI(ccca;C5)>0;"Va";SI(C5=8;8;"*")))
pour la 2è formule :
=SI(NB.SI(plage_a;C5)>0;"";C5)

La plage nommée "plage" contient les symboles M, S, Mld, Va, 4
Au fait, si tu mets des guillemets autour du chiffre 4, Excel le considère comme du texte.
La plage nommée "ccca" contient cc et ca (je ne me suis pas foulée)
Celle nommée plage_a contient M S RH JR 8 4 T
La casse n'a pas d'importance.
 
Tiens un autre exemple, pris sur l'excellent site Disciplus :


Nommer la formule qui a une serie de 7 si (sept1)
dans une cellule:
=SI($A$1=1;11;SI($A$1=2;22;SI($A$1=3;33;SI($A$1=4;44;SI($A$1=5;55;SI($A$1=6;
66;SI($A$1=7;77;FAUX)))))))

nommer la formule qui a une autre serie de 7 si (sept2)
dans un autre cellule:
=SI($A$1=8;88;SI($A$1=9;99;SI($A$1=10;100;SI($A$1=11;110;SI($A$1=12;120;SI($
A$1=13;130;SI($A$1=14;140;FAUX)))))))

dans une troisième:
=si(sept1;sept1;sept2)

Je l'ai testé, ça marche impec, et surtout, cette façon de faire te laisse une très grande liberté dans tes formules.

http://disciplus.simplex.free.fr/

Moa
 
Bonsoir, Moa

Je ne connais pas, ce site Disciplus, mais l'intervenant n'a pas trouvé le bon exemple pour expliquer l'imbrication des SI. (=$A$1*11), le comparateur est identique, et la valeur renvoyée est le multiple, avant de faire des formules à rallonge...

Si la valeur renvoyée une zone de texte, l'utilisation des fonctions de recherches dans des plages est à privilégier.

Nous, utilisateurs confirmés d'Excel et membres actifs de XLS, aiguillons déjà les personnes sur ces fonctions, plutôt dans la galère des si(si(si(si(si(si(si())))))).
Qui ne permettent pas une liberté dans les formules.

Pierre, si la réponse de monique ne te dépanne pas, tu devrais fournir un fichier d'exemple. Merci

@+Jean-Marie
 
Bonsoir

Qu'il est rassurant de voir qu'on n'est pas seul face aux multiples aspects d'Excel.;o)

Merci à chacun de vous pour vos précieux conseils.
A priori la formule de Monique me semble convenir. Je ne saurai l'affirmer qu'à partir de Lundi, lorsque je l'aurai testée sur le fichier des horaires, mais le fichier que j'ai recréé ici renvoie les bonnes données.
Par curiosité, et dans un but pédagogique, quelles fonctions de recherche envisagerais-tu dans ce cas Jean-Marie?

Pierre
 
Re...

Pierre regarde le fichier en exemple.

A partir d'une liste des codes (colonne A) et des différentes possibilités (colonne B:C).

Avec la formule =SI(NB.SI(A:A;"="&E5)=0;"*";RECHERCHEV(E5;A:C;2;FAUX)), pour la cellule AN5, et la formule =SI(NB.SI(A:A;"="&E8)=0;E8;RECHERCHEV(E8;A:C;3;FAUX)), pour BZ5.
Il est très facile de remplacer les SI imbriqués.

Bonne soirée

@+Jean-MArie
 
Bonjour,

J'ai testé tes formules, Jean-Marie, et c'est vrai que non seulement ça fonctionne mais en plus cela permet une beaucoup plus grande flexibilité. Comme je me prépare à devoir adapter ce classeur horaire pour ajouter de nouveaux codes (mais pas du VBA, enfin pas encore), il me semble intéressant de viser à plus long terme et d'envisager la possibilté que d'autres codes puissent être ajoutés. Je crois que la semaine prochaine va être chargée.
Au fait, que signifie le "="&E5 (c'est la seule zone que je ne parviens pas à décrypter)?

Beau WE à tous
 
Bonjour Pierre

La fonction RECHERCHEV() renvoi une valeur en fonction du numéro de la colonne de la plage, par rapport à la valeur à chercher. Si cette fonction ne trouve pas la valeur demandée, elle renvoie la valeur #NA.

Le début de la formule sert à tester si la valeur à chercher, est belle et bien dans la plage.

Le "="&E5 c'est pour mon exemple, toi tu devras mettre "="&C5 ou tout simplement C5. NB.SI ne fait pas de différence entre alpha et le numérique.

@+Jean-Marie
 
Re Jean Marie,

Ce qui me pose question c'est justement la présence des guillemets et de l'esperluette, le reste de ta formule me semblait limpide. Puis-je déduire de ton dernier post que ces signes force la formule à reconnaître le référence comme alphanumérique plutôt que numérique? Dans ce cas quel en est l'intérêt (de façon générale s'entend)?

Bonne soirée

Pierre
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
371
Réponses
5
Affichages
377
Réponses
2
Affichages
196
Réponses
16
Affichages
532
Retour