Page 1 sur 1

[Calc] Accumulation de résultats de simulation

MessagePublié: 01 Avr 2012 22:08
par alhazred
Bonjour à tous,

Une toute petite macro sans prétention pour répondre à la situation suivante: vous avez composé une feuille qui utilise des fonctions ALEA() ou ALEA.ENTRE.BORNES(x;y) pour simuler un processus aléatoire (par exemple tirage de dés) et donner un résultat. Bien sûr, si on recalcule la feuille (par F9 ou ctrl-maj-F9 ou menu Outils > Contenu des cellules > Recalculer), ce résultat change, et vous aimeriez enregistrer les résultats successifs pour utilisation ultérieure, que vous soyez statisticien ou Maître du Donjon...
Code : Tout sélectionner   AgrandirRéduire
Sub Main
   flag=ThisComponent.IsAutomaticCalculationEnabled
   ThisComponent.EnableAutomaticCalculation false
   'le calcul ne se fera que sur commande

   Const result="A1" 'adresse  de la cellule contenant le résultat
   Const col=2 'colonne de stockage, ici colonne C
   Const row=0 'ligne de début de stockage, ici ligne1
   
   theSheet=ThisComponent.sheets.GetByName("Feuille1")
   theResullt=theSheet.GetCellRangeByName(result)
   
   For i=0 To 999 'nombre de résultats à accumuler - 1
      ThisComponent.CalculateAll 'faire une nouvelle simulation
      theSheet.GetCellByPosition(col,row+i).value=theResult.value
      'si le résultat est une chaîne de caractères, utiliser .string à la place de .value      
   Next i

   'Restauration du calcul automatique
   ThisComponent.EnableAutomaticCalculation flag
End Sub


Un exemple d'utilisation: on lance trois dés (normaux, de 1 à 6); on peut s'intéresser au total des points portés (cellule D2), ou bien au nombre de valeurs différentes apparues (E2), ou encore à leur ensemble (sans répétition, H2)
Accumulation.ods
(11.98 Kio) Téléchargé 339 fois