Bonjour,
Je travaille sur une table excel de très grande taille (15000 lignes) et je dois exécuter une procédure sous vba pour effectuer un calcul du capital restant dû pour chaque client à une date précise ( chaque client a une échéance fixe par mois,une date de dernière échéance, une date de première échéance et le capital restant dû au 31/12/2012). j'ai fait la procédure suivante pour effectuer le calcul. Le problème que j'ai rencontré c'est que le calcul bloque si j'exécute pour plus de 300 clients ( lignes) sachant que pour chaque ligne on parcourt 1500 colonne (toutes les dates possibles de 01/01/2013 jusqu'à 31/12/2016) je pense que ce n'est pas pratique. L'objectif de ce travail est de d'offrir la possibilité de savoir le total du capital restant dû à une date donnée. Aviez des propositions pour faciliter la tache ?
Sub Calcul()
Dim I, J, H As Integer
Dim X As Variant
For I = 2 To 15000
For J = 8 To 1500
If Cells(I, 3).Value = Cells(1, J).Value And Cells(I, 4).Value < Cells(I, 5).Value Then
Cells(I, J).Value = Cells(I, 4).Value
Else
If Cells(I, 7).Value = "4 Semaine" Then
For T = 0 To 53
X = Cells(I, 4).Value
If Cells(1, J).Value = DateSerial(Year(Cells(I, 3).Value), Month(Cells(I, 3).Value), Day(Cells(I, 3).Value) - (T * 28)) And (X - (Cells(I, 6).Value - T) * Cells(I, 5).Value) > 0 And X > (X - (Cells(I, 6).Value - T) * Cells(I, 5).Value) Then
Cells(I, J).Value = X - (Cells(I, 6).Value - T) * Cells(I, 5).Value
End If
Next T
Else
If Cells(I, 7).Value = "Quinzaine" Then
For H = 0 To 53
X = Cells(I, 4).Value
If Cells(1, J).Value = DateSerial(Year(Cells(I, 3).Value), Month(Cells(I, 3).Value), Day(Cells(I, 3).Value) - (H * 14)) And (X - (Cells(I, 6).Value - H) * Cells(I, 5).Value) > 0 And X > (X - (Cells(I, 6).Value - T) * Cells(I, 5).Value) Then
Cells(I, J).Value = X - (Cells(I, 6).Value - H) * Cells(I, 5).Value
End If
Next H
End If
End If
End If
Next J
Next I
End Sub
ci-joint la table excel.