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 :

Capture.jpg
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

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote