Paire et Impaire

0

Salut, je cherche à savoir:

J'ai déjà utiliser une formule pour afficher aléatoirement des nombres dans un tableau.

Maintenant, je cherche une formule qui me permettra d'équilibré ce tableau en me mettant la même quantité de pair et d'impair.

Merci pour votre retour.


    Posté le 19 septembre 2023, 07:48
    par Missy
    Répondre
    0

    Bonjour Missy,

    fichier exemplehttps://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

    rhodo Posté le 20 septembre 2023, 01:46
    par rhodo

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :