Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Formula/funzione per calcolo bonus Renzi 2015

246 views
Skip to first unread message

mauriz...@infinito.it

unread,
May 7, 2016, 12:47:01 PM5/7/16
to
Salve
qualcuno conosce o ha già scritto la formula e/o funzione per il calcolo del Bonus Renzi?

Tia.

casanmaner

unread,
May 7, 2016, 12:58:39 PM5/7/16
to
Dovrei avere qualcosa... Appena ho un momento faccio una ricerca nei miei archivi

mauriz...@infinito.it

unread,
May 7, 2016, 1:14:02 PM5/7/16
to
Il giorno sabato 7 maggio 2016 18:58:39 UTC+2, casanmaner ha scritto:
> Dovrei avere qualcosa... Appena ho un momento faccio una ricerca nei miei archivi

Intanto, grazie, per il tuo tempestivo interessamento.

casanmaner

unread,
May 7, 2016, 3:27:31 PM5/7/16
to
Questa è una funzione personalizzata (definita dall'utente) che calcola la detrazione ex art. 13, comma 1bis, del tuir:
'---
Function Detrazione_Art_13_C_1bis(Reddito_Complessivo As Currency, _
Giorni_Lavoro As Integer, _
Irpef_Lorda As Currency, _
Detrazione_Lavoro As Currency) As Currency

Dim Risultato As Currency, Ratio As Double
Const LimiteReddito1 As Currency = 24000
Const LimiteReddito2 As Currency = 26000
Const DetrazioneBase As Currency = 960
Const DivisoreRatio As Currency = 2000

If Irpef_Lorda > Detrazione_Lavoro Then
If Reddito_Complessivo <= LimiteReddito1 Then
Risultato = DetrazioneBase
ElseIf Reddito_Complessivo > LimiteReddito1 And Reddito_Complessivo <= LimiteReddito2 Then
Ratio = CDbl(Left(CDec(((LimiteReddito2 - Reddito_Complessivo) / DivisoreRatio)), 6))
Risultato = DetrazioneBase * Ratio
Else
Risultato = 0
End If
Else
Risultato = 0
End If

Detrazione_Art_13_C_1bis = Application.Round(Risultato * Giorni_Lavoro / 365, 0)
End Function
'---

La funzione richiede che siano calcolate anche l'irpef lorda e le detrazioni per lavoro.
Per calcolarle puoi utilizzare queste funzioni personalizzate da "annidare" nella funzione stessa (o facendo in modo che le funzioni siano inserite in una cella e quella della detrazione "Renzi" faccia riferimento alle celle):
'----
Function Calcolo_Irpef(Reddito_Imponibile As Currency) As Currency
Dim Sc As Variant
Dim al As Variant
Dim Irpef_Sc As Variant
Dim i As Integer
If Reddito_Imponibile <= 0 Then
Calcolo_Irpef = 0
Exit Function
End If
Sc = Array(0, 15000, 28000, 55000, 75000)
al = Array(0.23, 0.27, 0.38, 0.41, 0.43)
Irpef_Sc = Array(0, 3450, 6960, 17220, 25420)
i = -1
Do
i = 1 + i
If i > UBound(Sc) Then Exit Do
Loop Until Application.Round(Reddito_Imponibile, 0) <= Sc(i)
Calcolo_Irpef = Application.Round(((Reddito_Imponibile - Sc(i - 1)) * al(i - 1)) + Irpef_Sc(i - 1), 0)
End Function

Function Detrazioni_Lavoro_Dipendente(Reddito_Complessivo As Currency, _
Giorni_Lavoro As Integer, _
Optional Opz_Lav_Tempo_Det As Boolean) As Currency
Dim Reddito1 As Currency, Detrazione1 As Currency, DetrazioneMinima As Currency, _
Reddito2 As Currency, Detrazione2 As Currency, MaggiorazioneDetrazione2 As Currency, _
Divisore1 As Currency, Ratio1 As Double, Reddito3 As Currency, Divisore2 As Currency, _
Ratio2 As Double, RisultatoDetrazione As Currency

If Opz_Lav_Tempo_Det = True Then
DetrazioneMinima = 1380
Else
DetrazioneMinima = 690
End If
Reddito1 = 8000
Detrazione1 = 1880
Reddito2 = 28000
Detrazione2 = 978
MaggiorazioneDetrazione2 = 902
Divisore1 = 20000
Reddito3 = 55000
Divisore2 = 27000
Ratio1 = CDbl(Left(CDec(((Reddito2 - Reddito_Complessivo) / Divisore1)), 6))
Ratio2 = CDbl(Left(CDec(((Reddito3 - Reddito_Complessivo) / Divisore2)), 6))

If Reddito_Complessivo <= 0 Or Reddito_Complessivo > Reddito3 Then
Detrazioni_Lavoro_Dipendente = 0
Exit Function
End If

If Reddito_Complessivo <= Reddito1 Then
If Detrazione1 * Giorni_Lavoro / 365 <= DetrazioneMinima Then
RisultatoDetrazione = DetrazioneMinima
Else
RisultatoDetrazione = Detrazione1 * Giorni_Lavoro / 365
End If
End If

If Reddito_Complessivo > Reddito1 And Reddito_Complessivo <= Reddito2 Then
RisultatoDetrazione = (Detrazione2 + (MaggiorazioneDetrazione2 * Ratio1)) * Giorni_Lavoro / 365
End If

If Reddito_Complessivo > Reddito2 And Reddito_Complessivo <= Reddito3 Then
RisultatoDetrazione = Detrazione2 * Ratio2 * Giorni_Lavoro / 365
End If

Detrazioni_Lavoro_Dipendente = Application.Round(RisultatoDetrazione, 0)
End Function
'----

Simone B.

unread,
May 7, 2016, 3:33:59 PM5/7/16
to


ha scritto nel messaggio
news:e5092963-4b4f-46eb...@googlegroups.com...

<Salve
<qualcuno conosce o ha già scritto la formula e/o funzione per il calcolo
del Bonus Renzi?

http://www.danielesaisi.com/2014/04/bonus-stipendi-da-80-euro-programma.html

Allegato il file di esempio excel

mauriz...@infinito.it

unread,
May 8, 2016, 7:58:41 AM5/8/16
to
Come sempre... PERFETTO. grazie.

mauriz...@infinito.it

unread,
May 8, 2016, 7:59:35 AM5/8/16
to
Il giorno sabato 7 maggio 2016 21:33:59 UTC+2, Simone B. ha scritto:
Interessante spunto.

Ruggero

unread,
May 10, 2016, 4:34:13 AM5/10/16
to
Il 07/05/2016 21:27, casanmaner ha scritto:
[CUT]
queste servivano anche a me.. grazie!!

solo una cosa: vedo che il risultato viene arrotondato.. sarebbe
possibile il non arrotondamento (od al massimo due cifre decimali)?

non sono per niente un drago del vba :-(

ti ringrazio ancora

R.

Ruggero

unread,
May 10, 2016, 5:34:00 AM5/10/16
to
Il 07/05/2016 21:27, casanmaner ha scritto:

penso di aver trovato..


> Detrazione_Art_13_C_1bis = Application.Round(Risultato * Giorni_Lavoro / 365, 2)

> Calcolo_Irpef = Application.Round(((Reddito_Imponibile - Sc(i - 1)) * al(i - 1)) + Irpef_Sc(i - 1), 2)

>
> Detrazioni_Lavoro_Dipendente = Application.Round(RisultatoDetrazione, 2)

dove c'era 0 ho messo 2 e le funzioni.. funzionano! :-)
R.


Ruggero

unread,
May 10, 2016, 6:05:13 AM5/10/16
to
Il 07/05/2016 21:27, casanmaner ha scritto:

scusa la mia ignoranza vba-esca..


>
> If Opz_Lav_Tempo_Det = True Then

se volessi condizionare il calcolo a questo parametro, cosa dovrei
indicare nella cella che ho denominato con questo nome?
mi pare che accetti solo numeri.. ma non capisco quali mettere
semper grazie



casanmaner

unread,
May 10, 2016, 6:14:37 AM5/10/16
to
VERO o FALSO

Se vuoi che l'opzione si basi su di una stringa di testo (ad es. DET o IND) puoi modificare così.
Dove è presente la dichiarazione dell'argomento della funzione:
Optional Opz_Lav_Tempo_Det As String

e dove viene effettuata la verifica della condizione:
If Ucase(Opz_Lav_Tempo_Det) = "DET" Then
DetrazioneMinima = 1380
ElseIf Ucase(Opz_Lav_Tempo_Det) ="IND" Then

Ruggero

unread,
May 10, 2016, 6:31:23 AM5/10/16
to
Il 10/05/2016 12:14, casanmaner ha scritto:

porta pazienza.. :-((

>
> Se vuoi che l'opzione si basi su di una stringa di testo (ad es. DET o IND) puoi modificare così.
> Dove è presente la dichiarazione dell'argomento della funzione:
> Optional Opz_Lav_Tempo_Det As String

non mi è chiaro dove devo inserire queste informazioni
>
> e dove viene effettuata la verifica della condizione:
> If Ucase(Opz_Lav_Tempo_Det) = "DET" Then
> DetrazioneMinima = 1380
> ElseIf Ucase(Opz_Lav_Tempo_Det) ="IND" Then
> DetrazioneMinima = 690
> End If
>

queste forse sì..

Ruggero

unread,
May 10, 2016, 9:04:26 AM5/10/16
to
Il 10/05/2016 12:31, Ruggero ha scritto:
> Il 10/05/2016 12:14, casanmaner ha scritto:
>
> porta pazienza.. :-((


trovato.. grazie!!


0 new messages