générer 6 nombres entiers aléatoires sans doublons (formule)

C@thy

XLDnaute Barbatruc
Bonjour (Re) le forum,

J'ai vu qu'il existait dans les téléchargements un programme pour jouer à Des chiffres et des lettres,:)
malheureusement en faisant F9 j'ai parfois plusieurs fois le même chiffre, alors qu'il est indiqué que ce ne doit pas être le cas...

et pour les lettres, je n'ai pas tout testé, le tirage fonctionne mais je n'arrive pas à afficher les lettres à la suite,

par contre j'ai regardé Chronomot, c'est bien fichu!!! sauf que quand je veux sauvegarder il recharge le dico...

Avez-vous testé ces jeux???

Et si oui, avez-vous les même problèmes que moi? Comment avoir 6 plaques différentes pour les chiffres???

Merci à vous,

Bises et bon ouik

Edit: loin de moi l'idée de critiquer ce qui a été fait, c'est très très bien!!! je cherchais juste à améliorer si c'est possible...:confused:

C@thy
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : générer 6 nombres entiers aléatoires sans doublons (formule)

Bonjour Ca@thy, KenDev,

Evidemment par macro c'est plus facile, voir fichier joint :

Code:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
While [H1] < 6: [A1:F1].Calculate: Wend
Application.EnableEvents = True
End Sub

Edit : chiffres tirés de 1 à 9 pour le fichier (1).

Si l'on veut aussi le zéro, prendre le fichier (2).

A+
 

Pièces jointes

  • Tirage(1).xls
    32 KB · Affichages: 104
  • Tirage(1).xls
    32 KB · Affichages: 104
  • Tirage(1).xls
    32 KB · Affichages: 106
  • Tirage(2).xls
    32 KB · Affichages: 118
  • Tirage(2).xls
    32 KB · Affichages: 134
  • Tirage(2).xls
    32 KB · Affichages: 131
Dernière édition:

job75

XLDnaute Barbatruc
Re : générer 6 nombres entiers aléatoires sans doublons (formule)

Re,

Si l'on ne veut pas de formules dans les cellules :

Code:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
[B1:G1].Formula = "=INT(10*RAND())" '"=INT(9*RAND()+1)"
While [I1] < 6: [B1:G1].Calculate: Wend
[B1:G1] = [B1:G1].Value
Application.EnableEvents = True
End Sub
Fichier (3).

A+
 

Pièces jointes

  • Tirage(3).xls
    32 KB · Affichages: 102
  • Tirage(3).xls
    32 KB · Affichages: 95
  • Tirage(3).xls
    32 KB · Affichages: 91

job75

XLDnaute Barbatruc
Re : générer 6 nombres entiers aléatoires sans doublons (formule)

Bonsoir à tous,

Une solution sans VBA.

Formule en A1, à tirer jusqu'à F1 :

Code:
=SI($H1<6;ENT(10*ALEA());A1)
Il faut que le calcul itératif soit activé.
A+
 

Pièces jointes

  • Tirage par formules(1).xls
    25 KB · Affichages: 96

job75

XLDnaute Barbatruc
Re : générer 6 nombres entiers aléatoires sans doublons (formule)

Bonjour C@thy, le forum,

La solution précédente a l'inconvénient de ne pas pouvoir utiliser la touche F9.

Alors cette autre solution, mais il faut s'accrocher aux branches :

1) créer en A6 un "grand" nombre aléatoire (plus de 100 chiffres) :

Code:
=SUBSTITUE(ALEA()&ALEA()&ALEA()&ALEA()&ALEA()&ALEA()&ALEA()&ALEA();GAUCHE(0,1;2);"")
2) repérer en A9 la position d'une "bonne" série de 6 chiffres consécutifs (sans doublon) :

Code:
=EQUIV("555555";NBCAR(SUBSTITUE(STXT(A6;LIGNE(INDIRECT("1:99"));6);STXT(A6;LIGNE(INDIRECT("1:99"));1);""))&NBCAR(SUBSTITUE(STXT(A6;LIGNE(INDIRECT("1:99"));6);STXT(A6;LIGNE(INDIRECT("1:99"))+1;1);""))&NBCAR(SUBSTITUE(STXT(A6;LIGNE(INDIRECT("1:99"));6);STXT(A6;LIGNE(INDIRECT("1:99"))+2;1);""))&NBCAR(SUBSTITUE(STXT(A6;LIGNE(INDIRECT("1:99"));6);STXT(A6;LIGNE(INDIRECT("1:99"))+3;1);""))&NBCAR(SUBSTITUE(STXT(A6;LIGNE(INDIRECT("1:99"));6);STXT(A6;LIGNE(INDIRECT("1:99"))+4;1);""))&NBCAR(SUBSTITUE(STXT(A6;LIGNE(INDIRECT("1:99"));6);STXT(A6;LIGNE(INDIRECT("1:99"))+5;1);""));0)
C'est une formule matricielle à valider par Ctrl+Maj+Entrée.

PS : si l'on ne veut pas de zéro, il est facile d'éliminer les zéros en A6.

Edit : noter que même avec 100 chiffres il arrive qu'il n'y ait pas de "bonne" série (c'est rare).

A+
 

Pièces jointes

  • Tirage par formules touche F9(1).xls
    26 KB · Affichages: 76
Dernière édition:

job75

XLDnaute Barbatruc
Re : générer 6 nombres entiers aléatoires sans doublons (formule)

Re,

Emporté par l'élan, j'avais complètement occulté le fait qu'il s'agit du jeu Des chiffres et des lettres.

Comme je ne regarde plus cette émission depuis longtemps, j'ai été voir dans Wikipédia :

Le Compte est bon
Le but de cette épreuve est d'obtenir un nombre (de 100 à 999) à partir d'opérations élémentaires (+, −, ×, ÷) sur des entiers naturels, en partant de nombres tirés au hasard (de 1 à 10, 25, 50, 75 et 100).

J'ai donc revu les 2 solutions par VBA et par formules.

Fichiers joints.

Edit : j'aurais dû mieux regarder la solution de KenDev, il connait le jeu lui, mes excuses :)

A+
 

Pièces jointes

  • Le Compte est bon par VBA(1).xls
    36 KB · Affichages: 81
  • Le Compte est bon par formules(1).xls
    27 KB · Affichages: 77
Dernière édition:

job75

XLDnaute Barbatruc
Re : générer 6 nombres entiers aléatoires sans doublons (formule)

Re,

Et pour terminer, une solution par formules utilisant la touche F9 :

- nombre maximum d'itérations porté à 10000

- formule modifiée en H4 (elle force le recalcul) :

Code:
=SOMMEPROD(1/NB.SI(A4:F4;A4:F4))-ENT(10*ALEA())
Un bémol : 1 fois sur 10 le recalcul ne se fait pas...

Edit : avec 1 fois sur 30 ça marche encore bien mais c'est plus long : fichier (2)

A+
 

Pièces jointes

  • Le Compte est bon par formules et touche F9(1).xls
    27 KB · Affichages: 73
  • Le Compte est bon par formules et touche F9(2).xls
    27 KB · Affichages: 65
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : générer 6 nombres entiers aléatoires sans doublons (formule)

Alors là, bravo,

vous vous êtes surpassés (comme d'hab, mais je suis toujours épatée à chaque fois)

Chouette! On va pouvoir jouer au Compte est bon!!! Génial!!

Bises à tous et un super grand merci

C@thy
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa