Répéter une action via une macro

vyse74

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je me suis balladé sur le forum en trouvant des débuts de réponses mais n'étant qu'un novice en VBA je n'ai pas su régler mon problème.

Mon problème est le suivant :

Je souhaite simuler un grand nombre de portefeuilles (10 000) via la simulation de Monte Carlo. Ne sachant pas comment faire, j'ai décidé d'en simuler un. J'ai utilisé la formule =ALEA() afin que mes trajectoires soient complétement tirées au hasard.

A chaque fois que je valide une cellule, que j'enregistre ou que j'appuie sur F9 j'ai donc un nouveau portefeuille de simulé.

Afin de pallier à mon manque de connaissance en programmation Excel j'ai pensé à la chose suivante :
Enregister une macro lorsque je copie la ligne que je souhaite voir apparaitre (la valeur du portefeuille à la fin d'une période N) et faire un copier valeur.

L'avantage de cette méthode est qu'à chaque copier/coller valeur, elle me recharge un nouveau portefeuille et je peux donc obtenir plusieurs simulations.

Oui mais voilà... pour ce faire je dois à chaque fois me remettre sur une ligne et relancer la macro. Et je dois le faire 10 000 fois...

Savez-vous comment je peux intégrer un paramétrage VBA dans le code que j'ai enregistré afin d'avoir la possibilité lancer la macro simultanément sur les 10000 cellules ?

Le code est le suivant :

Sub TestMC()
'
' TestMC Macro
'

'
ActiveCell.FormulaR1C1 = "=R263C"
ActiveCell.Select
Selection.Copy
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToLeft)).Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=ActiveCell.Range("A1:p1"), Type:= _
xlFillDefault
ActiveCell.Range("A1:p1").Select
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Offset(-2, 0).Range("A1:p1").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 1
ActiveCell.Offset(2, 0).Range("A1:p1").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

Je vous remercie par avance de votre aide et de votre temps.

C.
 

Discussions similaires

Réponses
2
Affichages
108

Statistiques des forums

Discussions
312 095
Messages
2 085 249
Membres
102 835
dernier inscrit
Alexandrax971