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
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
<dracbi@hotmail.fr> a écrit dans le message de
news:e22f4bd7-5ec8-406d-933b-2b249e7dabb1@v13g2000pro.googlegroups.com...
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
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
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
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
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
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
Bonjour,
Un oeil sur un outil tout fait ?
http://www.cbanque.com/download/jxtamm.php
@+
FxM
dracbi@hotmail.fr 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
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
Bonjour FxM,
Ca fait plaisir de te voir par ici...
Bonjour FxM,
Ca fait plaisir de te voir par ici...
Bonjour FxM,
Ca fait plaisir de te voir par ici...
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
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
<dra...@hotmail.fr> a écrit dans le message denews:e22f4bd7-5ec8-406d-9 33b-2b249e7dabb1@v13g2000pro.googlegroups.com...
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
Bonjour,
Un oeil sur un outil tout fait ?http://www.cbanque.com/download/jxtamm.php
@+
FxM
Bonjour,
Un oeil sur un outil tout fait ?http://www.cbanque.com/download/jxtamm.php
@+
FxM
Bonjour,
Un oeil sur un outil tout fait ?http://www.cbanque.com/download/jxtamm.php
@+
FxM
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:
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
<dra...@hotmail.fr> a écrit dans le message
denews:e22f4bd7-5ec8-406d-933b-2b249e7dabb1@v13g2000pro.googlegroups.com...
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:
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
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
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