amortissement

Le
dracbi
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
dracbi
Le #17721821
J'oubliais le principal merci :)
Philippe.R
Le #17722181
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
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
Philippe.R
Le #17722251
Re,
Tout d'abord, dans mon précédent post, remplacer Date par DateDebut dans le
select case ; autre piste enfin, remplacer la suite de if par une boucle de
ce type :

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

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

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

End If
End If
End If

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

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


FxM
Le #17722441
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


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

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

@+
FxM


a écrit :
bonsoir,

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


Sub AmortLineaire()

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

Range("A10:Q1000").Clear


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

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


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

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

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

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

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

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

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

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

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

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

Else

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

End Sub




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



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

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

au lieu de :

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

        End If
        End If
        End If

deuxième piste, à priori plus rapide en utilisant l'instruction 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




bonsoir,

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


Cordialement

Benjamin :)
dracbi
Le #17727621
On 2 nov, 09:57, FxM
Bonjour,

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

@+
FxM



bonsoir,

merci pour le lien

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

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

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

End If
End If
End If

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

Select Case Month(Date)
Case Is = 10
ActiveCell.Offset(i, 14) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 11
ActiveCell.Offset(i, 15) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (1 / 12)
Case Is = 12
ActiveCell.Offset(i, 16) = PrixAcquisitionHT * Taux * (((30 + 1 _
- Day(DateDebut)) / 30) * 1 / 12)
End Select
--
Avec
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
denews:




bonsoir,

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


Cordialement

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

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



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

Cordialement

Benjamin
Publicité
Poster une réponse
Anonyme