Optimisation code vba long

dhiouf

XLDnaute Occasionnel
Bonjour tous le monde;

est-il possible de simplifier le code suivant?

Code:
'Calcul nombre de jours entre 2 dates.
If .Range("B16") <> "" Then
.Range("D16").Value = .Range("C16").Value - .Range("D12").Value
Else
.Range("D16").Value = ""
End If
If .Range("B17") <> "" Then
.Range("D17").Value = .Range("C17").Value - .Range("C16").Value
Else
.Range("D17").Value = ""
End If
If .Range("B18") <> "" Then
.Range("D18").Value = .Range("C18").Value - .Range("C17").Value
Else
.Range("D18").Value = ""
End If
If .Range("B19") <> "" Then
.Range("D19").Value = .Range("C19").Value - .Range("C18").Value
Else
.Range("D19").Value = ""
End If

' Calcul DONT INTERETS, DONT CAPITAL, RESTANT DÛ
If .Range("B16") <> "" Then
.Range("G16").Value = Round(.Range("E16").Value * .Range("taux").Value * .Range("D16").Value / 36000, 3)
.Range("F16").Value = Range("mensualite").Value - .Range("G16").Value
.Range("E17").Value = Range("E16").Value - .Range("F16").Value
Else
.Range("E17,G16:F16").Value = ""
End If
If .Range("B17") <> "" Then
.Range("G17").Value = Round(.Range("E17").Value * .Range("taux").Value * .Range("D17").Value / 36000, 3)
.Range("F17").Value = Range("mensualite").Value - .Range("G17").Value
.Range("E18").Value = Range("E17").Value - .Range("F17").Value
Else
.Range("E18,G17:F17").Value = ""
End If
If .Range("B18") <> "" Then
.Range("G18").Value = Round(.Range("E18").Value * .Range("taux").Value * .Range("D18").Value / 36000, 3)
.Range("F18").Value = Range("mensualite").Value - .Range("G18").Value
.Range("E19").Value = Range("E18").Value - .Range("F18").Value
Else
.Range("E19,G18:F18").Value = ""
End If
If .Range("B19") <> "" Then
.Range("G19").Value = Round(.Range("E19").Value * .Range("taux").Value * .Range("D19").Value / 36000, 3)
.Range("F19").Value = Range("mensualite").Value - .Range("G19").Value
.Range("E20").Value = Range("E19").Value - .Range("F19").Value
Else
.Range("E20,G19:F19").Value = ""
End If

Sachant que j'ai n cellules, c-a-d le nombre de cellule est variable (exemple 60, 84, 300 cellules) dans ce cas il faut taper le code 300 fois.

Code:
' variable nombre cellule
Dim myVariableCellule
myVariableCellule = Range("Totalmounth").value

Merci d'avance
 

gosselien

XLDnaute Barbatruc
re,

et si on te donnes un truc déjà fait et qui fonctionne bien (il me semble) , ça irait ... ?
ça t'éviterais de réinventer la roue :)
Il n'est pas de moi mais trouvé sur le net !
P.
 

Pièces jointes

  • JxTammV304.xlsm
    88.1 KB · Affichages: 96

JCGL

XLDnaute Barbatruc
Bonjour à tous,

Tu trouveras d'autres exemples chez notre partenaire

upload_2016-7-25_21-37-37.png
 

dhiouf

XLDnaute Occasionnel
re,

et si on te donnes un truc déjà fait et qui fonctionne bien (il me semble) , ça irait ... ?
ça t'éviterais de réinventer la roue :)
Il n'est pas de moi mais trouvé sur le net !
P.

Je sais qu'il existe sur le net beaucoup de truc déjà fait, mais je veux créer mon propre ficher. Ainsi j'ai posé une question, si vous avez une réponse je vous remercie, si vous n'avez pas de réponse je vous remercie encore.
 

Chris24

XLDnaute Impliqué
bonjour

vite fait regarde ton fichier en retour. à toi de revoir les calculs notamment pour ajuster la dernière mensualité, je n'ai pas regardé le reste

Bonne journée
 

Pièces jointes

  • Tableau_amortissement_de_crédit_1.xls
    76 KB · Affichages: 91

dhiouf

XLDnaute Occasionnel
bonjour

vite fait regarde ton fichier en retour. à toi de revoir les calculs notamment pour ajuster la dernière mensualité, je n'ai pas regardé le reste

Bonne journée

Re,

Mon fichier en retour, j'ai ajusté la dernière mensualité et la dernière dont capital
VB:
Dim var1
'Ajuster la dernière mensualité ############################################################################
var1 = .Range("E65000").End(xlUp).Value
.Range("H65000").End(xlUp).Value = .Range("H65000").End(xlUp).Value + var1
'Ajuster la dernière dont capital #########################################################################
.Range("F65000").End(xlUp).Value = .Range("F65000").End(xlUp).Value + var1

Bonne journée
 

Pièces jointes

  • Tableau_amortissement_de_crédit.xls
    74 KB · Affichages: 86

Chris24

XLDnaute Impliqué
Bonsoir

Juste pour raccourcir la durée du traitement, en début de ta procédure cmdCalculer_Click ajoute:

Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

et en fin de procédure:

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

Bonne soirée
 

Statistiques des forums

Discussions
312 202
Messages
2 086 178
Membres
103 152
dernier inscrit
Karibu