Probleme similaire

Résolu
Bonjour,

je cherche a réaliser une macro qui multiplierais un prix de base par un coefficient et selon la valeur du prix de base
je m'explique et pour faire simple:
j'ai un tableau avec en colonne E des prix d'achats
en colonne F des prix de ventes qui doivent être calcule en fonction de la valeur du prix d'achat
si le prix d'achat de 0.01 a 50 on applique cette formule (E1*2.4*1.2)
si le prix d'achat de 50.01 a 100 on applique cette formule (E1*1.7*1.2) si le prix d'achat de 100.01 a 250 on applique cette formule (E1*1.5*1.2) si le prix d'achat de 250.01 a 500 on applique cette formule (E1*1.4*1.2) si le prix d'achat de 500.01 et plus on applique cette formule (E1*1.3*1.2) et il sera copie en cellule F1 correspondante (même ligne)
et ainsi de suite pour toutes les lignes du fichier qui pourra évoluer en nombre de lignes,
y a t'il dans le salle quelqu'un qui peut m'aider les macros ne sont pas ma matière de prédilection

6 réponses

  1. Contributeur
    Bonsoir,

    Comme tes écrats sont réguliers tu peux mettre en F1 :
    =E1*CHOISIR(MIN(ENT((E1-0.01)/50)+1;3);2.4;1.7;1.5)*1.2
    et recopier vers le bas.

    eric
    1. Bonjour

      avec des SI imbriqués ça pourrait marcher aussi ?

      en F1
      =Si(E1<=50;E1*2.4*1.2;si(E1<=100;E1*1.7*1.2;si(E1<=250;E1*1.5*1.2;si(E1<=500;E1*1.4*1.2;E1*1.3*1.2))))
      1. bonjour,

        une macro est elle obligatoire ?, une formule avec des SI imbriqués suffirait.
        ....
        1. merci eric ca marche parfaitement mais pas au delà d'une valeur de 150, peut tu m'expliquer la formule ca me permettra de l'utiliser peut être dans d'autre situations et aussi de comprendre ce qui cloche au dessus de 150
          phil
          1. Contributeur
            =E1*CHOISIR(MIN(ENT((E1-0.01)/50)+1;3);2.4;1.7;1.5)*1.2

            - le 3 en gras indique le nombre de valeurs que tu as défini derrière : 2.4;1.7;1.5

            - ENT((E1-0.01)/50)+1 retourne la tranche de 50 concernée

            - MIN(ENT((E1-0.01)/50)+1;3) prend la plus petite valeur entre la tranche et le nombre maxi de tranches définies (3 ici)

            - CHOISIR(x;2.4;1.7;1.5) retourne la xième valeur de la liste définie ensuite (2.4;1.7;1.5)

            J'espère avoir été clair ;-)

            eric
        2. j'ai 5 coef différents voir 1er post donc j'ai mis =E1*CHOISIR(MIN(ENT((E1-0.01)/50)+1;5);2.4;1.7;1.5;1.4;1.3)*1.2
          mais j'ai toujours le problème au dessus de 150 j'ai des erreurs
          de 150 a 200 il utilise le coef 1.4 au lieu de 1.5
          de 200 a 500 il utilise 1.3 au lieu de 1.5 (>250) et 1.4(>500)
          mais a partir de 500 c'est bon
          phil
          1. Contributeur
            J'avais lu trop vite, je pensais que toutes les tranches étaient de 50, désolé.
            met plutôt :
            =E1*RECHERCHE(E1;{0;50.01;100.01;250.01;500.01};{2.4;1.7;1.5;1.4;1.3})*1.2

            ou si tu veux on peux définir une table à part qui sera plus facile à maintenir si il y a des mises à jours : exemple

            eric
        3. Eric je n'arrive pas a faire fonctionner ta formule par contre celle de paf est ok pas de problèmes, merci de m'avoir aidé
          phil
          1. Contributeur
            Pas de problème, tu es encore loin de la limite des 7 fonctions imbriquées.
            En même temps tu avais quand même le fichier exemple à consulter, difficile de faire mieux pour expliquer...
            eric