Sauvegarde des résultats de la formule ALEA

Bonjour,

J’aimerai savoir comment faire pour enregistrer les résultats obtenus à chaque résultat de l’aléatoire dans Excel.

En faisant F9, mes résultats pour les deux dés varient (via la formule ALEA.ENTRE.BORNES). Mais j’aimerai en garder une trace, pour savoir par exemple, après 100 lancés, combien de fois le dé numéro 1 à gagné. Comment faire ?

Merci.

4synthese.xlsx (43.80 Ko)

Salut Sylver,

Comme personne ne te répond, je te propose ma solution "amateur" avec un code enregistré avec l'option "Enregistrer une macro".

Est-ce déjà un début de piste ?

Bonne soirée.

NB : La prochaine fois ne joins pas une image, mais un fichier, stp.

Edit : NB BIS : Un nouveau fichier avec quelques compléments

Bonjour Yvouille

Même moi, nul en VBA, je remplacerai tes 1000 lignes de code par

Sub super_sylver()
Dim I As Integer
Application.ScreenUpdating = False
For I = 1 To 1000
Call Macro2
Next I
Application.ScreenUpdating = True
End Sub

Cordialement

Salut Amadéus,

Je comprends donc que je suis super-nul ; mais bon, avec ma solution, Sylver avait au moins une réponse.

Avec ton code et quelques contrôles de plus, voici un nouveau fichier.

Bonne fin de semaine.

47sylver-v4.zip (11.62 Ko)

Bonsoir Yvouille

Ne le prends pas mal, je ne voulais pas t'offenser,pour une fois que j'arrive à quelque chose.

De toute façon, un expert VBA va bien passer pour rendre nos efforts ridicules..

Cordialement

Re, Amadéus,

J'ai essayé de remplacer ton code

For I = 1 To 1000 

par

For I = 1 To 50000

mais ça n'a pas passé.

Par contre ça a passé, après 10 minumtes d'attente, avec

For I = 1 To 10000

As-tu une idée pourquoi ?

Salut

Bonjour à tous,

Amadéus a écrit :

De toute façon, un expert VBA va bien passer pour rendre nos efforts ridicules..

Pour ma part, un expert peut-être pas mais j'y travaille

Et il n'y a pas "d'efforts ridicules" c'est comme ça qu'on progresse non ?

Mine de rien, yvouille sait maintenant qu'au lieu de mettre 1000 fois "Call Macro2", utiliser une boucle "For...Next" c'est mieux

Yvouille : pour ton problème, cela vient peut-être du fait que le temps d'exécution de ta macro est trop long et excel n'aime pas ça ! Il me semble que ça m'est déjà arrivé.

Si tu trouves le temps long, essaie un Ctrl+Pause, en général ça interrompt l'exécution d'une macro.

Voici une solution qui n'utilise que VBA (même pour les nombres aléatoires), car la fonction ALEA.ENTRE.BORNES me pose problème :

45sylver.zip (10.95 Ko)

Bonjour à tous,

Yvouille à écrit:

For I = 1 To 50000

mais ça n'a pas passé.

Le code de Amadéus à la variable "I" As Integer, qui n'autorise que +- 32750

il aurait fallut As Long

Amicalement

Claude

41sylver2.zip (26.71 Ko)

Merci pour vos réponses.

J'ai jeté un oeil, et ma première impression est que mon ignorance en VBA est une lacune à rattraper ... vous êtes doués !

J'analyse tout ça au plus vite, et je vous fait part de mes impression et commentaire par la suite.

Et encore merci

J'aimerais remercier moi tous les intervenants qui m'ont apporter une réponse ou l'autre.

C'est vrai Sylver que tu as le choix parmi un grand nombre de solutions très intéressantes.

Bonne soirée.

5regroupement.xlsx (102.28 Ko)

Salut à tous,

Juste pour dire que ton fichier Claude ne marche pas avec excel 2003 (chez moi en tout cas). VBA ne connaissant pas la fonction RandBetween.

Merci vba-new, pour l'info,

Range("a1") = Int((6 * Rnd) + 1) devrait marcher

Amicalement

Claude

10sylver3.zip (26.80 Ko)

Re,

Il faut faire attention avec la fonction Rnd. Les nombres créés ne sont pas tout à fait aléatoires.

Voici ce qu'en dit l'aide d'excel :

Aide Excel a écrit :

Quelle que soit la valeur initiale indiquée, la même série de nombres aléatoires est générée à chaque appel de la fonction Rnd, car cette dernière réutilise le nombre aléatoire précédent comme valeur initiale pour le calcul du nombre suivant.

Pour pallier ce problème :

Aide Excel a écrit :

Avant d'appeler Rnd, utilisez l'instruction Randomize sans argument pour initialiser le générateur de nombres aléatoires à partir d'une valeur initiale tirée de l'horloge système.

Donc ta macro Tirage pourrait ressembler à çà :

Sub Tirage()
Dim Lg%
    Randomize
    Range("a1") = Int((6 * Rnd) + 1)
    Range("a2") = Int((6 * Rnd) + 1)
.
.
.
End Sub

Bonjour à tous,

Pas convaincu !

On s'en fout de la valeur initiale, un aléa est toujours un aléa.

Claude

Rechercher des sujets similaires à "sauvegarde resultats formule alea"