Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Prime suivant tranche variable

Chester Mefield

XLDnaute Nouveau
Bonjour,
Je ne sais pas comment cela peut s'appeler, donc pas simple à trouver... :-/
Existe t-il un genre de fonction rechercheV pour qu'en fonction d'un résultat variable cela aille chercher une valeur fixe liée à une tranche définie ?
Exemple : A= 172.5 et b1 =0%, b2=50%, b3=100%, b4=150%

Merci par avance.

PS : ici il y a peu de tranches et j'ai d'abord pensé à la condition SI... mais j'ai 21 tranches !

Chester.
 

chris

XLDnaute Barbatruc
Bonjour

Si tes tranches sont toujours de 50% le calcul peut être réalisé sans tableau des tranches : =PLAFOND(Valeur;50%)/50%*$A$1

Sinon utiliser RECHERCHEV avec la 4ème argument à vrai

Edit : tes limites de tranches étant les valeurs rondes c'est =((PLANCHER(Valeur;50%)/50%)+1)*$A$1
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Si c'est un vrai calcul par tranches, j'ai écrit ces jours ci cette fonction perso :
VB:
Function PCTranch(ByVal X As Double, ByVal TXY, _
   Optional ByVal C2 As Long = 2) As Double
Rem. ——— Cumul de pourcentages d'une valeur dans différentes tranches.
'  Paramètres :
'  X: La valeur dont on veut calculer une somme de pourcentages.
'  TXY: Plage rectangulaire ou tableau de 2 colonnes. À chaque ligne :
'     Colonne 1: Seuil de X à partir duquel le pourcentage s'applique.
'     Colonne C2: Pourcentage 0 à 100 appliqué à (X - Seuil), jusqu'à
'        concurrence éventuelle d'un autre seuil spécifié ligne suivante.
   Dim L As Long, X0 As Double, X1 As Double, Y0 As Double
   If TypeOf TXY Is Range Then TXY = TXY.Value
   X0 = TXY(1, 1): Y0 = TXY(1, C2)
   If X <= X0 Then PCTranch = 0: Exit Function
   For L = 2 To UBound(TXY, 1)
      X1 = TXY(L, 1): If X <= X1 Then Exit For
      PCTranch = PCTranch + (X1 - X0) * Y0 / 100
      X0 = X1: Y0 = TXY(L, C2): Next L
   PCTranch = PCTranch + (X - X0) * Y0 / 100
   End Function
Exemple d'utilisation :
:
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonjour.
Une autre fonction qui peut vous intéressez :
VB:
Function IntpoLinT(ByVal X As Double, ByVal TXY, _
   Optional ByVal C2 As Long = 2) As Double
Rem. ——— Interpolation linéaire entre deux valeurs données dans une table.
'  Paramètres :
'  X: La valeur dont on veut calculer l'interpolation.
'  TXY: Plage rectangulaire ou tableau de 2 colonnes.
'     Colonne 1: Valeurs seuils de X.
'     Colonne C2: Valeur Y correspondantes de la fonction.
'        Remarque: une valeur X hors plages relèvera des plages extrêmes définies.
'           La première et dernière valeurs X ne sont donc pas de vrais seuils,
'           puisque les pentes des extrêmes sont prolongées au delà si nécessaires.
'           Notamment s'il n'y a que 2 XY, la fonction sera pour toute valeur
'           une droite passant par ces 2 points.
   Dim L As Long
   If TypeOf TXY Is Range Then TXY = TXY.Value
   L = UBound(TXY, 1) - 1
   Select Case X
      Case Is < TXY(1, 1): L = 1
      Case Is < TXY(L, 1): L = WorksheetFunction.Match(X, WorksheetFunction.Index(TXY, 0, 1))
      End Select
   IntpoLinT = IntpoLin(X, TXY(L, 1), TXY(L, C2), TXY(L + 1, 1), TXY(L + 1, C2))
   End Function
Function IntpoLin(ByVal X As Double, ByVal X1 As Double, ByVal Y1 As Double, _
                                     ByVal X2 As Double, ByVal Y2 As Double) As Double
   IntpoLin = Y1 + (Y2 - Y1) * (X - X1) / (X2 - X1)
   End Function
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…