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
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