Optimisation code vba long

  • Initiateur de la discussion Initiateur de la discussion dhiouf
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
Bonjour à tous,

Tu trouveras d'autres exemples chez notre partenaire

upload_2016-7-25_21-37-37.png
 
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.
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
825
Réponses
3
Affichages
508
  • Question Question
XL 2019 code vba
Réponses
17
Affichages
2 K
Réponses
11
Affichages
996
Réponses
7
Affichages
726
Réponses
2
Affichages
301
Réponses
33
Affichages
3 K
Retour