Bonjour Missy,
fichier exemple : https://www.cjoint.com/c/MItxJRZCiJ0
en C2 : Minimum = 251 ; en C3 : Maximum = 638 ; fais Ctrl t
➯ tirage d'autres nombres aléatoires entre 251 et 638.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
formule en H2 : =SOMMEPROD((MOD(C5:H10;2)=1)*1)
➯ nombre d'impairs du tableau.
formule en H3 : =SOMMEPROD((MOD(C5:H10;2)=0)*1)
➯ nombre de pairs du tableau.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
code VBA de Module1 (25 lignes) :
Option Explicit
Sub Tirage()
Dim n%, a%, b%, c%, d%, e%, f%, g%, h%, i%, j%
a = 5: b = 10: c = 3: d = 8: g = [C2]: h = [C3] - [C2] + 1
Randomize: Application.ScreenUpdating = 0
For i = a To b
For j = c To d
n = Int((h * Rnd) + g)
If WorksheetFunction.IsOdd(n) Then e = e + 1 Else f = f + 1
Cells(i, j) = n
Next j
Next i
g = Abs(f - e) \ 2: h = -(e > f): e = b - a + 1: f = d - c + 1
Do While g > 0
i = Int((e * Rnd) + a): j = Int((f * Rnd) + c)
With Cells(i, j)
If (h = 0 And WorksheetFunction.IsEven(.Value)) _
Or (h = 1 And WorksheetFunction.IsOdd(.Value)) Then
n = .Value + 1: If n <= [C3] Then .Value = n: g = g - 1
End If
End With
Loop
End Sub
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
bien sûr, tu devras adapter cet exemple à ton cas réel ;
si tu y arrives : ok ; sinon, tu devras joindre ton fichier.
rhodo