Boucle simple pour simulation de Monte Carlo
Bonjour,
Dans ma feuille5, mes colonnes D, F et K comportent des valeurs issues de calcul à partir de variables aléatoires (à chaque fois que je recalcule la feuille les valeurs changent).
Je voudrais créer la boucle suivante:
Copier les valeurs de ces 3 colonnes vers les colonnes A,B et C de la feuille6, sachant que la première colonne est destinée à recevoir un nombre décimal à trois chiffres après la virgule et les 2 autres des valeurs monétaires en euros avec 2 chiffres après la virgule.
Puis retourner sur la feuille5, recalculer la feuille, et à nouveau copier les colonnes D, F et K et les coller en feuille6 mais cette fois 3 colonnes plus loin (D, E et F), et ainsi de suite un nombre n de fois.
Comment faire?
Merci!
Salut,
L’idéal serait d’avoir ton fichier à disposition, ou du moins un fichier-exemple avec les feuilles et les colonnes concernées au bon format déjà en place.
Je ne comprends pas pourquoi tu copies la première fois les colonnes D, F et K et la seconde fois les colonnes D, F et AI ???
Si tu lances une première fois la macro souhaitée et que tu demandes 3 boucles, les colonnes A à I (soit 9 colonnes) de la feuille 6 devraient être complétées. Si tu lances une seconde fois ta macro, que faut-il faire avec les données du premier tirage ?
A te relire.
Je ne comprends pas pourquoi tu copies la première fois les colonnes D, F et K et la seconde fois les colonnes D, F et AI ???
Mea culpa, erreur de frappe, il s'agit bien deux fois des colonnes D, F et K. Erreur corrigée.
Si tu lances une première fois la macro souhaitée et que tu demandes 3 boucles, les colonnes A à I (soit 9 colonnes) de la feuille 6 devraient être complétées. Si tu lances une seconde fois ta macro, que faut-il faire avec les données du premier tirage ?
Je ne compte pas executer cette macro plusieurs fois de suite. Du moins, j'effacerais les données de la feuille6 avant de recommencer une nouvelle simulation. A chaque fois que je recommence une simulation je voudrais que tout reparte à partir de la colonne A de la feuille6, et si j'ai oublié d'effacer les données de la simulation précédente celles-ci devraient être écrasées.
Re,
C’est dommage que tu ne m’aies pas fourni le fichier demandé, premièrement car j’ai dû en créer un moi-même afin de faire les essais et ensuite car je n’ai pas pu adapter ma macro à ton fichier réel (Combien a-t-il de lignes ? Est-ce que les formats de cellules doivent être corrigés par la macro ? Etc.)
Autrement la macro ci-dessous – placée dans le fichier ci-joint que je t’offre gracieusement – devrait répondre à ton attente.
Option Explicit
Sub aa()
Dim i As Byte, j As Byte
Application.ScreenUpdating = False
ActiveSheet.EnableCalculation = False
i = InputBox("Combien de boucles désires-tu effectuer ?")
With Sheets("Feuil6")
.Cells.ClearContents
For j = 1 To i
Range("D1:D16").Copy .Cells(1, (3 * j) - 2)
Range("F1:F16").Copy .Cells(1, (3 * j) - 1)
Range("K1:K16").Copy .Cells(1, 3 * j)
ActiveSheet.EnableCalculation = True
Calculate
ActiveSheet.EnableCalculation = False
Next j
.Activate
.Range("A17").Select
End With
Sheets("Feuil5").EnableCalculation = True
End SubJossBeaumont a écrit :Je ne compte pas executer cette macro plusieurs fois de suite. Du moins, j'effacerais les données de la feuille6 avant de recommencer une nouvelle simulation. A chaque fois que je recommence une simulation je voudrais que tout reparte à partir de la colonne A de la feuille6, et si j'ai oublié d'effacer les données de la simulation précédente celles-ci devraient être écrasées.
Comme je le présumais – raison pour laquelle je t’avais posé la question – il faut effacer les données en place sur la Feuil6 en début de macro.
Amicalement.
Merci Yvouille pour ce gracieux présent.
Je n'avais pas joint le fichier car il était beaucoup trop lourd.
Cependant, je n'arrive pas encore à faire fonctionner le code, probablement à cause de la longueur des colonnes: mes colonnes n'ont pas toujours la même longueur elles peuvent faire de 100 à 10000 lignes en fonction des données que je traite (mais elles font toujours la même longueur entre elles bien évidemment)
La première est un nombre décimal à 3 chiffres et les deux autres des valeurs monétaires en € (une toujours entière et la seconde avec des centimes).
Je viens d'avoir une idée: j'ai copié seulement les valeurs de ma feuille dans un autre classeur que je vais uploader (les données de la feuille ne changent donc plus à chaque recalul car je n'ai collé que les valeurs de ma feuille d'origine) mais au moins cela donne une idée de la structure de mes données.
Dans le classeur ci-joint, les trois colonnes à traiter sont les colonnes B, C et H de la feuille "SimW" (les colonnes en vert), et la feuille de destination est la feuille MTwi.
Merci encore!
Salut,
Es-tu certain de m’avoir fourni le bon fichier ? Celui-ci ne contient aucune formule aléatoire
Pourquoi m’as-tu dis dans ton premier message que les colonnes à traiter étaient les D, F et K alors que maintenant tu indiques qu’il faut traiter les colonnes B, C et H ?
Il faudrait voir pour y mettre un peu du tien si tu désires que je continue à t’aider gratuitement.
A te relire.
Es-tu certain de m’avoir fourni le bon fichier ? Celui-ci ne contient aucune formule aléatoire
Si tu lis attentivement mon précédent message, j'ai expliqué pourquoi ce fichier ne contenait pas de formule aléatoire:
j'ai copié seulement les valeurs de ma feuille dans un autre classeur que je vais uploader (les données de la feuille ne changent donc plus à chaque recalul car je n'ai collé que les valeurs de ma feuille d'origine) mais au moins cela donne une idée de la structure de mes données.
Quant aux colonnes qui ne sont plus les même, ceci est du aux fait que j'ai du "alléger" le fichier et supprimer pas mal des colonnes pour pouvoir l'uploader.
Modifier des références de colonnes dans du code vba étant encore dans mes cordes, je ne pensais pas que cela constituerai un souci...
Ceci étant je te remercie à nouveau pour ton temps et ton aide!
Re,
Soit je devais transformer ton fichier afin qu’il ait à nouveau des formules aléatoires et je devais modifier mon code en fonction de tes nouvelles colonnes, modifications du code que tu aurais dû à ton tour changer pour que ça corresponde à ton fichier, soit je modifiais mon fichier en fonction de ce que j’ai pu voir du tien.
J’ai choisi cette deuxième solution.
Merci de tester tout ça et de me dire ce qui doit encore être amélioré.
Bonnes salutations.
Le code fonctionne parfaitement! Merci beaucoup Yvouille