Problème échéancier sous VBA Excel

Fermé
Landoltp Messages postés 68 Date d'inscription mercredi 1 août 2007 Statut Membre Dernière intervention 14 mars 2008 - 15 oct. 2007 à 15:12
 taha - 6 mai 2011 à 14:19
Bonjour,
dans le cadre de mon travail de diplome, je dois créer un programme qui permette de calculer un gap de maturité. Pour faire cela, j'ai déjà fait un code qui me fait un échéancier :

Private Sub CommandButton1_Click()

Const fdg As Double = 0.1
Dim montant As Double
Dim tau As Double
Dim tau2 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("feuil2")
maf.Range("A18:F419").ClearContents
montant = maf.Range("e2")
tau = maf.Range("f2") * 12 * 100
tau2 = maf.Range("f2")
dur = maf.Range("i2")
differ = maf.Range("k2")
rbt = (montant * (-tau2) * (1 + tau2) ^ dur) / (1 - (1 + tau2) ^ dur)
dep = maf.Range("d2")
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

et un autre qui va me prendre les valeurs dans cet échéancier et qui me les retransmet selon des conditions (qui sont des dates) dans des cellules
C4 : paiement à venir dans le mois
C5 : paiement dans 1 à 3 mois
C6 : paiement dans 3 à 6 mois
C7 : paiement dans 6 à 12 mois
C8 : paiement dans 1 à 2 années
C9 : paiement dans 2 à 3 années
voici le code que j'ai fait (enregistré en module, je ne sais pas comment le faire autrement):

Private Sub CommandButton1_Click()
Range("C4").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[14]C:R[25]C>=TODAY())*(Feuil2!R[14]C:R[25]C<TODAY()+30)*(Feuil2!R[14]C[3]:R[25]C[3]))"
Range("C5").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[13]C:R[24]C>=TODAY()+30)*(Feuil2!R[13]C:R[24]C<TODAY()+90)*(Feuil2!R[13]C[3]:R[24]C[3]))"
Range("C6").Select
Range("c6").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[12]C:R[23]C>=TODAY()+90)*(Feuil2!R[12]C:R[23]C<TODAY()+180)*(Feuil2!R[12]C[3]:R[23]C[3]))"
Range("C7").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[11]C:R[22]C>=TODAY()+180)*(Feuil2!R[11]C:R[22]C<TODAY()+360)*(Feuil2!R[11]C[3]:R[22]C[3]))"
Range("C8").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[10]C:R[21]C>=TODAY()+360)*(Feuil2!R[10]C:R[21]C<TODAY()+720)*(Feuil2!R[10]C[3]:R[21]C[3]))"
Range("C9").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[9]C:R[20]C>=TODAY()+720)*(Feuil2!R[9]C:R[20]C<TODAY()+1080)*(Feuil2!R[9]C[3]:R[20]C[3]))"
Range("C10").Select
End Sub

Maintenant mon problème c'est que ce code marche pour un échéancier (donc une seule personne), mais il faudrait que je fasse une boucle qui me permette de faire ce même calcul sur tous les clients (en utilisant toujours le même échéancier qui serait mis à jour pour chaque client), mais là je n'ai absolument aucune idée de comment procéder.
Donc si quelqu'un aurait une idée de comment procéder je l'en remercie d'avance.
A voir également:

1 réponse

Bonjour, j'étais entrain de faire une recherche sur le même problème. J'ai une feuille Excel avec des données incluant des infos concernant la date début et de fin de quelques contrats et j'essaie de trouver une manière pour savoir les contrats qui prennent fins quelques semaines en avance pour commencer de nouvelles procédures.
Si vous pouvez me conseiller un programe ou bien une méthode a suivre ca sera très apprécié.
Merci
1