XL 2019 macro pour lancer un calcul automatique qui s’actualise toutes les secondes (voire moins)

rh.finances

XLDnaute Occasionnel
Bonjour,

N’étant pas un expert aguerri sur VBA, j’aurais souhaité bénéficier de l’expertise technique des internautes de ce super site sur le problème suivant :

Dans mes colonnes M et N, j’ai une formule ALEA() que je retranscris en colonne B avec la formule RANG.

J’ai par ailleurs créé deux boutons appelés « lancer le tirage aléatoire » et « arrêter le tirage ».

Avec le bouton « lancer le tirage aléatoire », je souhaite lancer un calcul automatique qui s’actualise toutes les secondes, voire moins.
Pour cela, j’ai associé à ce bouton une macro dans un module 1, à savoir :

VB:
Sub calcul()

Application.Calculation = xlAutomatic + TimeValue("00:00:01")

End Sub

Et c’est là que réside le problème : avec cette macro, j’arrive à lancer un calcul en cliquant sur le bouton mais le calcul ne s’actualise pas automatiquement toutes les secondes. Il faut à chaque fois que je clique sur « lancer le tirage aléatoire ».
Or, mon souhait est d’appuyer une seule fois sur le bouton pour lancer un calcul actualisé toutes les secondes, voire toute toutes les demi-secondes si possible.

In fine, je souhaite arrêter le calcul automatique grâce à mon bouton « arrêter le tirage », pour lequel j’ai affecté une macro (dont je ne suis pas du tout sûr de l’efficacité) rédigée comme suit :
Code:
Sub test()

Application.Calculation = xlManual

End Sub

le fichier en question est joint au présent post.
D’avance, un infini merci à vous pour vos précieux conseils et votre expertise sur ce point de blocage.

Alexandre
 

Pièces jointes

  • calcul automatique actualisé avec bouton.xlsm
    23.8 KB · Affichages: 19
Solution
pour les millisecondes essaye plutôt de diviser par 1,5 ou 2 plutôt que 10.

Si tu descends trop l'intervalle de temporisation ... la mise à jour de l'écran affiché prend un peu de temps et ne sera pas finie avant la boucle suivante et là tu perds la main ...
surtout si ton PC n'est pas une bête de course :)

ps : Sinon pense à cocher le post #3 comme solution (colonne grise à droite du post la coche "Marquer comme solution"

Deadpool_CC

XLDnaute Accro
Bonjour,
avec les fonctions VBA dans le module 1 cela t'évite de perdre la main si jamais t'avais un do while :)

[Edit] le code vba:

VB:
Dim Tirage As Boolean
Dim gCount As Date

Sub LanceTirage()
Tirage = True
Call Timer
End Sub

Sub StopTirage()
    Tirage = False
End Sub

Sub Timer()
    gCount = Now + TimeValue("00:00:01")
    Application.OnTime gCount, "AleaSuivant"
End Sub

Sub AleaSuivant()
    If Tirage Then
        Application.Calculation = xlAutomatic
        Call Timer
    End If
End Sub
 

Pièces jointes

  • calcul automatique actualisé avec bouton.xlsm
    24.5 KB · Affichages: 13
Dernière édition:

rh.finances

XLDnaute Occasionnel
Bonjour Soan et DeadPool,

tout d'abord, un grand merci pour vos réponses.
la macro proposé par DeadPool est parfaite et répond vraiment à mon souhait.
j'ai voulu ajuster celle-ci afin de permettre une actualisation inférieure à la seconde et pour ce faire, après consultation d'un forum, j'ai fait le réajustement suivant :
VB:
gCount = Now + (TimeValue("00:00:01")/10)

résultat : ça marche super bien ! l'actualisation se fait au 1/10ème de seconde... par contre... ça créé un plantage d'Excel, lequel continue à actualiser le calcul mais ne répond plus sur le reste. je suis obligé de faire un ctrl+Alt+Sup pour sortir de cette impasse.

sauriez-vous quelle autre solution je pourrais trouver pour contourner le problème ?

une nouvelle fois, merci pour tout !!
 

Deadpool_CC

XLDnaute Accro
pour les millisecondes essaye plutôt de diviser par 1,5 ou 2 plutôt que 10.

Si tu descends trop l'intervalle de temporisation ... la mise à jour de l'écran affiché prend un peu de temps et ne sera pas finie avant la boucle suivante et là tu perds la main ...
surtout si ton PC n'est pas une bête de course :)

ps : Sinon pense à cocher le post #3 comme solution (colonne grise à droite du post la coche "Marquer comme solution"
 

Deadpool_CC

XLDnaute Accro
ps : si tu fais encore évoluer ton fichier faudra peut revoir cette intervalle à la hausse => plus il y a de formules dans ton classeur plus cela sera long car tu es parti sur l'option de forcer le recalul au lieu de faire une macro qui et calcul juste ce dont tu as besoin.
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 125
Membres
112 666
dernier inscrit
Coco0505