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

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

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.
 

eCHO

XLDnaute Junior
Merci pour votre réponse mais en effet il calcule seulement un seule trimestre
est ce qu'il y a 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 + .....
 

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 ?
 

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

job75

XLDnaute Barbatruc
Si l'on veut que le dernier mois de retard soit compté même s'il est incomplet, formule en I4 :
Code:
=DATEDIF(H4;FIN.MOIS(F$1;0);"m")
 

Pièces jointes

  • TAXE(2).xlsx
    11.9 KB · Affichages: 6

Discussions similaires

Réponses
7
Affichages
528
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…