Tirage au sort

Paselolau

XLDnaute Nouveau
Bonjour à tous,

Je débute en VBA et je voudrais faire une macro qui me permet de tirer au sort un n° dans une grille de 1 à 99. Je veux faire apparaître le n° dans une cellule et le ranger dans une autre grille avant de tirer un autre n°. C'est le principe d'un loto associatif. Je veux, en même temps, enlever de la 1ère grille les n° tirés.

Y-a-t-il quelqu'un pour m'aider ?

Merci à tous.
 

Papou-net

XLDnaute Barbatruc
Re : Tirage au sort

Bonjour à tous,

Je débute en VBA et je voudrais faire une macro qui me permet de tirer au sort un n° dans une grille de 1 à 99. Je veux faire apparaître le n° dans une cellule et le ranger dans une autre grille avant de tirer un autre n°. C'est le principe d'un loto associatif. Je veux, en même temps, enlever de la 1ère grille les n° tirés.

Y-a-t-il quelqu'un pour m'aider ?

Merci à tous.

Bonjour paselolau,

Je pense que tu peux t'inspirer du fichier ci-joint et l'adapter à ton usage.

Espérant t'avoir aidé.

Bonne année.

PS : j'avais pas vu le fichier joint par Roger, il me parait plus adéquat pour des grilles de loto. Le mien est destiné à un usage plus général.
 

Pièces jointes

  • paselolau.xls
    29.5 KB · Affichages: 133
Dernière édition:

ROGER2327

XLDnaute Barbatruc
Re : Tirage au sort

Re...
Votre code ne tire pas tous les nombres de 1 à 9.
La sortie de la boucle While... ...Wend n'est pas prévue lorsque la plage B1:B99 est pleine.
Je suggère :
Code:
[COLOR="DarkSlateGray"][B]Private Sub CommandButton1_Click()
Dim c As Object, num As Integer
   Randomize
   With Feuil1.Range("B1:B99")
      While num = 0 And WorksheetFunction.Count(.Cells) < 99
         num = Int(Rnd * 100)
         Set c = .Find(num, LookIn:=xlValues, LookAt:=xlWhole)
         If Not c Is Nothing Then num = 0
      Wend
   End With
   
   With Feuil1.Range("A1:A99")
      .Cells(1, 4) = num
      Set c = .Find(num, LookIn:=xlValues, LookAt:=xlWhole)
      If Not c Is Nothing Then .Cells(c.Row, 2) = num
   End With
End Sub[/B][/COLOR]
ROGER2327
#2545
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Tirage au sort

Re...
Votre code ne tire pas tous les nombres de 1 à 9.
La sortie de la boucle While... ...Wend n'est pas prévue lorsque la plage B1:B99 est pleine.
Je suggère :
Code:
[COLOR="DarkSlateGray"][B]Private Sub CommandButton1_Click()
Dim c As Object, num As Integer
   Randomize
   With Feuil1.Range("B1:B99")
      While num = 0 And WorksheetFunction.Count(.Cells) < 99
         num = Int(Rnd * 100)
         Set c = .Find(num, LookIn:=xlValues, LookAt:=xlWhole)
         If Not c Is Nothing Then num = 0
      Wend
   End With
   
   With Feuil1.Range("A1:A99")
      .Cells(1, 4) = num
      Set c = .Find(num, LookIn:=xlValues, LookAt:=xlWhole)
      If Not c Is Nothing Then .Cells(c.Row, 2) = num
   End With
End Sub[/B][/COLOR]
ROGER2327
#2545

C'est exact, j'ai fait 2 essais et à chaque fois blocage du programme à 91 : je n'en comprends pas la cause.
J'ai déjà utilisé ce genre de boucle dans une application personnelle, et je n'ai jamais détecté cette anomalie.
Merci en tout cas pour la correction.

Cordialement.
 

ROGER2327

XLDnaute Barbatruc
Re : Tirage au sort

Re...
C'est exact, j'ai fait 2 essais et à chaque fois blocage du programme à 91 : je n'en comprends pas la cause.
J'ai déjà utilisé ce genre de boucle dans une application personnelle, et je n'ai jamais détecté cette anomalie.
Merci en tout cas pour la correction.

Cordialement.
La cause est simple. Lorsque vous chercher par exemple 2, Find vous le trouvera dans 20, 21, 12, 92, ... si vous ne précisez pas LookAt:=xlWhole. En apportant cette précision, vous obligez Find à vérifier que la valeur de la cellule est exactement 2.
En l'omettant, Find vérifie seulement que la valeur de la cellule contient le caractère 2.​
ROGER2327
#2547
 

Papou-net

XLDnaute Barbatruc
Re : Tirage au sort

Re...
La cause est simple. Lorsque vous chercher par exemple 2, Find vous le trouvera dans 20, 21, 12, 92, ... si vous ne précisez pas LookAt:=xlWhole. En apportant cette précision, vous obligez Find à vérifier que la valeur de la cellule est exactement 2.
En l'omettant, Find vérifie seulement que la valeur de la cellule contient le caractère 2.​
ROGER2327
#2547

Merci pour l'explication
Il y a quelque temps déjà que je me posais la question de ce LookAt:=xlWhole et, il faut bien le dire, l'aide d'excel manque de clarté sur cette instruction. Les livres que j'ai en ma possession sont également avares quant à ce genre de fonction "exotique".
Donc encore une fois merci.

Cordialement.
 

jeanlis

XLDnaute Nouveau
Re : Tirage au sort

Bonjour a tous

Je me permet de m’insérer dans cette discussion afin d'exposer mon problème.

Une vente de case a été effectuer dans l’école de mes enfants .le tirage a été effectué via excel soit par VBA ou formule.
Je sais que les enfants devaient appuyer sur la touche F9 du clavier pour qu'un numéro sorte.
Le hic est que plusieurs numéro sont sortis sur la même grille et d'autre grille non pas de numéro gagnant
Pouvez vous me dire si il y a un moyen de tricher avec cette méthode de "tirage au sort".

merci pour vos reponses
 

Modeste geedee

XLDnaute Barbatruc
Re : Tirage au sort

Bonsour®
Bonjour à tous,

Je débute en VBA et je voudrais faire une macro qui me permet de tirer au sort un n° dans une grille de 1 à 99. Je veux faire apparaître le n° dans une cellule et le ranger dans une autre grille avant de tirer un autre n°. C'est le principe d'un loto associatif. Je veux, en même temps, enlever de la 1ère grille les n° tirés.

Y-a-t-il quelqu'un pour m'aider ?

Merci à tous.

voir pièce jointe :
Capture2.jpg

L'icone "outils" en haut à gauche permet la bascule "plein ecran/ecran standard".
Pour activer la synthése de parole il convient précédement de charger le moteur TTS d'expression française
(suivre le lien sur la feuille de présentation)
Capture.JPG
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    11.9 KB · Affichages: 87
  • Capture.JPG
    Capture.JPG
    11.9 KB · Affichages: 108
  • GD_Bingo3.xlsm
    435 KB · Affichages: 74
  • GD_Bingo3.xlsm
    435 KB · Affichages: 73
  • GD_Bingo3.xlsm
    435 KB · Affichages: 60
  • Capture2.jpg
    Capture2.jpg
    54.7 KB · Affichages: 103
  • Capture2.jpg
    Capture2.jpg
    54.7 KB · Affichages: 134

Discussions similaires

Réponses
5
Affichages
328
Réponses
16
Affichages
767

Statistiques des forums

Discussions
312 510
Messages
2 089 148
Membres
104 051
dernier inscrit
jjouneau