OVH Cloud OVH Cloud

Calculs variables

3 réponses
Avatar
PatCatNats
Bonjour,

J'essai de trouver une formule complexe (pour moi...) mais là je suis au
bout...
(La base est en Access 97)
Le scenario est d'attribuer des points differents par produits à des
vendeurs en fonction de leur dépassement d'objectif et suivant la zone
géographique où ils se trouvent par période (4 maxi).

Ex. : ProduitsA / ZoneY / Periode1

Palier0 : 100% de l'objectif (10 produits vendus) atteint ou dépassé = 2
points jusqu'au 1ème palier : >=
Palier1 : 150% de l'objectif (15 produits vendus) dépassé = 4 points par
produits supplémentaires : >
Palier2 : 170% de l'objectif(17 produits vendus) dépassé = 7 points par
produits supplémentaires : >
(Si possible ne pas limiter le nombre de paliers)

Si 24 produits de vendus, le résultat devrait donner :
2 points pour l'objectif atteint
+ 10 points (5 X 2 Pts.) jusqu'à l'atteinte du 1er palier
+ 8 points (2 X 4 Pts.) jusqu'à l'atteinte du 2ème palier
+ 49 points (7 X 7 Pts.) jusqu'à son résultat
--------
= 69 points

Quelqu'un aurait une piste ????

Merci

Patrice

3 réponses

Avatar
Evaro
Bonjour Patrice,

"PatCatNats" a écrit dans le message de
news:clejts$ddv$
Bonjour,

J'essai de trouver une formule complexe (pour moi...) mais là je suis au
bout...
(La base est en Access 97)
Le scenario est d'attribuer des points differents par produits à des
vendeurs en fonction de leur dépassement d'objectif et suivant la zone
géographique où ils se trouvent par période (4 maxi).

Ex. : ProduitsA / ZoneY / Periode1

Palier0 : 100% de l'objectif (10 produits vendus) atteint ou dépassé = 2
points jusqu'au 1ème palier : > > Palier1 : 150% de l'objectif (15 produits vendus) dépassé = 4 points par
produits supplémentaires : >
Palier2 : 170% de l'objectif(17 produits vendus) dépassé = 7 points par
produits supplémentaires : >
(Si possible ne pas limiter le nombre de paliers)

Si 24 produits de vendus, le résultat devrait donner :
2 points pour l'objectif atteint
+ 10 points (5 X 2 Pts.) jusqu'à l'atteinte du 1er palier
+ 8 points (2 X 4 Pts.) jusqu'à l'atteinte du 2ème palier
+ 49 points (7 X 7 Pts.) jusqu'à son résultat
--------
= 69 points

Quelqu'un aurait une piste ????

Merci

Patrice




Soit une Table T_Objectifs contenant les Objectifs réalisés par chaque
représentant de la zone A
Id_Objectif Id_Zone Id_Vendeur Indice_Objectif
1 A 1
160,00
2 A 2
210,00
3 A 3
80,00
4 A 4
120,00

Soit une Table T_Palier contenant les différents paliers tranches avec les
valeurs attribuées à 10 % selon les tranches (prévoir une dernière tanche
avec un plafond inaccessible).

Id_Palier NumPalier Zone Plafond_Objectif Valeur
1 0 A 100
2
2 1 A 150
2
3 2 A 170
4
4 3 A 1 000
7


Mettre le code SQL suivant dans une requête appelée
"R_CalculParTranche"
(Respecter ou adapter les noms de tables, de champs, de requêtes).


SELECT T_Objectifs.Id_Vendeur, T_Objectifs.Indice_Objectif,
T_Palier.Plafond_Objectif, Val(nz(DMax
("Plafond_Objectif","R_CalculParTranche","Plafond_Objectif < " &
[Plafond_Objectif] & " AND Id_Vendeur = " & [Id_Vendeur]))) AS
Plancher_Objectif, T_Palier.Valeur, T_Palier.NumPalier, IIf
([Indice_Objectif]<[Plafond_Objectif] Or [NumPalier]>0,0,[Valeur]) AS
Forfait, IIf([Indice_Objectif]<nz([Plancher_Objectif]) Or [NumPalier]
=0,0,IIf([Indice_Objectif]>[Plafond_Objectif],[Plafond_Objectif]-Nz
([Plancher_Objectif]),[Indice_Objectif]-Nz([Plancher_Objectif]))) AS
Base, [Forfait]+[Base]*[Valeur]/10 AS NbPoint
FROM T_Objectifs INNER JOIN T_Palier ON T_Objectifs.Id_Zone T_Palier.Zone
ORDER BY T_Objectifs.Id_Vendeur, T_Palier.NumPalier;

Créer la requête R_CalculParvendeur suivante :
SELECT R_CalculParTranche.Id_Vendeur, First
(R_CalculParTranche.Indice_Objectif) AS PremierDeIndice_Objectif,
Sum(R_CalculParTranche.NbPoint) AS SommeDeNbPoint
FROM R_CalculParTranche
GROUP BY R_CalculParTranche.Id_Vendeur;

Cet exemple a été testé sur la version 2000, je ne suis pas certain
que la fonction DMAX (MaxDom) soit accepté par Access 97

Par ailleurs il semble plus compliqué (si c'est possible !) de gérer
simultanément plusieurs zones et plusieurs périodes, sur la version
2000 le Paramètre critère semble n'accepter qu'un seul opérateur
logique ; peut être en concaténant les champs Id_Vendeur, Id_Zone
et Id_Période (non présenté dans l'exemple).
Sinon, il reste le VBA.
Bon courage,
Etienne

Avatar
PatCatNats
Je te remercie vraiment de t'être penché sur ce cas.
Je vais tester et tient au courant le groupe.

Merci encore de ta contribution.

Patrice

"Evaro" a écrit dans le message de
news:
Bonjour Patrice,

"PatCatNats" a écrit dans le message de
news:clejts$ddv$
Bonjour,

J'essai de trouver une formule complexe (pour moi...) mais là je suis au
bout...
(La base est en Access 97)
Le scenario est d'attribuer des points differents par produits à des
vendeurs en fonction de leur dépassement d'objectif et suivant la zone
géographique où ils se trouvent par période (4 maxi).

Ex. : ProduitsA / ZoneY / Periode1

Palier0 : 100% de l'objectif (10 produits vendus) atteint ou dépassé = 2
points jusqu'au 1ème palier : > > > Palier1 : 150% de l'objectif (15 produits vendus) dépassé = 4 points par
produits supplémentaires : >
Palier2 : 170% de l'objectif(17 produits vendus) dépassé = 7 points par
produits supplémentaires : >
(Si possible ne pas limiter le nombre de paliers)

Si 24 produits de vendus, le résultat devrait donner :
2 points pour l'objectif atteint
+ 10 points (5 X 2 Pts.) jusqu'à l'atteinte du 1er palier
+ 8 points (2 X 4 Pts.) jusqu'à l'atteinte du 2ème palier
+ 49 points (7 X 7 Pts.) jusqu'à son résultat
--------
= 69 points

Quelqu'un aurait une piste ????

Merci

Patrice




Soit une Table T_Objectifs contenant les Objectifs réalisés par chaque
représentant de la zone A
Id_Objectif Id_Zone Id_Vendeur Indice_Objectif
1 A 1
160,00
2 A 2
210,00
3 A 3
80,00
4 A 4
120,00

Soit une Table T_Palier contenant les différents paliers tranches avec les
valeurs attribuées à 10 % selon les tranches (prévoir une dernière tanche
avec un plafond inaccessible).

Id_Palier NumPalier Zone Plafond_Objectif
Valeur

1 0 A 100
2
2 1 A 150
2
3 2 A 170
4
4 3 A 1 000
7


Mettre le code SQL suivant dans une requête appelée
"R_CalculParTranche"
(Respecter ou adapter les noms de tables, de champs, de requêtes).


SELECT T_Objectifs.Id_Vendeur, T_Objectifs.Indice_Objectif,
T_Palier.Plafond_Objectif, Val(nz(DMax
("Plafond_Objectif","R_CalculParTranche","Plafond_Objectif < " &
[Plafond_Objectif] & " AND Id_Vendeur = " & [Id_Vendeur]))) AS
Plancher_Objectif, T_Palier.Valeur, T_Palier.NumPalier, IIf
([Indice_Objectif]<[Plafond_Objectif] Or [NumPalier]>0,0,[Valeur]) AS
Forfait, IIf([Indice_Objectif]<nz([Plancher_Objectif]) Or [NumPalier]
=0,0,IIf([Indice_Objectif]>[Plafond_Objectif],[Plafond_Objectif]-Nz
([Plancher_Objectif]),[Indice_Objectif]-Nz([Plancher_Objectif]))) AS
Base, [Forfait]+[Base]*[Valeur]/10 AS NbPoint
FROM T_Objectifs INNER JOIN T_Palier ON T_Objectifs.Id_Zone > T_Palier.Zone
ORDER BY T_Objectifs.Id_Vendeur, T_Palier.NumPalier;

Créer la requête R_CalculParvendeur suivante :
SELECT R_CalculParTranche.Id_Vendeur, First
(R_CalculParTranche.Indice_Objectif) AS PremierDeIndice_Objectif,
Sum(R_CalculParTranche.NbPoint) AS SommeDeNbPoint
FROM R_CalculParTranche
GROUP BY R_CalculParTranche.Id_Vendeur;

Cet exemple a été testé sur la version 2000, je ne suis pas certain
que la fonction DMAX (MaxDom) soit accepté par Access 97

Par ailleurs il semble plus compliqué (si c'est possible !) de gérer
simultanément plusieurs zones et plusieurs périodes, sur la version
2000 le Paramètre critère semble n'accepter qu'un seul opérateur
logique ; peut être en concaténant les champs Id_Vendeur, Id_Zone
et Id_Période (non présenté dans l'exemple).
Sinon, il reste le VBA.
Bon courage,
Etienne




Avatar
PatCatNats
J'ai testé et je garde la piste (mais la route va être longue...;o))))
Merci Etienne

(FIRST = Premier et DMAX = MaxDom comme tu as dit en Access 97)

Patrice

"Evaro" a écrit dans le message de
news:
Bonjour Patrice,

"PatCatNats" a écrit dans le message de
news:clejts$ddv$
Bonjour,

J'essai de trouver une formule complexe (pour moi...) mais là je suis au
bout...
(La base est en Access 97)
Le scenario est d'attribuer des points differents par produits à des
vendeurs en fonction de leur dépassement d'objectif et suivant la zone
géographique où ils se trouvent par période (4 maxi).

Ex. : ProduitsA / ZoneY / Periode1

Palier0 : 100% de l'objectif (10 produits vendus) atteint ou dépassé = 2
points jusqu'au 1ème palier : > > > Palier1 : 150% de l'objectif (15 produits vendus) dépassé = 4 points par
produits supplémentaires : >
Palier2 : 170% de l'objectif(17 produits vendus) dépassé = 7 points par
produits supplémentaires : >
(Si possible ne pas limiter le nombre de paliers)

Si 24 produits de vendus, le résultat devrait donner :
2 points pour l'objectif atteint
+ 10 points (5 X 2 Pts.) jusqu'à l'atteinte du 1er palier
+ 8 points (2 X 4 Pts.) jusqu'à l'atteinte du 2ème palier
+ 49 points (7 X 7 Pts.) jusqu'à son résultat
--------
= 69 points

Quelqu'un aurait une piste ????

Merci

Patrice




Soit une Table T_Objectifs contenant les Objectifs réalisés par chaque
représentant de la zone A
Id_Objectif Id_Zone Id_Vendeur Indice_Objectif
1 A 1
160,00
2 A 2
210,00
3 A 3
80,00
4 A 4
120,00

Soit une Table T_Palier contenant les différents paliers tranches avec les
valeurs attribuées à 10 % selon les tranches (prévoir une dernière tanche
avec un plafond inaccessible).

Id_Palier NumPalier Zone Plafond_Objectif
Valeur

1 0 A 100
2
2 1 A 150
2
3 2 A 170
4
4 3 A 1 000
7


Mettre le code SQL suivant dans une requête appelée
"R_CalculParTranche"
(Respecter ou adapter les noms de tables, de champs, de requêtes).


SELECT T_Objectifs.Id_Vendeur, T_Objectifs.Indice_Objectif,
T_Palier.Plafond_Objectif, Val(nz(DMax
("Plafond_Objectif","R_CalculParTranche","Plafond_Objectif < " &
[Plafond_Objectif] & " AND Id_Vendeur = " & [Id_Vendeur]))) AS
Plancher_Objectif, T_Palier.Valeur, T_Palier.NumPalier, IIf
([Indice_Objectif]<[Plafond_Objectif] Or [NumPalier]>0,0,[Valeur]) AS
Forfait, IIf([Indice_Objectif]<nz([Plancher_Objectif]) Or [NumPalier]
=0,0,IIf([Indice_Objectif]>[Plafond_Objectif],[Plafond_Objectif]-Nz
([Plancher_Objectif]),[Indice_Objectif]-Nz([Plancher_Objectif]))) AS
Base, [Forfait]+[Base]*[Valeur]/10 AS NbPoint
FROM T_Objectifs INNER JOIN T_Palier ON T_Objectifs.Id_Zone > T_Palier.Zone
ORDER BY T_Objectifs.Id_Vendeur, T_Palier.NumPalier;

Créer la requête R_CalculParvendeur suivante :
SELECT R_CalculParTranche.Id_Vendeur, First
(R_CalculParTranche.Indice_Objectif) AS PremierDeIndice_Objectif,
Sum(R_CalculParTranche.NbPoint) AS SommeDeNbPoint
FROM R_CalculParTranche
GROUP BY R_CalculParTranche.Id_Vendeur;

Cet exemple a été testé sur la version 2000, je ne suis pas certain
que la fonction DMAX (MaxDom) soit accepté par Access 97

Par ailleurs il semble plus compliqué (si c'est possible !) de gérer
simultanément plusieurs zones et plusieurs périodes, sur la version
2000 le Paramètre critère semble n'accepter qu'un seul opérateur
logique ; peut être en concaténant les champs Id_Vendeur, Id_Zone
et Id_Période (non présenté dans l'exemple).
Sinon, il reste le VBA.
Bon courage,
Etienne