Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

amortissement

18 réponses
Avatar
dracbi
bonsoir,

quelqu'un pourrait il m'aider =E0 trouver une fa=E7on plus ad=E9quate de
g=E9rer les amortissements d'immo en lin=E9aire et d=E9gressif.
Voici ce que j'ai en lin=E9aire mais c'est un peu long d=E9sol=E9 :(


Sub AmortLineaire()

'**************************************************************************=
******
'_________Ecrase les donn=E9es de la zone dans laquelle je vais
=E9crire_____________
'**************************************************************************=
******

Range("A10:Q1000").Clear


'**************************************************************************=
******
' ________________________________Mes
variables__________________________________
'**************************************************************************=
******

Dim NomImmo As String
Dim DateDebut As Date
Dim Duree As Integer
Dim Taux As Double
Dim PrixAcquisitionHT As Double
Dim annee As Integer
Dim i As Integer 'compteur permettant d'identifier la premiere et
derniere ligne


'**************************************************************************=
******
'____________ La valeur des variables se trouvent dans une feuille
______________
'**************************************************************************=
******

NomImmo =3D Range("C2")
DateDebut =3D Range("C3")
Duree =3D Range("C4")
Taux =3D 1 / Duree
Range("C6") =3D Taux
PrixAcquisitionHT =3D Range("C7")
annee =3D Year(DateDebut)

'**************************************************************************=
*****
'_______________________ En t=EAte du tableau =E0 cr=E9er
____________________________
'**************************************************************************=
*****

Range("A10").Value =3D "Rang"
Range("B10").Value =3D "Ann=E9e"
Range("C10").Value =3D "Periode"
Range("D10").Value =3D "VNC D=E9but Exercice"
Range("E10").Value =3D "Amort lin=E9aire"
Range("F10").Value =3D "JANV" 'amortissement de janvier
Range("G10").Value =3D "FEV" 'amortissement de fevrier
Range("H10").Value =3D "MARS" 'amortissement de mars
Range("I10").Value =3D "AVRIL" 'amortissement d' avril
Range("J10").Value =3D "MAI" 'amortissement de mai
Range("K10").Value =3D "JUIN" 'amortissement de juin
Range("L10").Value =3D "JUILL" 'amortissement de juillet
Range("M10").Value =3D "AOUT" 'amortissemet de aout
Range("N10").Value =3D "SEPT" 'amortissement de septembre
Range("O10").Value =3D "OCT" 'amortissement de octobre
Range("P10").Value =3D "NOV" 'amortissement de novembre
Range("Q10").Value =3D "DEC" 'amortissement de d=E9cembre

'**************************************************************************=
****
'____________________________________ Boucle
__________________________________
'**************************************************************************=
****

Range("A10").Select
For i =3D 1 To Duree + 1
ActiveCell.Offset(i).Interior.ColorIndex =3D 8
ActiveCell.Offset(i, 0) =3D i 'on d=E9finit le nombre de rang soit le
nombre de ligne utilis=E9

'pour g=E9rer le prorata de la premi=E8re ann=E9e d'amortissement
If ActiveCell.Offset(i, 0) =3D 1 Then
ActiveCell.Offset(i, 1) =3D annee
ActiveCell.Offset(i, 2) =3D DateDebut & " au 31/12/" & annee
ActiveCell.Offset(i, 3) =3D PrixAcquisitionHT
ActiveCell.Offset(i, 4) =3D PrixAcquisitionHT * Taux * (30 + 1 -
Day(DateDebut) + 30 * (12 - Month(DateDebut))) / 360 'annuit=E9 de la
pr=E9mi=E8re ann=E9e compl=E8te
If Month(DateDebut) =3D 1 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 2 Then
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 3 Then
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 4 Then
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 5 Then
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 6 Then
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 7 Then
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 8 Then
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 9 Then
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 10 Then
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 11 Then
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 12 Then
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)

End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Else

'pour g=E9rer le prorata de la derni=E8re ann=E9e d'amortissement
If ActiveCell.Offset(i, 0) =3D Duree + 1 Then
ActiveCell.Offset(i, 1) =3D annee + i - 1
ActiveCell.Offset(i, 2) =3D "01/01/" & annee + i - 1 & " au " &
Day(DateDebut) & "/" & Month(DateDebut) & "/" & annee + i - 1
ActiveCell.Offset(i, 3) =3D ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) =3D ActiveCell.Offset(i, 3)

If Month(DateDebut) =3D 1 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 2 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 3 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) =3D 4 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 5 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 6 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 7 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 8 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 9 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 10 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 11 Then
ctiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) =3D 12 Then
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

Else

'pour g=E9rer l'amortissement des ann=E9es compl=E8tes
If ActiveCell.Offset(i, 0) <> 1 Then
ActiveCell.Offset(i, 1) =3D annee + i - 1
ActiveCell.Offset(i, 2) =3D "01/01/" & annee + i - 1 & " au 31/12/"
& annee + i - 1
ActiveCell.Offset(i, 3) =3D ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) =3D PrixAcquisitionHT * Taux
ActiveCell.Offset(i, 5) =3D PrixAcquisitionHT * Taux * 1 / 12 'janv
ActiveCell.Offset(i, 6) =3D PrixAcquisitionHT * Taux * 1 / 12 'fev
ActiveCell.Offset(i, 7) =3D PrixAcquisitionHT * Taux * 1 / 12 'mars
ActiveCell.Offset(i, 8) =3D PrixAcquisitionHT * Taux * 1 / 12 'avr
ActiveCell.Offset(i, 9) =3D PrixAcquisitionHT * Taux * 1 / 12 'mai
ActiveCell.Offset(i, 10) =3D PrixAcquisitionHT * Taux * 1 / 12 'juin
ActiveCell.Offset(i, 11) =3D PrixAcquisitionHT * Taux * 1 / 12
'juill
ActiveCell.Offset(i, 12) =3D PrixAcquisitionHT * Taux * 1 / 12 'aout
ActiveCell.Offset(i, 13) =3D PrixAcquisitionHT * Taux * 1 / 12 'sept
ActiveCell.Offset(i, 14) =3D PrixAcquisitionHT * Taux * 1 / 12 'oct
ActiveCell.Offset(i, 15) =3D PrixAcquisitionHT * Taux * 1 / 12 'nov
ActiveCell.Offset(i, 16) =3D PrixAcquisitionHT * Taux * 1 / 12 'dec
End If
End If
End If
Next i

End Sub

10 réponses

1 2
Avatar
dracbi
J'oubliais le principal merci :)
Avatar
Philippe.R
Bonjour,
Deux pistes pour alléger le code :
au niveau de l'écriture seulement, en remplaçant la suite de if / end if
imbriqués par par la syntaxe ElseIf :

==================================================================== If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
ElseIf Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
ElseIf Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +1 _
- Day(DateDebut)) / 30) * 1 / 12)
End If
=====================================================================
au lieu de :

If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)

End If
End If
End If

deuxième piste, à priori plus rapide en utilisant l'instruction select case

Select Case Month(Date)
Case Is = 10
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 11
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 12
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
End Select
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
a écrit dans le message de
news:
bonsoir,

quelqu'un pourrait il m'aider à trouver une façon plus adéquate de
gérer les amortissements d'immo en linéaire et dégressif.
Voici ce que j'ai en linéaire mais c'est un peu long désolé :(


Sub AmortLineaire()

'********************************************************************************
'_________Ecrase les données de la zone dans laquelle je vais
écrire_____________
'********************************************************************************

Range("A10:Q1000").Clear


'********************************************************************************
' ________________________________Mes
variables__________________________________
'********************************************************************************

Dim NomImmo As String
Dim DateDebut As Date
Dim Duree As Integer
Dim Taux As Double
Dim PrixAcquisitionHT As Double
Dim annee As Integer
Dim i As Integer 'compteur permettant d'identifier la premiere et
derniere ligne


'********************************************************************************
'____________ La valeur des variables se trouvent dans une feuille
______________
'********************************************************************************

NomImmo = Range("C2")
DateDebut = Range("C3")
Duree = Range("C4")
Taux = 1 / Duree
Range("C6") = Taux
PrixAcquisitionHT = Range("C7")
annee = Year(DateDebut)

'*******************************************************************************
'_______________________ En tête du tableau à créer
____________________________
'*******************************************************************************

Range("A10").Value = "Rang"
Range("B10").Value = "Année"
Range("C10").Value = "Periode"
Range("D10").Value = "VNC Début Exercice"
Range("E10").Value = "Amort linéaire"
Range("F10").Value = "JANV" 'amortissement de janvier
Range("G10").Value = "FEV" 'amortissement de fevrier
Range("H10").Value = "MARS" 'amortissement de mars
Range("I10").Value = "AVRIL" 'amortissement d' avril
Range("J10").Value = "MAI" 'amortissement de mai
Range("K10").Value = "JUIN" 'amortissement de juin
Range("L10").Value = "JUILL" 'amortissement de juillet
Range("M10").Value = "AOUT" 'amortissemet de aout
Range("N10").Value = "SEPT" 'amortissement de septembre
Range("O10").Value = "OCT" 'amortissement de octobre
Range("P10").Value = "NOV" 'amortissement de novembre
Range("Q10").Value = "DEC" 'amortissement de décembre

'******************************************************************************
'____________________________________ Boucle
__________________________________
'******************************************************************************

Range("A10").Select
For i = 1 To Duree + 1
ActiveCell.Offset(i).Interior.ColorIndex = 8
ActiveCell.Offset(i, 0) = i 'on définit le nombre de rang soit le
nombre de ligne utilisé

'pour gérer le prorata de la première année d'amortissement
If ActiveCell.Offset(i, 0) = 1 Then
ActiveCell.Offset(i, 1) = annee
ActiveCell.Offset(i, 2) = DateDebut & " au 31/12/" & annee
ActiveCell.Offset(i, 3) = PrixAcquisitionHT
ActiveCell.Offset(i, 4) = PrixAcquisitionHT * Taux * (30 + 1 -
Day(DateDebut) + 30 * (12 - Month(DateDebut))) / 360 'annuité de la
prémière année complète
If Month(DateDebut) = 1 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 2 Then
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 3 Then
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 4 Then
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 5 Then
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 6 Then
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 7 Then
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 8 Then
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 9 Then
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)

End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Else

'pour gérer le prorata de la dernière année d'amortissement
If ActiveCell.Offset(i, 0) = Duree + 1 Then
ActiveCell.Offset(i, 1) = annee + i - 1
ActiveCell.Offset(i, 2) = "01/01/" & annee + i - 1 & " au " &
Day(DateDebut) & "/" & Month(DateDebut) & "/" & annee + i - 1
ActiveCell.Offset(i, 3) = ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) = ActiveCell.Offset(i, 3)

If Month(DateDebut) = 1 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 2 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 3 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 4 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 5 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 6 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 7 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 8 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 9 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 11 Then
ctiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

Else

'pour gérer l'amortissement des années complètes
If ActiveCell.Offset(i, 0) <> 1 Then
ActiveCell.Offset(i, 1) = annee + i - 1
ActiveCell.Offset(i, 2) = "01/01/" & annee + i - 1 & " au 31/12/"
& annee + i - 1
ActiveCell.Offset(i, 3) = ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) = PrixAcquisitionHT * Taux
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * 1 / 12 'janv
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * 1 / 12 'fev
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * 1 / 12 'mars
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * 1 / 12 'avr
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * 1 / 12 'mai
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * 1 / 12 'juin
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * 1 / 12
'juill
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * 1 / 12 'aout
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * 1 / 12 'sept
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * 1 / 12 'oct
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * 1 / 12 'nov
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * 1 / 12 'dec
End If
End If
End If
Next i

End Sub
Avatar
Philippe.R
Re,
Tout d'abord, dans mon précédent post, remplacer Date par DateDebut dans le
select case ; autre piste enfin, remplacer la suite de if par une boucle de
ce type :

j = Month(DateDebut) + 4
ActiveCell.Offset(i, j) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
If j < 12 Then
For k = j + 1 To 16
ActiveCell.Offset(i, k) = PrixAcquisitionHT * Taux * (1 / 12)
Next k
End If
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Philippe.R" <AS_rauphil_chez_wanadoo.fr> a écrit dans le message de
news:
Bonjour,
Deux pistes pour alléger le code :
au niveau de l'écriture seulement, en remplaçant la suite de if / end if
imbriqués par par la syntaxe ElseIf :

==================================================================== > If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
ElseIf Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
ElseIf Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +1 _
- Day(DateDebut)) / 30) * 1 / 12)
End If
===================================================================== >
au lieu de :

If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)

End If
End If
End If

deuxième piste, à priori plus rapide en utilisant l'instruction select
case

Select Case Month(Date)
Case Is = 10
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 11
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 12
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
End Select
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
a écrit dans le message de
news:
bonsoir,

quelqu'un pourrait il m'aider à trouver une façon plus adéquate de
gérer les amortissements d'immo en linéaire et dégressif.
Voici ce que j'ai en linéaire mais c'est un peu long désolé :(


Sub AmortLineaire()

'********************************************************************************
'_________Ecrase les données de la zone dans laquelle je vais
écrire_____________
'********************************************************************************

Range("A10:Q1000").Clear


'********************************************************************************
' ________________________________Mes
variables__________________________________
'********************************************************************************

Dim NomImmo As String
Dim DateDebut As Date
Dim Duree As Integer
Dim Taux As Double
Dim PrixAcquisitionHT As Double
Dim annee As Integer
Dim i As Integer 'compteur permettant d'identifier la premiere et
derniere ligne


'********************************************************************************
'____________ La valeur des variables se trouvent dans une feuille
______________
'********************************************************************************

NomImmo = Range("C2")
DateDebut = Range("C3")
Duree = Range("C4")
Taux = 1 / Duree
Range("C6") = Taux
PrixAcquisitionHT = Range("C7")
annee = Year(DateDebut)

'*******************************************************************************
'_______________________ En tête du tableau à créer
____________________________
'*******************************************************************************

Range("A10").Value = "Rang"
Range("B10").Value = "Année"
Range("C10").Value = "Periode"
Range("D10").Value = "VNC Début Exercice"
Range("E10").Value = "Amort linéaire"
Range("F10").Value = "JANV" 'amortissement de janvier
Range("G10").Value = "FEV" 'amortissement de fevrier
Range("H10").Value = "MARS" 'amortissement de mars
Range("I10").Value = "AVRIL" 'amortissement d' avril
Range("J10").Value = "MAI" 'amortissement de mai
Range("K10").Value = "JUIN" 'amortissement de juin
Range("L10").Value = "JUILL" 'amortissement de juillet
Range("M10").Value = "AOUT" 'amortissemet de aout
Range("N10").Value = "SEPT" 'amortissement de septembre
Range("O10").Value = "OCT" 'amortissement de octobre
Range("P10").Value = "NOV" 'amortissement de novembre
Range("Q10").Value = "DEC" 'amortissement de décembre

'******************************************************************************
'____________________________________ Boucle
__________________________________
'******************************************************************************

Range("A10").Select
For i = 1 To Duree + 1
ActiveCell.Offset(i).Interior.ColorIndex = 8
ActiveCell.Offset(i, 0) = i 'on définit le nombre de rang soit le
nombre de ligne utilisé

'pour gérer le prorata de la première année d'amortissement
If ActiveCell.Offset(i, 0) = 1 Then
ActiveCell.Offset(i, 1) = annee
ActiveCell.Offset(i, 2) = DateDebut & " au 31/12/" & annee
ActiveCell.Offset(i, 3) = PrixAcquisitionHT
ActiveCell.Offset(i, 4) = PrixAcquisitionHT * Taux * (30 + 1 -
Day(DateDebut) + 30 * (12 - Month(DateDebut))) / 360 'annuité de la
prémière année complète
If Month(DateDebut) = 1 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 2 Then
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 3 Then
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 4 Then
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 5 Then
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 6 Then
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 7 Then
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 8 Then
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 9 Then
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)

End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Else

'pour gérer le prorata de la dernière année d'amortissement
If ActiveCell.Offset(i, 0) = Duree + 1 Then
ActiveCell.Offset(i, 1) = annee + i - 1
ActiveCell.Offset(i, 2) = "01/01/" & annee + i - 1 & " au " &
Day(DateDebut) & "/" & Month(DateDebut) & "/" & annee + i - 1
ActiveCell.Offset(i, 3) = ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) = ActiveCell.Offset(i, 3)

If Month(DateDebut) = 1 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 2 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 3 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 4 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 5 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 6 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 7 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 8 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 9 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 11 Then
ctiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

Else

'pour gérer l'amortissement des années complètes
If ActiveCell.Offset(i, 0) <> 1 Then
ActiveCell.Offset(i, 1) = annee + i - 1
ActiveCell.Offset(i, 2) = "01/01/" & annee + i - 1 & " au 31/12/"
& annee + i - 1
ActiveCell.Offset(i, 3) = ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) = PrixAcquisitionHT * Taux
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * 1 / 12 'janv
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * 1 / 12 'fev
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * 1 / 12 'mars
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * 1 / 12 'avr
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * 1 / 12 'mai
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * 1 / 12 'juin
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * 1 / 12
'juill
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * 1 / 12 'aout
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * 1 / 12 'sept
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * 1 / 12 'oct
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * 1 / 12 'nov
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * 1 / 12 'dec
End If
End If
End If
Next i

End Sub


Avatar
FxM
Bonjour,

Un oeil sur un outil tout fait ?
http://www.cbanque.com/download/jxtamm.php

@+
FxM


a écrit :
bonsoir,

quelqu'un pourrait il m'aider à trouver une façon plus adéquate de
gérer les amortissements d'immo en linéaire et dégressif.
Voici ce que j'ai en linéaire mais c'est un peu long désolé :(


Sub AmortLineaire()

'********************************************************************************
'_________Ecrase les données de la zone dans laquelle je vais
écrire_____________
'********************************************************************************

Range("A10:Q1000").Clear


'********************************************************************************
' ________________________________Mes
variables__________________________________
'********************************************************************************

Dim NomImmo As String
Dim DateDebut As Date
Dim Duree As Integer
Dim Taux As Double
Dim PrixAcquisitionHT As Double
Dim annee As Integer
Dim i As Integer 'compteur permettant d'identifier la premiere et
derniere ligne


'********************************************************************************
'____________ La valeur des variables se trouvent dans une feuille
______________
'********************************************************************************

NomImmo = Range("C2")
DateDebut = Range("C3")
Duree = Range("C4")
Taux = 1 / Duree
Range("C6") = Taux
PrixAcquisitionHT = Range("C7")
annee = Year(DateDebut)

'*******************************************************************************
'_______________________ En tête du tableau à créer
____________________________
'*******************************************************************************

Range("A10").Value = "Rang"
Range("B10").Value = "Année"
Range("C10").Value = "Periode"
Range("D10").Value = "VNC Début Exercice"
Range("E10").Value = "Amort linéaire"
Range("F10").Value = "JANV" 'amortissement de janvier
Range("G10").Value = "FEV" 'amortissement de fevrier
Range("H10").Value = "MARS" 'amortissement de mars
Range("I10").Value = "AVRIL" 'amortissement d' avril
Range("J10").Value = "MAI" 'amortissement de mai
Range("K10").Value = "JUIN" 'amortissement de juin
Range("L10").Value = "JUILL" 'amortissement de juillet
Range("M10").Value = "AOUT" 'amortissemet de aout
Range("N10").Value = "SEPT" 'amortissement de septembre
Range("O10").Value = "OCT" 'amortissement de octobre
Range("P10").Value = "NOV" 'amortissement de novembre
Range("Q10").Value = "DEC" 'amortissement de décembre

'******************************************************************************
'____________________________________ Boucle
__________________________________
'******************************************************************************

Range("A10").Select
For i = 1 To Duree + 1
ActiveCell.Offset(i).Interior.ColorIndex = 8
ActiveCell.Offset(i, 0) = i 'on définit le nombre de rang soit le
nombre de ligne utilisé

'pour gérer le prorata de la première année d'amortissement
If ActiveCell.Offset(i, 0) = 1 Then
ActiveCell.Offset(i, 1) = annee
ActiveCell.Offset(i, 2) = DateDebut & " au 31/12/" & annee
ActiveCell.Offset(i, 3) = PrixAcquisitionHT
ActiveCell.Offset(i, 4) = PrixAcquisitionHT * Taux * (30 + 1 -
Day(DateDebut) + 30 * (12 - Month(DateDebut))) / 360 'annuité de la
prémière année complète
If Month(DateDebut) = 1 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 2 Then
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 3 Then
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 4 Then
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 5 Then
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 6 Then
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 7 Then
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 8 Then
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 9 Then
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)

End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Else

'pour gérer le prorata de la dernière année d'amortissement
If ActiveCell.Offset(i, 0) = Duree + 1 Then
ActiveCell.Offset(i, 1) = annee + i - 1
ActiveCell.Offset(i, 2) = "01/01/" & annee + i - 1 & " au " &
Day(DateDebut) & "/" & Month(DateDebut) & "/" & annee + i - 1
ActiveCell.Offset(i, 3) = ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) = ActiveCell.Offset(i, 3)

If Month(DateDebut) = 1 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 2 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 3 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 4 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 5 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 6 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 7 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 8 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 9 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 11 Then
ctiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

Else

'pour gérer l'amortissement des années complètes
If ActiveCell.Offset(i, 0) <> 1 Then
ActiveCell.Offset(i, 1) = annee + i - 1
ActiveCell.Offset(i, 2) = "01/01/" & annee + i - 1 & " au 31/12/"
& annee + i - 1
ActiveCell.Offset(i, 3) = ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) = PrixAcquisitionHT * Taux
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * 1 / 12 'janv
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * 1 / 12 'fev
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * 1 / 12 'mars
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * 1 / 12 'avr
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * 1 / 12 'mai
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * 1 / 12 'juin
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * 1 / 12
'juill
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * 1 / 12 'aout
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * 1 / 12 'sept
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * 1 / 12 'oct
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * 1 / 12 'nov
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * 1 / 12 'dec
End If
End If
End If
Next i

End Sub


Avatar
Philippe.R
Bonjour FxM,
Ca fait plaisir de te voir par ici...
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"FxM" a écrit dans le message de
news:
Bonjour,

Un oeil sur un outil tout fait ?
http://www.cbanque.com/download/jxtamm.php

@+
FxM


a écrit :
bonsoir,

quelqu'un pourrait il m'aider à trouver une façon plus adéquate de
gérer les amortissements d'immo en linéaire et dégressif.
Voici ce que j'ai en linéaire mais c'est un peu long désolé :(


Sub AmortLineaire()

'********************************************************************************
'_________Ecrase les données de la zone dans laquelle je vais
écrire_____________
'********************************************************************************

Range("A10:Q1000").Clear


'********************************************************************************
' ________________________________Mes
variables__________________________________
'********************************************************************************

Dim NomImmo As String
Dim DateDebut As Date
Dim Duree As Integer
Dim Taux As Double
Dim PrixAcquisitionHT As Double
Dim annee As Integer
Dim i As Integer 'compteur permettant d'identifier la premiere et
derniere ligne


'********************************************************************************
'____________ La valeur des variables se trouvent dans une feuille
______________
'********************************************************************************

NomImmo = Range("C2")
DateDebut = Range("C3")
Duree = Range("C4")
Taux = 1 / Duree
Range("C6") = Taux
PrixAcquisitionHT = Range("C7")
annee = Year(DateDebut)

'*******************************************************************************
'_______________________ En tête du tableau à créer
____________________________
'*******************************************************************************

Range("A10").Value = "Rang"
Range("B10").Value = "Année"
Range("C10").Value = "Periode"
Range("D10").Value = "VNC Début Exercice"
Range("E10").Value = "Amort linéaire"
Range("F10").Value = "JANV" 'amortissement de janvier
Range("G10").Value = "FEV" 'amortissement de fevrier
Range("H10").Value = "MARS" 'amortissement de mars
Range("I10").Value = "AVRIL" 'amortissement d' avril
Range("J10").Value = "MAI" 'amortissement de mai
Range("K10").Value = "JUIN" 'amortissement de juin
Range("L10").Value = "JUILL" 'amortissement de juillet
Range("M10").Value = "AOUT" 'amortissemet de aout
Range("N10").Value = "SEPT" 'amortissement de septembre
Range("O10").Value = "OCT" 'amortissement de octobre
Range("P10").Value = "NOV" 'amortissement de novembre
Range("Q10").Value = "DEC" 'amortissement de décembre

'******************************************************************************
'____________________________________ Boucle
__________________________________
'******************************************************************************

Range("A10").Select
For i = 1 To Duree + 1
ActiveCell.Offset(i).Interior.ColorIndex = 8
ActiveCell.Offset(i, 0) = i 'on définit le nombre de rang soit le
nombre de ligne utilisé

'pour gérer le prorata de la première année d'amortissement
If ActiveCell.Offset(i, 0) = 1 Then
ActiveCell.Offset(i, 1) = annee
ActiveCell.Offset(i, 2) = DateDebut & " au 31/12/" & annee
ActiveCell.Offset(i, 3) = PrixAcquisitionHT
ActiveCell.Offset(i, 4) = PrixAcquisitionHT * Taux * (30 + 1 -
Day(DateDebut) + 30 * (12 - Month(DateDebut))) / 360 'annuité de la
prémière année complète
If Month(DateDebut) = 1 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 2 Then
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 3 Then
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 4 Then
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 5 Then
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 6 Then
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 7 Then
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 8 Then
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 9 Then
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)

End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
Else

'pour gérer le prorata de la dernière année d'amortissement
If ActiveCell.Offset(i, 0) = Duree + 1 Then
ActiveCell.Offset(i, 1) = annee + i - 1
ActiveCell.Offset(i, 2) = "01/01/" & annee + i - 1 & " au " &
Day(DateDebut) & "/" & Month(DateDebut) & "/" & annee + i - 1
ActiveCell.Offset(i, 3) = ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) = ActiveCell.Offset(i, 3)

If Month(DateDebut) = 1 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 2 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 3 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 4 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 5 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (((30 + 1
- Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 6 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 7 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 8 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 9 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 11 Then
ctiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If
End If

Else

'pour gérer l'amortissement des années complètes
If ActiveCell.Offset(i, 0) <> 1 Then
ActiveCell.Offset(i, 1) = annee + i - 1
ActiveCell.Offset(i, 2) = "01/01/" & annee + i - 1 & " au 31/12/"
& annee + i - 1
ActiveCell.Offset(i, 3) = ActiveCell.Offset(i - 1, 3).Value -
ActiveCell.Offset(i - 1, 4).Value
ActiveCell.Offset(i, 4) = PrixAcquisitionHT * Taux
ActiveCell.Offset(i, 5) = PrixAcquisitionHT * Taux * 1 / 12 'janv
ActiveCell.Offset(i, 6) = PrixAcquisitionHT * Taux * 1 / 12 'fev
ActiveCell.Offset(i, 7) = PrixAcquisitionHT * Taux * 1 / 12 'mars
ActiveCell.Offset(i, 8) = PrixAcquisitionHT * Taux * 1 / 12 'avr
ActiveCell.Offset(i, 9) = PrixAcquisitionHT * Taux * 1 / 12 'mai
ActiveCell.Offset(i, 10) = PrixAcquisitionHT * Taux * 1 / 12 'juin
ActiveCell.Offset(i, 11) = PrixAcquisitionHT * Taux * 1 / 12
'juill
ActiveCell.Offset(i, 12) = PrixAcquisitionHT * Taux * 1 / 12 'aout
ActiveCell.Offset(i, 13) = PrixAcquisitionHT * Taux * 1 / 12 'sept
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * 1 / 12 'oct
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * 1 / 12 'nov
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * 1 / 12 'dec
End If
End If
End If
Next i

End Sub




Avatar
Lola
Le 02/11/2008, Philippe.R a subtilement énoncé :
Bonjour FxM,
Ca fait plaisir de te voir par ici...



+1
Avatar
dracbi
On 2 nov, 09:08, "Philippe.R" <AS_rauphil_chez_wanadoo.fr> wrote:
Bonjour,
Deux pistes pour alléger le code :
au niveau de l'écriture seulement, en remplaçant la suite de if / end if
imbriqués par par la syntaxe ElseIf :

======================== ========================= ====================
If Month(DateDebut) = 10 Then
    ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +1 _
     - Day(DateDebut)) / 30) * 1 / 12)
    ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
    ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
ElseIf Month(DateDebut) = 11 Then
    ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +1 _
     - Day(DateDebut)) / 30) * 1 / 12)
    ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
ElseIf Month(DateDebut) = 12 Then
    ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +1 _
     - Day(DateDebut)) / 30) * 1 / 12)
End If
======================== ========================= =====================

au lieu de :

        If Month(DateDebut) = 10 Then
        ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * ( ((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
        ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * ( 1 / 12)
        ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * ( 1 / 12)
        Else
        If Month(DateDebut) = 11 Then
        ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * ( ((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
        ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * ( 1 / 12)
        Else
        If Month(DateDebut) = 12 Then
        ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * ( ((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)

        End If
        End If
        End If

deuxième piste, à priori plus rapide en utilisant l'instruction selec t case

Select Case Month(Date)
Case Is = 10
    ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 + 1 _
        - Day(DateDebut)) / 30) * 1 / 12)
    ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
    ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 11
    ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 + 1 _
        - Day(DateDebut)) / 30) * 1 / 12)
    ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 12
    ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 + 1 _
        - Day(DateDebut)) / 30) * 1 / 12)
End Select
--
Avec plaisirhttp://dj.joss.free.fr/trombine.htmhttp://jacxl.free.fr/mpfe/ trombino.html
Philippe.R
Pour se connecter au forum :http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
a écrit dans le message denews:e22f4bd7-5ec8-406d-9




bonsoir,

merci pour votre aide je met à jour dès que possible.
Pourrriez vous m'indiquer également comment joindre le fichier comme
certain font ci joint.com ?


Cordialement

Benjamin :)
Avatar
dracbi
On 2 nov, 09:57, FxM wrote:
Bonjour,

Un oeil sur un outil tout fait ?http://www.cbanque.com/download/jxtamm.php

@+
FxM



bonsoir,

merci pour le lien

Benjamin
Avatar
Philippe.R
Bonsoir,
Voici le lien pour joindre un fichier :
http://cjoint.com/
et suivre le mode d'emploi sur la page d'accueil
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
a écrit dans le message de
news:
On 2 nov, 09:08, "Philippe.R" <AS_rauphil_chez_wanadoo.fr> wrote:
Bonjour,
Deux pistes pour alléger le code :
au niveau de l'écriture seulement, en remplaçant la suite de if / end if
imbriqués par par la syntaxe ElseIf :

==================================================================== > If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
ElseIf Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
ElseIf Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +1 _
- Day(DateDebut)) / 30) * 1 / 12)
End If
===================================================================== >
au lieu de :

If Month(DateDebut) = 10 Then
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 11 Then
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Else
If Month(DateDebut) = 12 Then
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 +
1 - Day(DateDebut)) / 30) * 1 / 12)

End If
End If
End If

deuxième piste, à priori plus rapide en utilisant l'instruction select
case

Select Case Month(Date)
Case Is = 10
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 11
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 12
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
End Select
--
Avec
plaisirhttp://dj.joss.free.fr/trombine.htmhttp://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
a écrit dans le message
denews:




bonsoir,

merci pour votre aide je met à jour dès que possible.
Pourrriez vous m'indiquer également comment joindre le fichier comme
certain font ci joint.com ?


Cordialement

Benjamin :)
Avatar
dracbi
On 2 nov, 09:17, "Philippe.R" <AS_rauphil_chez_wanadoo.fr> wrote:
Re,
Tout d'abord, dans mon précédent post, remplacer Date par DateDebut d ans le
select case ; autre piste enfin, remplacer la suite de if par une boucle de
ce type :

j = Month(DateDebut) + 4
ActiveCell.Offset(i, j) = PrixAcquisitionHT * Taux * (((30 + 1 _
        - Day(DateDebut)) / 30) * 1 / 12)
If j < 12 Then
    For k = j + 1 To 16
    ActiveCell.Offset(i, k) = PrixAcquisitionHT * Taux * (1 / 12)
    Next k
End If
--
Avec plaisir



Un grand merci j'ai qq difficulté avec ce code il est plus difficile à
comprendre et mettre en place d'autant plus que je suis un simple
néophyte en la matière

Cordialement

Benjamin
1 2