Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Code VBA avec plusieurs alea, je m'y perds...

jeanjacques

XLDnaute Junior
Bonjour ou Bonsoir, c'est selon ou vous vivez...

Pouvez-vous m'aider à écrire un code contenant des alea (dictionary?) pour faire un contrôle sur les 4 valeurs donnant un résultat optimal?

Le principe est expliqué dans le fichier joint.

Merci de votre aide, vous êtes trop forts!

Jean Jacques.
 

Pièces jointes

  • Classeurexemple.xlsx
    15.7 KB · Affichages: 44
  • Classeurexemple.xlsx
    15.7 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : Code VBA avec plusieurs alea, je m'y perds...

Bonjour jeanjacques,

On aimerait bien connaître les formules en colonnes F et Q:T (SOMME et NB.SI ?).

Comme cela on pourra tester en connaissance de cause.

A+
 

jeanjacques

XLDnaute Junior
Re : Code VBA avec plusieurs alea, je m'y perds...

Bonsoir Job,

...décidement tu es mon sauveur VBA...(je te remercie pour le précédent fichier des 5 colonnes et je vais t'envoyer une solution pour ton info)

Pour les formules, aucune importance, NB.SI > à une valeur ira très bien...et une somme en F5

Merci et bonne soirée
 

job75

XLDnaute Barbatruc
Re : Code VBA avec plusieurs alea, je m'y perds...

Re,

Voyez le fichier joint et cette macro :

Code:
Sub Tirages()
Dim dur, ntirage&, d As Object, n&, t1(), t2(), i&, a, j%, maxi&, mem1, mem2
dur = Timer
ntirage = 1000 'nombre de tirages, modifiable
Set d = CreateObject("Scripting.Dictionary")
Randomize
Application.ScreenUpdating = False
For n = 1 To ntirage
  '---tableau t1---
  ReDim t1(1 To 4)
  d.RemoveAll
  t1(1) = Int(1 + 5 * Rnd): d(t1(1)) = ""
1 t1(2) = Int(1 + 8 * Rnd)
  If d.exists(t1(2)) Then GoTo 1 Else d(t1(2)) = ""
2 t1(3) = Int(1 + 10 * Rnd)
  If d.exists(t1(3)) Then GoTo 2 Else d(t1(3)) = ""
3 t1(4) = Int(5 + 11 * Rnd)
  If d.exists(t1(4)) Then GoTo 3
  '---tableau t2---
  ReDim t2(1 To 25, 1 To 10)
  For i = 1 To 25
    d.RemoveAll
    While d.Count < 10: d(Int(1 + 70 * Rnd)) = "": Wend
    a = d.keys
    For j = 1 To 10
      t2(i, j) = a(j - 1)
  Next j, i
  '---restitution---
  [Q4].Resize(, 4) = t1
  [G6].Resize(25, 10) = t2
  If [F5] > maxi Then maxi = [F5]: mem1 = t1: mem2 = t2
Next n
[Q4].Resize(, 4) = mem1
[G6].Resize(25, 10) = mem2
Application.ScreenUpdating = True
MsgBox "Durée " & Format(Timer - dur, "0.00 \s")
End Sub
Record à battre en F5 : 29.

Edit : fichier (2) avec 30.

A+
 

Pièces jointes

  • Classeurexemple(1).xlsm
    27.4 KB · Affichages: 25
  • Classeurexemple(2).xlsm
    27.4 KB · Affichages: 30
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Code VBA avec plusieurs alea, je m'y perds...

Bonsour®
ce que j'ai compris des explications :


le tirage des 4 nombres (1 à 15) est semble-t-il entièrement déconnecté du tirages des nombres 1 à 70...
seules les formules en F, Q, R, S, T permettent de d'établir un "lien ?" avec les contraintes (impact des nombres >15 ???)
 

Pièces jointes

  • jeanjacquesXld(v3).xlsm
    45.7 KB · Affichages: 42

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…