XL 2019 Calcule majoration

eCHO

XLDnaute Junior
bonjour
j'avais ce code VBA qui me permet de calcule majoration de retard
VB:
'm représente le mois limite et a représente l'année
Function taxe(cel2, cel, m, a)
'MsgBox CDate("1/" & m & "/" & a)
If cel = "" Then Exit Function
d = DateDiff("m", CDate("1/" & m & "/" & a), cel)
If d > 0 Then
taxe = d - 1
taxe = (cel2 * 10) / 100 + (cel2 * 5) / 100 + cel2 + ((cel2 * 0.5 / 100 * taxe))
Else
taxe = cel2
End If
End Function

ce que je cherche à faire c'est de changer m qui représente le mois limite par le dernier trimestre non payé sur la ligne F
c'est à dire c'est j'ais T1 dans la colonne F donc " =taxe(E4;F1;4;G4)" et pour T2 "" =taxe(E4;F1;7;G4)"

Merci d'avance
 

Pièces jointes

  • TAXE.xlsm
    16.8 KB · Affichages: 7
Solution
un moyen de calculer le total depuis T1/2020 par exemple jusqu'à aujourd'hui c'est à dire t1+t2+t3+t4/2020 +t1..t4/2021 + .....
Qu'entendez vous par le Total ?
Actuellement on calcul le prix pour un nombre de mois donné.
Pourquoi voulez vous ajouter les taxes pour chaque mois ?
Vous voulez calculer les sommes comme indiqué ici dans la colonne jaune ?
1666608668813.png

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour eCho, Gégé,
Peut être comme ceci :
VB:
Function taxe(cel2, cel, DernierTrimestre, a)
    If cel = "" Then Exit Function
    Select Case DernierTrimestre
        Case 1: m = 4
        Case 2: m = 7
        Case 3: m = 10
        Case 4: m = 1: a = a + 1
        Case Else: m = 4 ' valeur par defaut, à modifier
    End Select
    d = DateDiff("m", CDate("1/" & m & "/" & a), cel)
    If d > 0 Then
        taxe = d - 1
        taxe = (cel2 * 10) / 100 + (cel2 * 5) / 100 + cel2 + ((cel2 * 0.5 / 100 * taxe))
    Else
        taxe = cel2
    End If
End Function
La syntaxe est alors : =Taxe(Montant,Date,Trimestre,Année)
NB: Dans votre fichier la formule est en matriciel, c'est inutile.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
je me suis juste borné à faire le cas concernant DernierTrimestre.
En relisant je ne comprends pas votre fonction :
taxe = (cel2 * 10) / 100 + (cel2 * 5) / 100 + cel2 + ((cel2 * 0.5 / 100 * taxe))
Si on développe :
VB:
taxe = (cel2 * 10) / 100 + (cel2 * 5) / 100 + cel2 + ((cel2 * 0.5 / 100 * taxe))  soit
taxe = cel2 * 10% + cel2 * 5% + cel2 + cel2 * 0.5% * taxe  soit
taxe = cel2 * 115% + cel2 * 0.5% * taxe  soit enfin

taxe = cel2 * (115% + 0.5% (d-1))
Donc la taxe serait de 115% de la valeur +0.5% par trimestre, ou encore 0.16666% par mois ?
Si c'est ok il suffit de calculer le nombre de mois entre la date et aujourd'hui et d'utiliser 0.16% par mois ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
un moyen de calculer le total depuis T1/2020 par exemple jusqu'à aujourd'hui c'est à dire t1+t2+t3+t4/2020 +t1..t4/2021 + .....
Qu'entendez vous par le Total ?
Actuellement on calcul le prix pour un nombre de mois donné.
Pourquoi voulez vous ajouter les taxes pour chaque mois ?
Vous voulez calculer les sommes comme indiqué ici dans la colonne jaune ?
1666608668813.png
 

job75

XLDnaute Barbatruc
Bonjour eCHO, Gégé-45550, sylvanu,
C'est le payement a pris de retard on ajoute 10% de 120 et 5% pour le premier mois de retard et 0.5 % pour les autres mois de retard
Pas besoin de VBA voyez le fichier .xlsx joint, formule en J4 :
Code:
=E4*(1+10%*(F$1>H4)+5%*SIGNE(I4)+0,5%*MAX(I4-1;))
Le dernier mois de retard n'est pas compté s'il est incomplet.

A+
 

Pièces jointes

  • TAXE(1).xlsx
    11.9 KB · Affichages: 3

Discussions similaires

Réponses
7
Affichages
330
Réponses
2
Affichages
906

Statistiques des forums

Discussions
312 306
Messages
2 087 094
Membres
103 467
dernier inscrit
Pandiska