Access 2007 operation sur champ

Bonjour,

mon but est le suivant:
je veux calculé un pourcentage

pour y acceder j'ai besoin de:

une durée (nombre de mois) et de 1 des 3 choix

1- si <12 mois égale 100%
2- si 12<>72 mois égale 1,388%
3- si >72 égale 10%

j'ai aussi un champ age pour celui là c'est 7 ans,

je m'explique, si mon champ = 7ans, ok si la durée est comprise de 12 à 72 mois, alors multiplier la durée par le nombre de mois
si mon champ = 7ans, ok si la durée est inférieure à 12 (<12) le résultat est 100% sans chercher à savoir
si mon champ = 7ans, ok si la durée est supérieure à 72 (>72) le résultat est 10% sans chercher à savoir

j'ai commencé une table mais je pense que c'est avec where
aidez moi merci

13 réponses

  1. a quel endroit faut il inscrire la formule, ou intégrer les conditions dans ma requete sql ?ou comment l'ecrire en language sql?
    1
    1. Modérateur
      Salut,

      ce n'est sans doute pas avec un WHERE mais plutôt avec un iif dans le SELECT.

      Par contre, je ne saisis pas ta demande : le résultat est 100% sans chercher à savoir quel résultat ? 100 % de quoi ?

      Peux-tu mettre ça en opérations mathématiques claires ?
      0
      1. slt blux et merci de me répondre et de partager ta science ;)

        si tu préfères je calcule une vétusté, en fait plus exactement un taux de remboursement à imputer à un locataire
        je fais des états des lieux, sur certains produits comme la moquette la vétusté est de 7 ans, je fais donc un calcul
        si la personne est là depuis moins d'un an jusque un an, la franchise est de 100%, donc si un locataire crame ma moquette à moins d'un an de loc sur une moquette neuve 100% des frais seront à sa charge, si il la crame du 13e mois au 72e mois alors une déperdition de 1,388% par mois lui est imputé, au dessus de 72 mois normalement la moquette est payé mais il restera quand même une quote part de 10% à sa charge, je dois faire ce type de calcul pour 5 vétusté, 7,10,15,20,25 (ans) ou pour chaque pdt il y a 100% 10% et un taux mensuel, la franchise pour 10 ans est de 3 ans etc, j'ai fait un tableau excel et access si ça peut t'aider
        donc je fais un calcul de durée entre deux date et je dois trouver un moyen de :
        soit multiplié la durée par le % mensuel pour avoir un résultat (un coefficient à charge)
        soit avoir un résultat (un coefficient à charge) de 100%
        soit avoir un résultat (un coefficient à charge) de 10%
        ce champ doit me servir pour un prix ttc dans une autre requete
        tiens moi au courant
        0
        1. Modérateur
          On peut faire, mais j'aimerais savoir de quelles données dont tu disposes et où tu les prends pour les calculs.
          Les vétustés de 7,10,15 sont définies par qui/quoi ? Que veut dire : la franchise pour 10 ans est de 3 ans
          0
      2. suivant un type d'articles, Peinture
        Papiers peints
        Revêtements de sols
        Moquette
        Plastique
        Enduit
        Lino
        sont des vétusté à 7ans, la franchise est de 1 an (100%), le quote part à 10%, la deperdition mensuelle a partir du 13e mois jusqu'au 72e est de 1.388%
        Serrure
        Quicaillerie
        Sonnette
        Electricité
        Electricité
        Organe de réglage du chauffage
        Chauffe-eau
        Cumulus
        sont des vétusté à 10ans, la franchise est de 3 ans(100%), le quote part à 15%, la deperdition mensuelle a partir du 36e mois jusqu'au 120e est de 1.191%
        etc jusqu'à la vétusté de 25 ans
        comme tu le vois ce sont des pourcentages établis
        la franchise pour 10 ans est de 3 ans ,lol en fait la franchise pour une vétusté de 10 ans est de 3 ans parle mal la france :) dsl
        0
        1. Modérateur
          Donc, il te faut une table avec tous ces éléments de renseigné : durée de vétusté, durée de la franchise, déperdition mensuelle, quote-part restante.
          Ensuite, tu feras un lien entre cette table et la table 'type d'article'.
          Avec ces éléments, tu pourras créer une fonction qui, à partir de l'article et des deux dates ira faire le calcul en prenant les éléments de la table 'vétusté'.
          0
        2. Modérateur
          Je suis en train de d'amuser à monter une base exemple.
          Je te tiens au courant.
          0
      3. oki merci de ton aide
        sinon j'ai une table exemple je peux te la router
        et tu as tout compris mais au niveau de la fonction c pas facile pour moi
        donc d'avance merci
        0
        1. Modérateur
          je t'ai envoyé un lien en MP, à consulter...
          0
        2. salut
          j'ai rien ;(
          c koi MP
          0
        3. Modérateur
          Il faut que tu te connectes à ton compte, ensuite à côté de ton pseudo (en haut à droit de la page), tu verras une enveloppe, c'est un 'mini-forum' de Messages Privés (MP).
          0
      4. slt

        ça y est je suis connecté
        c ça
        je te dis bravo!!!
        si tu es ok je modifie en fonction de ce que j'ai besoin et te remonte les infos
        merci blux
        0
        1. Modérateur
          Par contre, pour le calcul de la déperdition mensuelle, j'ai pris le nombre total de mois, je n'ai pas commencé à 1 après la franchise.

          C'est-à-dire au bout de 38 mois, (pour une franchise à 36 mois) je n'ai pas calculé avec 2 x le taux, mais avec 38 x le taux, que j'ai ensuite soustrait de 100.

          Peut-être que cette méthode n'est pas la bonne.
          0
      5. salut
        ah oui merci de me soulever le problème
        et bien en effet après vérification ça ne va pas
        Si 38e mois alors (38-36)*1,19 donc 2*1,19=2,38%
        sinon on trouve 100-(38*1,19) soit 100-45,22=54,8%
        c'est pas du tout le même résultat
        comment faire, tu crois qu'on peut mettre une formule par vétusté ? soit 5 formules en tout ?
        plutôt de mettre par type comme moquette ou électricité mettre vétusté 7 ans = vétusté 10 ans = etc ???
        0
        1. Modérateur
          On peut mettre la formule que l'on veut, mais c'est toi qui me la donne. Je ne connais pas ton procédé de calcul.
          0
      6. regarde en mp

        dis moi si tu ne comprends pas tout
        le calcul demandé est le même sauf que la franchise est différente
        le coefficient multiplicateur apres franchise est lui aussi différent
        le pourcentage pendant la franchise est toujours pareil 100%
        le quote part varie aussi en fonction du type de vétusté

        schuss
        0
        1. ok formule modifiée ça fonctionne merci
          0
          1. hello blux

            peux tu me m'aider?
            comment on peut assigner directement le resultat dans un champ d'un sous formulaire???

            d'avance merci
            0
            1. Modérateur
              assigner à quoi ?
              0
          2. mettre le résultat dans une autre champ
            par exemple retrouvé cette réponse dans un champ d'un autre formulaire
            en fait cette réponse fait partie d'un calcul
            prix ht * (pourcentage vétusté) = total ht
            donc là on tous les champs
            la cellule du résultat vétusté (ton prog) serait incrémentée dans une cellule d'un sous formulaire pour finaliser le calcul du total ht
            tu comprends?
            0
            1. Modérateur
              Comment mettre dans la zone texte4 du sous-formulaire 4, rangée dans sousform3, lui-même dans sousform2 et faisant partie du formulaire form1,le contenu de la zone 3 du sous-formulaire 3, rangé dans le sous-formulaire 2, faisant partie du formulaire 1.

              Forms("form1")("SousForm2")("SousForm3")("zone3") = Forms("form1")("SousForm2")("SousForm3")("SousForm4")("Texte4")
              0
          3. c'est à peu pres ça ;)
            dans ton prog il y a une cellule qui apparait avec résultat
            comment mettre son contenu dans une cellule d'un sous formulaire? c ce qu'il faut mettre en code ?
            0
            1. Modérateur
              Pourquoi tu ne reprends pas la formule pour la mettre dans ton sous-formulaire ?
              0