Limitation Fonction SI()

  • Initiateur de la discussion Pierre
  • Date de début
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
 
B

Bernard LAUNAY

Guest
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")))
 
D

dj.run

Guest
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
 
M

Moa

Guest
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:D15;$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
 
P

Pierre

Guest
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
 
M

Monique

Guest
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.
 
M

Moa

Guest
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
 
J

Jean-Marie

Guest
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
 
P

Pierre

Guest
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
 
J

Jean-Marie

Guest
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
 
P

Pierre

Guest
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
 
J

Jean-Marie

Guest
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
 
P

Pierre

Guest
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
 

Discussions similaires

Réponses
8
Affichages
413

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth