OVH Cloud OVH Cloud

Tranches de données

7 réponses
Avatar
circaete
J'espère que vous avez passé de bonnes vacances et que vous pourrez m'aider

Je dois inclure une prime d'assurance qui est fonction du montant de mon
projet.
Cette prime d'assurance n'est pas proportionnelle mais forfaitaire en
fonction du montant du projet.

Projet de 0 à 1000 €, prime de 100 €
Projet de 1001 € à 3000 €, prime de 150 €
Projet de 3001 € à 10000 €, prime de 200 €
etc...

J'ai donc créé une table avec ces valeurs

Je cherche désespérément la fonction qui renvoie la prime en fonction du
montant du projet

Merci pour votre aide

7 réponses

Avatar
pgz
Bonjour,

la fonction Split ( ou PremVrai en français) devrait faire ton bonheur...

Cordialement,
pgz


J'espère que vous avez passé de bonnes vacances et que vous pourrez m'aider

Je dois inclure une prime d'assurance qui est fonction du montant de mon
projet.
Cette prime d'assurance n'est pas proportionnelle mais forfaitaire en
fonction du montant du projet.

Projet de 0 à 1000 €, prime de 100 €
Projet de 1001 € à 3000 €, prime de 150 €
Projet de 3001 € à 10000 €, prime de 200 €
etc...

J'ai donc créé une table avec ces valeurs

Je cherche désespérément la fonction qui renvoie la prime en fonction du
montant du projet

Merci pour votre aide


Avatar
pgz
C'est pas split, encore que... , mais Switch!
pgz


J'espère que vous avez passé de bonnes vacances et que vous pourrez m'aider

Je dois inclure une prime d'assurance qui est fonction du montant de mon
projet.
Cette prime d'assurance n'est pas proportionnelle mais forfaitaire en
fonction du montant du projet.

Projet de 0 à 1000 €, prime de 100 €
Projet de 1001 € à 3000 €, prime de 150 €
Projet de 3001 € à 10000 €, prime de 200 €
etc...

J'ai donc créé une table avec ces valeurs

Je cherche désespérément la fonction qui renvoie la prime en fonction du
montant du projet

Merci pour votre aide


Avatar
circaete
Merci pour ton aide mais cela ne marche pas dans mon cas car je ne recherche
pas une valeur égale à une autre mais une valeur comprise dans une tranche,
sinon j'utiliserais la fonction RechDom ( Dlookup ).

Je précise ma question: j'ai créé une table assurance avec un champ N°, un
champ avec le montant max de la tranche, et un champ avec la prime
correspondante:

N°;Montant Max;Prime
1;0;100
2;3000;150
3;10000;200
etc...

J'ai d'autre part une reqête qui me donne le numéro du projet et le montant
du projet
Je voudrai créer une requête basée sur la précédente qui me renvoie pour
chaque projet le montant de la prime.

C'est exactement le même problème que l'on rencontre tous les ans pour
calculer son impôt sur le revenu.
Je fais ça sous Excel avec la fonction recherche, il doit bien y avoir une
solution sous Access


C'est pas split, encore que... , mais Switch!
pgz


J'espère que vous avez passé de bonnes vacances et que vous pourrez m'aider

Je dois inclure une prime d'assurance qui est fonction du montant de mon
projet.
Cette prime d'assurance n'est pas proportionnelle mais forfaitaire en
fonction du montant du projet.

Projet de 0 à 1000 €, prime de 100 €
Projet de 1001 € à 3000 €, prime de 150 €
Projet de 3001 € à 10000 €, prime de 200 €
etc...

J'ai donc créé une table avec ces valeurs

Je cherche désespérément la fonction qui renvoie la prime en fonction du
montant du projet

Merci pour votre aide




Avatar
Fred BROUARD
bonjour,

d'abord votre solution est incomplète car si le projet est de 1000,50 € alors
aucune prime...

La gestion de barèmes par tranche n'est pas une simple fonction magique mais
nécessite des requêtes SQL qui, sans être complexes sont assez élaborées.

Mon livre SQL Développement (Campus Press) en parle aux pages 366 à 378 avec
divers exemples.

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************


circaete a écrit:
J'espère que vous avez passé de bonnes vacances et que vous pourrez m'aider

Je dois inclure une prime d'assurance qui est fonction du montant de mon
projet.
Cette prime d'assurance n'est pas proportionnelle mais forfaitaire en
fonction du montant du projet.

Projet de 0 à 1000 €, prime de 100 €
Projet de 1001 € à 3000 €, prime de 150 €
Projet de 3001 € à 10000 €, prime de 200 €
etc...

J'ai donc créé une table avec ces valeurs

Je cherche désespérément la fonction qui renvoie la prime en fonction du
montant du projet

Merci pour votre aide


Avatar
pgz
La fonction switch est idéale si tes paramètres sont fixes. Mais si tu veux
utiliser une table, soit "clef" "limite" "prime"
Alors tu dois enregistrer plutôt:
1 - 1000 -100
2 - 3000 - 150
etc
et tu peux calculer la prime avec un Dlookup

prime = Dlookup("prime", "Table", "limite >=" & ValeurProjet)
DLookup trouvera le premier enregistrement qui satisfait la condition, soit
celui que tu cherches. Et tu aura une prime à 150 si projet = 1000,50

A mon avis...
pgz
------------------------------------


Merci pour ton aide mais cela ne marche pas dans mon cas car je ne recherche
pas une valeur égale à une autre mais une valeur comprise dans une tranche,
sinon j'utiliserais la fonction RechDom ( Dlookup ).

Je précise ma question: j'ai créé une table assurance avec un champ N°, un
champ avec le montant max de la tranche, et un champ avec la prime
correspondante:

N°;Montant Max;Prime
1;0;100
2;3000;150
3;10000;200
etc...

J'ai d'autre part une reqête qui me donne le numéro du projet et le montant
du projet
Je voudrai créer une requête basée sur la précédente qui me renvoie pour
chaque projet le montant de la prime.

C'est exactement le même problème que l'on rencontre tous les ans pour
calculer son impôt sur le revenu.
Je fais ça sous Excel avec la fonction recherche, il doit bien y avoir une
solution sous Access


C'est pas split, encore que... , mais Switch!
pgz


J'espère que vous avez passé de bonnes vacances et que vous pourrez m'aider

Je dois inclure une prime d'assurance qui est fonction du montant de mon
projet.
Cette prime d'assurance n'est pas proportionnelle mais forfaitaire en
fonction du montant du projet.

Projet de 0 à 1000 €, prime de 100 €
Projet de 1001 € à 3000 €, prime de 150 €
Projet de 3001 € à 10000 €, prime de 200 €
etc...

J'ai donc créé une table avec ces valeurs

Je cherche désespérément la fonction qui renvoie la prime en fonction du
montant du projet

Merci pour votre aide






Avatar
circaete
Merci pgz, j'avais pensé à cette solution mais elle ne fonctionnait pas en
raison d'un problème de syntaxe dans la condition.

J'ai essayé ta solution, mais j'ai eu un nouveau problème car Access ne
reconnaissait pas valeurprojet comme un nombre quand il y avait des décimales

Finalement ça marche avec
prime = Dlookup("prime", "Table", "limite >=" & int(ValeurProjet))


La fonction switch est idéale si tes paramètres sont fixes. Mais si tu veux
utiliser une table, soit "clef" "limite" "prime"
Alors tu dois enregistrer plutôt:
1 - 1000 -100
2 - 3000 - 150
etc
et tu peux calculer la prime avec un Dlookup

prime = Dlookup("prime", "Table", "limite >=" & ValeurProjet)
DLookup trouvera le premier enregistrement qui satisfait la condition, soit
celui que tu cherches. Et tu aura une prime à 150 si projet = 1000,50

A mon avis...
pgz
------------------------------------


Merci pour ton aide mais cela ne marche pas dans mon cas car je ne recherche
pas une valeur égale à une autre mais une valeur comprise dans une tranche,
sinon j'utiliserais la fonction RechDom ( Dlookup ).

Je précise ma question: j'ai créé une table assurance avec un champ N°, un
champ avec le montant max de la tranche, et un champ avec la prime
correspondante:

N°;Montant Max;Prime
1;0;100
2;3000;150
3;10000;200
etc...

J'ai d'autre part une reqête qui me donne le numéro du projet et le montant
du projet
Je voudrai créer une requête basée sur la précédente qui me renvoie pour
chaque projet le montant de la prime.

C'est exactement le même problème que l'on rencontre tous les ans pour
calculer son impôt sur le revenu.
Je fais ça sous Excel avec la fonction recherche, il doit bien y avoir une
solution sous Access


C'est pas split, encore que... , mais Switch!
pgz


J'espère que vous avez passé de bonnes vacances et que vous pourrez m'aider

Je dois inclure une prime d'assurance qui est fonction du montant de mon
projet.
Cette prime d'assurance n'est pas proportionnelle mais forfaitaire en
fonction du montant du projet.

Projet de 0 à 1000 €, prime de 100 €
Projet de 1001 € à 3000 €, prime de 150 €
Projet de 3001 € à 10000 €, prime de 200 €
etc...

J'ai donc créé une table avec ces valeurs

Je cherche désespérément la fonction qui renvoie la prime en fonction du
montant du projet

Merci pour votre aide








Avatar
J-Pierre
Bonjour,

Peut-être pas nécessaire d'acheter le bouquin de Fred (excellent au demeurant) pour une fonction aussi simple.
Peut-être une requête du style:

Select top 1 matable.prime from matable where montantX <= matable.montant order desc matable.montant

sans garantie sur la syntaxe, et en prévoyant une ligne dans la table avec un montant de 99999999999, sinon, la requête ne
retournera aucune ligne, ou alors, tester le résultat.

J-Pierre