Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
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
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.
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
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
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.
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.
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD