Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…