1 pièce(s) jointe(s)
Création échéancier en VBA (suite)
bonjour,
maintenant que le souci de l'échéancier est résolu (encore merci de l'aide), un nouveau problème se pose à moi. Une fois que l'échéancier est créé, il faudrait que le programme aille me prendre les valeurs de la colonne F (dans Feuil1) et qu'il me retransmette la somme de ces valeurs en fonction de la date de paiement (colonne C, Feuil1) dans les cellules C4 à C9 (Feuil2).
Dans ce cas, les valeurs seraient (pour la Feuil2):
C4 : 11'965.99 (1 seul paiement dans le mois à venir)
C5 : 35'897.97 (3 paiements pour la période de 1 à 3 mois)
C6 : 35'897.97
C7, C8, C9 : 0 (plus de paiement à affectuer)
Les paiements qui auraient déjà été effectués à une date passée ne seraient pas à prendre en compte.
J'ai essayé de faire ça par une formule "somme.si" et de l'enregistrer en module, mais ca ne marche pas, donc si quelqu'un aurait une idée de comment procéder, merci d'avance.
et si vous avez besoin de plus d'explication, n'hésitez pas. Je n'ai pas pu mettre le fichier avec le code (trop volumineux), mais si vous voulez voir à quoi il ressemble:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| Sub Macro1()
Const fdg As Double = 0.1
Dim montant As Double
Dim tau As Double
Dim dur As Integer
Dim dep As Date
Dim differ As Single
Dim maf As Worksheet
Dim index As Long
Dim rbt As Currency
Dim jour As Date
Set maf = Sheets("feuil1")
maf.Range("A18:F419").ClearContents
montant = maf.Range("d4")
tau = maf.Range("d5")
dur = maf.Range("d6")
differ = maf.Range("d8")
rbt = maf.Range("f10")
dep = maf.Range("d7")
For index = 1 To differ + dur
maf.Range("a" & index + 17) = index
jour = DateSerial(Year(dep), Month(dep) + index, Day(dep))
if weekday(jour,2)=6 then jour=jour-1
if weekday(jour,2)=7 then jour=jour+1
maf.Range("b" & index + 17) = Format(jour, "dddd")
maf.Range("c" & index + 17) = jour
If index <= differ Then
maf.Range("d" & index + 17) = montant * tau / 1200
maf.Range("e" & index + 17) = montant * fdg / (dur + differ)
maf.Range("f" & index + 17) = (montant * tau / 1200) + (montant * fdg / (dur + differ))
Else
maf.Range("d" & index + 17) = rbt
maf.Range("e" & index + 17) = montant * fdg / (dur + differ)
maf.Range("f" & index + 17) = rbt + (montant * fdg / (dur + differ))
End If
Next index
End Sub |