la fonction IF sur Office 2004 est limitée

choup75

Membre confirmé
7 Octobre 2004
14
0
Bonjour à tous

J'utilise Office 2004 et j'essaie, dans excel, d'introduire une fonction IF comportant plusieurs conditions de test "IF" imbriquées. Or, ce programme ne supporte que 7 conditions de test imbriquées et il m'en faut près de 30 !!!

Quelqu'un connait il la solution pour passer outre cette limitation à 7 conditions "IF" imbriquées pour faire des calculs dans une cellule ???

Une macro acceptant les boucles et les tests ?? Mais je ne sais pas l'écrire !!!!

Merci de votre aide et bonne journée.

Michel

:(
 
choup75 a dit:
Bonjour à tous

J'utilise Office 2004 et j'essaie, dans excel, d'introduire une fonction IF comportant plusieurs conditions de test "IF" imbriquées. Or, ce programme ne supporte que 7 conditions de test imbriquées et il m'en faut près de 30 !!!

Quelqu'un connait il la solution pour passer outre cette limitation à 7 conditions "IF" imbriquées pour faire des calculs dans une cellule ???

Une macro acceptant les boucles et les tests ?? Mais je ne sais pas l'écrire !!!!

Merci de votre aide et bonne journée.

Michel

:(

Il n'y a pas moyen de dépasser la limitation de cette fonction, mais heureusement, on peut la remplacer par une opération. voici un exemple avec une fonction IF, et l'opération équivalente :

=SI(A1=3;B1*A1;SI(A1=4;B2*A1;SI(A1=5;B3*A1;A1)))

L'opération équivalente maintenant :

=((B1*A1)*(A1=3))+((B2*A1)*(A1=4))+((B3*A1)*(A1=5))+(A1*ET(A1<>3;A1<>4;A1<>5))

Bien sur, l'opération est plus c ... ompliquée à écrire, mais en revanche, Excel l'interprétera beaucoup plus rapidement (s'il y en a beaucoup, les temps de recalculs des feuilles s'en porterons mieux).

Sinon, autre possibilité : passer par des cellules de calcul intermédiaire comportant une partie des SI.

Si tu ne t'en sors pas, envoie moi un message privé en expliquant le problème à résoudre, j'essaierais de trouver une formule adéquate.



:up:
 
Un grand merci pour ta solution. je vais tenter la première qui est lourde mais doit fonctionner. Sinon, merci pour le système des cellules décalées. Je pense avoir compris. Il faut faire des cellules comprenant les 7 premières conditions, puis une autre cellule comprenant les 7 suivantes et ainsi de suite et dans la cellule de référence faire prendre en compte la première cellule si le résultat est <= à la condition masi, sinon prendre la cellule suivante etc ??? NON ??

Amicalement :p :p
 
choup75 a dit:
Un grand merci pour ta solution. je vais tenter la première qui est lourde mais doit fonctionner. Sinon, merci pour le système des cellules décalées. Je pense avoir compris. Il faut faire des cellules comprenant les 7 premières conditions, puis une autre cellule comprenant les 7 suivantes et ainsi de suite et dans la cellule de référence faire prendre en compte la première cellule si le résultat est <= à la condition masi, sinon prendre la cellule suivante etc ??? NON ??

Amicalement :p :p

Là, ça dépend de la nature de tes tests. Tu peux aussi progresser de cellule en cellule (par ex : 7 tests dans la première, test du résultat de la première + 6 tests dans la seconde, etc ...

Pour les opérations, malgré la lourdeur, elle a plus de potentialité. Pour ne pas t'y perdre, il faut toujours te rappeler du principe de base, à savoir que chaque test est basé sur une opération arithmétique multipliée par une expression logique (dans mon exemple, (A1=3) vaut 1 si elle est vraie, donc si A1=3, et zéro dans le cas contraire. Donc expression logique vraie =1, et fausse = 0).
 
Pascal 77 a dit:
Il n'y a pas moyen de dépasser la limitation de cette fonction, mais heureusement, on peut la remplacer par une opération. voici un exemple avec une fonction IF, et l'opération équivalente :

=SI(A1=3;B1*A1;SI(A1=4;B2*A1;SI(A1=5;B3*A1;A1)))

L'opération équivalente maintenant :

=((B1*A1)*(A1=3))+((B2*A1)*(A1=4))+((B3*A1)*(A1=5))+(A1*ET(A1<>3;A1<>4;A1<>5))

Bien sur, l'opération est plus c ... ompliquée à écrire, mais en revanche, Excel l'interprétera beaucoup plus rapidement (s'il y en a beaucoup, les temps de recalculs des feuilles s'en porterons mieux).

Sinon, autre possibilité : passer par des cellules de calcul intermédiaire comportant une partie des SI.

Si tu ne t'en sors pas, envoie moi un message privé en expliquant le problème à résoudre, j'essaierais de trouver une formule adéquate.



:up:
Bonjour

Excuse moi de te déranger à nouveau, mais tu sembles bien maitriser office et j'ai un problème dans la conception d'un business plan. J'ai résolu mon précédent problème et t'en remercie vivement. Je ne parviens pas à faire fonctionner des fonctions de comparaison avec if. je m'explique.
en A1 je mets 2,6 par exemple
en A2 je veux que qu'il m'affiche 2 si A1 est compris entre 1 et 2 ; 3 si A1 est compris entre 2 et 3 et ainsi de suite.

Je rentre la formule if(1<=A1<=2;2;if(2,1<=A1<=3;3;0))
et il m'affiche 0 systématiquement. Comment faire pour lui faire anakyser une valeur comprise entre deux bornes et lui faire renvoyer un chiffre ??

Par avance merci de ton aide et bonne journée

Michel
 
choup75 a dit:
Bonjour

Excuse moi de te déranger à nouveau, mais tu sembles bien maitriser office et j'ai un problème dans la conception d'un business plan. J'ai résolu mon précédent problème et t'en remercie vivement. Je ne parviens pas à faire fonctionner des fonctions de comparaison avec if. je m'explique.
en A1 je mets 2,6 par exemple
en A2 je veux que qu'il m'affiche 2 si A1 est compris entre 1 et 2 ; 3 si A1 est compris entre 2 et 3 et ainsi de suite.

Je rentre la formule if(1<=A1<=2;2;if(2,1<=A1<=3;3;0))
et il m'affiche 0 systématiquement. Comment faire pour lui faire anakyser une valeur comprise entre deux bornes et lui faire renvoyer un chiffre ??

Par avance merci de ton aide et bonne journée

Michel

Les opérateurs de comparaison ne fonctionnent pas comme les exercices de Math au lycée, tu n'as droit qu'a un seul opérateur par opération, donc c'est soit : SI(1<=A1;...), soit : SI(A1<=2;...), mais pas les deux.

Le plus simple est donc de partir d'une extrémité du spectre, du genre :

SI(A1<=1;0;SI(A1<=2;2;SI(A1<=3;3;0)))

Tu peux aussi faire un truc un peu plus complexe du genre :

SI(ET(1<=A1;A1<=2);2;SI(ET(2<A1;A1<=3);3;0))

Tu noteras que dans le second test j'ai remplacé "2,1<=A1" par "2<A1", ce qui permet de prendre en compte des valeurs comprises entre 2 et 2,1 sans erreur (dans ton test, 2,05 aurait donné zéro au lieu de trois). Le principe est que le complément de 1<=A1 est 1>A1, et non 1>=A1, sinon, la valeur exaxte de A1 vérifie les deux tests, ce qui n'est pas le but.

Bon courage (t'as l'aspirine à portée ?),

Pascal

PS : T'as un Office "in english" ? si oui, remplace ET(...) par AND(...)