Faire une boucle sur un échéancier
Dernière réponse : dans Programmation
Bonjour,
Je dois réaliser un programme (sous VBA Excel) qui me permette de faire une boucle afin de répéter une action (calcul d'un échéancier puis répartir les paiements selon les dates auxquels ils doivent être effectués) sur les clients d'une institution de microfinance, mais là je bloque complètement (c'est dans le cadre de mon travail de diplôme que je dois faire ça et je ne suis pas du tout doué en programmation).
Donc si quelqu'un pouvait m'aider je l'en remercie d'avance.
Je dois réaliser un programme (sous VBA Excel) qui me permette de faire une boucle afin de répéter une action (calcul d'un échéancier puis répartir les paiements selon les dates auxquels ils doivent être effectués) sur les clients d'une institution de microfinance, mais là je bloque complètement (c'est dans le cadre de mon travail de diplôme que je dois faire ça et je ne suis pas du tout doué en programmation).
Donc si quelqu'un pouvait m'aider je l'en remercie d'avance.
Autres pages sur : boucle echeancier
Lassé par la pub ? Créez un compte
Citation :
et je ne suis pas du tout doué en programmationCitation :
si quelqu'un pouvait m'aider
ok je ferais attention, merci.
j'ai déjà commencé le programme, le souci que j'ai c'est la boucle, j'arrive pas à la faire. Donc j'ai un programme qui me fait un échéancier puis qui me retransment les paiements dans des cellules en fonction de dates (là j'ai du faire ca en module à partir de SOMMEPROD parce que j'arrivais pas autrement), en C11 les paiements à venir dans 1 mois, C12 dans 1 à 3 mois, ... (jusqu'ici pas de problème) et maintenant la boucle devrait me faier cette opération sur tous les clients de la banque et c'est là que je sèche. donc si quelqu'un avait une idée je lui en serait reconnaissant.
Voici le code que j'ai fait:
j'ai déjà commencé le programme, le souci que j'ai c'est la boucle, j'arrive pas à la faire. Donc j'ai un programme qui me fait un échéancier puis qui me retransment les paiements dans des cellules en fonction de dates (là j'ai du faire ca en module à partir de SOMMEPROD parce que j'arrivais pas autrement), en C11 les paiements à venir dans 1 mois, C12 dans 1 à 3 mois, ... (jusqu'ici pas de problème) et maintenant la boucle devrait me faier cette opération sur tous les clients de la banque et c'est là que je sèche. donc si quelqu'un avait une idée je lui en serait reconnaissant.
Voici le code que j'ai fait:
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
Range("C11").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[7]C:R[18]C>=TODAY())*(Feuil2!R[7]C:R[18]C<TODAY()+30)*(Feuil2!R[7]C[3]:R[18]C[3]))"
Range("C12").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[6]C:R[17]C>=TODAY()+30)*(Feuil2!R[6]C:R[17]C<TODAY()+90)*(Feuil2!R[6]C[3]:R[17]C[3]))"
Range("c13").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[5]C:R[16]C>=TODAY()+90)*(Feuil2!R[5]C:R[16]C<TODAY()+180)*(Feuil2!R[5]C[3]:R[16]C[3]))"
Range("C14").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[4]C:R[15]C>=TODAY()+180)*(Feuil2!R[4]C:R[15]C<TODAY()+360)*(Feuil2!R[4]C[3]:R[15]C[3]))"
Range("C15").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[3]C:R[14]C>=TODAY()+360)*(Feuil2!R[3]C:R[14]C<TODAY()+720)*(Feuil2!R[3]C[3]:R[14]C[3]))"
Range("C16").Select
ActiveCell.FormulaR1C1 = _
"=SUMPRODUCT((Feuil2!R[2]C:R[13]C>=TODAY()+720)*(Feuil2!R[2]C:R[13]C<TODAY()+1080)*(Feuil2!R[2]C[3]:R[13]C[3]))"
Range("C17").Select
End Sub
bonjour,
j'ai essayé de faire ça avec une boucle: For each i
mais je crois que j'arrive pas à identifier les clients (pour l'instant je travaille avec un échantillon de 99 clients) qui se trouvent dans la feuille 3 (cellules A2:A100) donc ça me fait 100 fois la même opération sur le premier client.
est-ce que quelqu'un aurait une suggestion svp? merci
j'ai essayé de faire ça avec une boucle: For each i
mais je crois que j'arrive pas à identifier les clients (pour l'instant je travaille avec un échantillon de 99 clients) qui se trouvent dans la feuille 3 (cellules A2:A100) donc ça me fait 100 fois la même opération sur le premier client.
est-ce que quelqu'un aurait une suggestion svp? merci
Ai réussi à faire le boucle (avec de l'aide), voilà ce que ça donne:
mais le problème maintenant c'est que ça écrase à chaque fois les données dans les cellules C11:C16 (feuil2) alors que ça devrait les aditionner... est-ce que quelqu'un aurait une idée de comment résoudre cela? merci d'avance
Set maf = Sheets("feuil2")
Set maf2 = Sheets("feuil3")
For client = 2 To maf2.Range("a65536").End(xlUp).Row
maf.Range("A18:F419").ClearContents
montant = maf2.Range("e" & client)
mais le problème maintenant c'est que ça écrase à chaque fois les données dans les cellules C11:C16 (feuil2) alors que ça devrait les aditionner... est-ce que quelqu'un aurait une idée de comment résoudre cela? merci d'avance
Lassé par la pub ? Créez un compte
- Contenus similaires :
- ForumVba faire une boucle
- ForumFaire une boucle simple sur vba
- ForumExcel-comment faire une boucle sous macro
- ForumFaire un macro en boucle
- ForumRecuperer la valeur dun bouton radio sans faire de boucle
- ForumUpload dans une boucle
- ForumDemarrage en boucle
- ForumXp boucle
- ForumForm boucle
- ForumBios en boucle
- Voir plus
Enfin un qui est capable de comprendre tout seul à quoi sert la balise [cpp]