Aller au contenu
Zebulon
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

plusieurs conditions sous excel


rimbaut

Messages recommandés

Bonsoir à tous,

 

J'ai une erreur dans la formule suivante écrite sous Excel

 

=SI(Calcul!B5<Parametres!C8;0;SI(Calcul!B5>=Parametres!C8;1;SI(Calcul!B5>=Parametres!C10;2;SI(Calcul!B5>=Parametres!C9;3;SI(Calcul!B5>Parametres!C13;4)))))

 

Sachant que Parametresc8 peut prendreles valeurs suivantes ;<200*8.67; >=200*8.67; >=400*8.67; >=600*8.67; >=800*8.67. pour renvoyer 0, 1, 2, 3, 4

 

En l'espece b5 = 38000 donc supérieur à 800*8.67; il m'est renvoyé comme résultat 1

 

je ne vois pas où est l'erreur.

 

Merci pour toute aide

Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

Ta formulation est probablement erronée parce qu'extrêmement redondante. Du coup, j'avoue ne pas bien la comprendre. Regarde rien que le début. Tu dis,

 

[1] si A1 inférieur à C8
[2]	si vrai, mettre zéro dans le résultat
[3]	si faux, si A1 supérieur ou égal à C8
[4]				si vrai, mettre 1 dans le résultat
[5]				si faux, ...

Tu n'atteindras jamais la ligne 5, puisque le test de la ligne 3 répondra toujours vrai (étant l'opposé du test de la ligne 1) :P

 

De toute façon, en ligne 3, A1 est forcément supérieur ou égal à C8, puisqu'on sait déjà qu'il ne lui est pas inférieur.

Lien vers le commentaire
Partager sur d’autres sites

bonjour,

 

Le problème est que tu oublies à chaque fois une condition, d'apres ce j'ai cru comprendre, tu souhaites travailler par intervalle, il faut donc que dans chacune des tes conditions, tu définisses ton intervalle donc il faut par ex : si(ET(Calcul!B5>=200*8.67;Calcul!B5<400*8.67);...;...)

c'est pour çà que tu obtiens 1, 38000 est aussi >=200*8.67 donc 1

 

l'autre solution est de passer par la fonction recherchev si tu as un tableau de parametres

 

j'espere que j'ai été assez clair :P

Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

Attention, Alphasys, tu compliques inutilement le problème ! :P

 

En fait, tu as 5 tranches, que tu veux numéroter de 0 à 4. Pour construire ta pile de tests, le plus simple est de tester successivement les limites supérieures (plafonds) des diverses tranches :

  • si tu es inférieur au 1er plafond, tu es dans la tranche 0, et sinon, tu sais déjà que tu es supérieur à ce plafond, donc pas besoin de se reposer la question,
  • si tu es inférieur au 2ème plafond, tu es dans la tranche 1 (sans aucun doute, car tu ne peux plus être dans la tranche 0, c'était le cas précédent), et sinon... etc.
  • si tu es inférieur au 3ème plafond, tu es dans la tranche 2 (sans aucun doute etc.), et sinon... etc.
  • si tu es inférieur au 4ème plafond, tu es dans la tranche 3 (sans aucun doute etc.), et sinon... etc.
  • et au-delà, plus besoin de test, tu es forcément dans la tranche 4.

D'où la formule EXCEL (où j'appelle A1 ta cellule Calcul!B5, et P0, P1, P2, P3 les plafonds des 4 premières tranches, c'est-à-dire les paramètres de valeurs respectives 200*8.67, 400*8.67, 600*8.67, 800*8.67) :

 

=SI(A1<P0;0;SI(A1<P1;1;SI(A1<P2;2;SI(A1<P3;3;4))))

 

Finalement, dans la programmation, la difficulté ne réside pas dans la traduction d'un problème dans le langage utilisé, mais dans la résolution logique préalable de ce problème. :P

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

il n'y a pas vraiment d'erreur dans ton code, il fait ce que tu lui dis. Si je le décompose ça fait :

si calculB5 soit 38000 < parametres C8 soit 6936

valeur si vrai : 0

valeur si faux : si calcul B5 soit 38000 >= parametres C8 soit 6936

valeur si vrai 1, ce qui est le cas puisque 38000 est supérieur ou égal à 6936, donc le calcul s'arrête ici.

Donc dans ce cas ton code renverra toujours soit 0 soit 1. Il faudrait que tu expliques plus en détail ce que tu veux faire avec le reste du code pour qu'on puisse t'aider. :P

Modifié par ricou33
Lien vers le commentaire
Partager sur d’autres sites

  • Modérateurs

Ricou, tu me chagrines... car ton intervention prouve que mes posts #2 et #4 ci-dessus sont incompréhensibles. J'avais pourtant eu l'impression d'avoir pris soin de tout expliquer,

  • le post #2 explique, comme ton post #5, pourquoi ça ne fait pas ce qu'il souhaite,
  • le post #4 explique ce qu'il faut faire pour que ça marche : il s'agit juste de se positionner dans un ensemble de 5 tranches séparées par 4 bornes dont les valeurs sont connues.

Sans rancune...

Lien vers le commentaire
Partager sur d’autres sites

Désolé Dylav, j'ai bien lu ta réponse puisque je ne réponds jamais sans avoir tout lu ce qui se trouve avant, mais pas très attentivement, et, étant parti dans mes pensées, j'ai oublié ta réponse qui est pourtant très clair.

Puisses-tu me pardonner un jour cette erreur et par la même occasion trouver une solution à mon problème de cadre. :P

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...