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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager