Autres fonction "ALEA.ENTRE.BORNES"

delta6x

XLDnaute Junior
Bonjour à tous.

Ma question est dans la pièce jointe.

Merci
 

Pièces jointes

  • Classeur2.xlsm
    37.4 KB · Affichages: 9
Solution
Autre possibilité sans formule :
VB:
Option Explicit
Private HOT As Date
Sub Recalculer()
   Dim T(1 To 20, 1 To 5), L&, C&
   Randomize
   For L = 1 To 20: For C = 1 To 5
      T(L, C) = Int(Rnd * 17 + 4): Next C, L
   Feuil1.[A1:E20].Value = T
   HOT = Now + TimeSerial(0, 0, 1)
   Application.OnTime HOT, "Recalculer"
   End Sub
Sub ArrêterCalcul()
   If HOT = 0 Then Exit Sub
   On Error Resume Next
   Application.OnTime HOT, "Recalculer", Schedule:=False
   HOT = 0
   End Sub

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Delta, Dranreb,
Suivant le contexte, on peut aussi avoir besoin d'une macro, ce qui permet de ne pas changer de valeurs à chaque recalcul. Par ex comme ça :
VB:
Sub Alea()
    Randomize
    For Each c In [A1:E20]
        Range(c.Address) = Application.RandBetween(4, 20)
    Next c
End Sub
Par contre, que veux dire cela :
attribuer une macro à une seconde image pour arrêter la première macro sur la dernière grille de notes générée, si possible.
Cela sous entend que la première macro tournerai en permanence ????
 

Dranreb

XLDnaute Barbatruc
Si c'est le cas :
VB:
Option Explicit
Private HOT As Date
Sub Recalculer()
   Feuil1.Calculate
   DoEvents
   HOT = Now + TimeSerial(0, 0, 1)
   Application.OnTime HOT, "Recalculer"
   End Sub
Sub ArrêterCalcul()
   If HOT = 0 Then Exit Sub
   On Error Resume Next
   Application.OnTime HOT, "Recalculer", Schedule:=False
   HOT = 0
   End Sub
 

Dranreb

XLDnaute Barbatruc
Autre possibilité sans formule :
VB:
Option Explicit
Private HOT As Date
Sub Recalculer()
   Dim T(1 To 20, 1 To 5), L&, C&
   Randomize
   For L = 1 To 20: For C = 1 To 5
      T(L, C) = Int(Rnd * 17 + 4): Next C, L
   Feuil1.[A1:E20].Value = T
   HOT = Now + TimeSerial(0, 0, 1)
   Application.OnTime HOT, "Recalculer"
   End Sub
Sub ArrêterCalcul()
   If HOT = 0 Then Exit Sub
   On Error Resume Next
   Application.OnTime HOT, "Recalculer", Schedule:=False
   HOT = 0
   End Sub
 

delta6x

XLDnaute Junior
Bonjour Delta, Dranreb,
Suivant le contexte, on peut aussi avoir besoin d'une macro, ce qui permet de ne pas changer de valeurs à chaque recalcul. Par ex comme ça :
VB:
Sub Alea()
    Randomize
    For Each c In [A1:E20]
        Range(c.Address) = Application.RandBetween(4, 20)
    Next c
End Sub
Par contre, que veux dire cela :

Cela sous entend que la première macro tournerai en permanence ????
oui, bonjour, j'avais fait un essai. Les chiffres changeaient à chaque nouvelle saisie, ce qui est normal. Pour rester sur la dernière grille générée et arrêter la macro, j'ai essayé de faire un copier-coller normal dans un autre fichier excel, un autre copier-coller spécial avec uniquement copier les valeurs, un autre copier-coller dans un document word mais dans tous les cas, la macro continuait tout de même de tourner. C'est pour ça que je voulais attribuer une macro à une autre image pour arrêter la première.
 

delta6x

XLDnaute Junior
Les solutions de Sylvanu, de Dranreb (possibilité sans formule) et de Efgé me conviennent parfaitement. Je ne connais pas votre QI, ni le niveau de vos de connaissances, mais je serai toujours épaté devant la rapidité et l'exactitude de vos réponses.
Je crois que je n'ai droit qu'à cocher une seule solution (au hasard : Dranreb). En tous cas, merci à ceux qui ont pris la peine de répondre.
 

Discussions similaires

Réponses
16
Affichages
274

Statistiques des forums

Discussions
312 251
Messages
2 086 623
Membres
103 266
dernier inscrit
moonie