Bonjour à tous,
Je simule dans les cellules d'une feuille 5 nombres aléatoires via la formule =ALEA() (je dis 5 pour faire simple, j'en ai 200 en réalité). Disons que ces 5 nombres aléatoires caractérise une personne.
Je souhaite simuler plusieurs groupes de 3 personnes, par exemple, caractérisés par des ALEA() différents. Mais que tous les groupes se ressemblent.C'est à dire que les personnes intra-groupes soient différentes (ALEA() différents), mais qu'elles soient les mêmes entre les groupes.
Pour cela je fais plusieurs boucles, en imbriquant des dictionnaires.
1) je simule les 5 ALEA() dans ma feuille que je viens stocker dans mon dictionnaire (dicoPAT)
2)Via une boucle, je fait cette manip 3 fois pour mes 3 patients. Puis je stocke dicoPAT dans un autre dictionnaire dicoCOH
3) via une autre boucle, je construis 3 dicoCOH que je stoke dans dicoALL.
Cela me fait 3 cohortes de 3 patients.
Mon problème : les cohortes ne se ressemblent pas. Ca bloque a cet endroit (en rouge) :
1) initialiser et stocker la graine
-> simuler une personne = 5 ALEA(), les stocker (1-a)
-> utiliser "Calculate" pour regénérer 5 nouveau ALEA(), les stocker
-> idem...
2) Reinitialiser le Rnd() (qui est ALEA() dans ma feuille) avec la même graine
-> si je veux simuler une nouvelle personne, impossible de retrouver les même ALEA du (1-a)
Soit l'utilisation du calculate fait tout foiré...
Soit ma réinitialisation de la graine ne s'applique que pour le code VBA et non le contennu des feuilles...
Si quelqu'un à une idée ! je vous remercie
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
40 Public Sub random(nbvar As Integer, nbpatient As Integer, nbcohort As Integer) Dim i As Integer Dim j As Integer Dim k As Integer Dim x As Integer Dim seed As Variant Dim ligne As Integer Dim dicoALL As Dictionary Dim dicoCOH As Dictionary Dim dicoPAT As Dictionary Dim comp1, comp2, comp3 As Variant ' populate Set dicoALL = New Dictionary For k = 1 To nbcohort Set dicoCOH = New Dictionary x = Rnd(-1) Debug.Print Rnd() 'on retrouve bien toujours le même nb For j = 1 To nbpatient Set dicoPAT = New Dictionary Feuil6.Calculate For i = 1 To nbvar dicoPAT.Add "patient" & i, Feuil6.Cells(1, i).Value 'je stocke mes ALEA() Debug.Print Feuil6.Cells(1, i).Value 'verif Next i dicoCOH.Add "pat" & j, dicoPAT Next j dicoALL.Add "coh" & k, dicoCOH Next k End Sub Public Sub test() random 5, 3, 3 End Sub
Partager