[Calc] Accumulation de résultats de simulation

Vos meilleures macros et portions de code sont publiées dans cette section.
Aucun support sur une question de programmation ici !

Modérateur: Vilains modOOs

Règles du forum
Aucune question dans cette section !
Celle-ci rassemble les meilleures macros et portions de code. Vous pouvez en revanche commenter ou argumenter le code exposé. Vous pouvez même remercier l'auteur (cela fait toujours plaisir) en indiquant par exemple dans quel cadre ou contexte vous en avez eu l'utilité.
Si vous avez à poster quelque chose, faites-le depuis la section Macros et API et demandez à un modérateur de l'y déplacer.

[Calc] Accumulation de résultats de simulation

Messagepar alhazred » 01 Avr 2012 22:08

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é 343 fois
À bientôt

LibO 4.1.5.3 et AOO 4.0.1 sous Windows 7, MRI et SDK pour les macros.

Et la sauvegarde incrémentée, c'est sympa !
Avatar de l’utilisateur
alhazred
ManitOOu
ManitOOu
 
Message(s) : 3028
Inscrit le : 01 Mai 2011 00:08
Localisation : Casablanca (Maroc)

Retour vers Suprême de code

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité