Microsoft 365 Validation (bouton "no") automatique d'une Msgbox après 1mn

Fab117

XLDnaute Impliqué
Hello,
Je souhaiterais faire une macro qui tourne en boucle, mais m'offre régulièrement une porte de sortie.
J'ai donc fait une boucle qui m'ouvre une Msgbox.
Si je clique "yes", il sort de la macro.
Si je clique "No" il déroule la macro et retourne sur la Msgbox.

Existe-t-il un moyen pour qu'après 1mn il "clique" tout seul sur le bouton "No" de la Msgbox si entre temps je n'ai pas réagit.

Autrement dit:
Il ouvre la Msgbox.
J'ai 1mn pour cliquer sur "yes", sinon il déroule le reste de la macro, puis relance la Msgbox.
Et ainsi de suite jusqu'à ce que je clique "yes"
VB:
Do Until Condition
    If MsgBox("Cliquer Yes pour sortir de la macro", vbYesNo, "Demande de confirmation") = vbYes Then
            Exit Sub
    End If
Loop

Merci d'avance de votre aide.

Fab
 

patricktoulon

XLDnaute Barbatruc
bonjour a tous
tiens voila un exemple de plantage sans raison avec un settimer
dans l'exemple ci joint c'est simplement la cellule A1 qui est mise a l'heure
quand l’horloge est en route essayez simplement de sélectionner une plage
 

Pièces jointes

  • horloge simple.xlsm
    22.2 KB · Affichages: 11

Dranreb

XLDnaute Barbatruc
Bonjour.
Ça illustrerait donc que Excel ne peut pas exécuter Range("A1") = Time s'il est interrompu par le Timer pendant qu'il déroule du code réagissant à la sélection d'une cellule. Reste à savoir si un Application.OnTime Now peut quand même être exécuté, pour que l'opération soit différée jusqu'au moment où il poura le faire.
 

Dudu2

XLDnaute Barbatruc
Bonjour Bernard & Patrick,

Ça c'est le Timer. C'est un truc indépendant qui fait du "rentre-dedans". La fonction à exécuter est passée à un Timer système qui déclenche quoiqu'il arrive. D'où la nécessité de bloquer toute activité sur Excel lors de son exécution pour ne pas entrer en conflit. Et une fenêtre Modal semble tout à fait désignée pour ce faire.

Ce n'est pas ce que fait le Application.Ontime et je suis très étonné que tu plantes avec.
Je vais essayer.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
L'idée c'était qu'une procédure désignée par un Application.OnTime est exécutée par l'application et donc forcément à un moment où elle peut le supporter. Mais d'après ce que tu dis il ne peut malheureusement pas non plus enregistrer la consigne pendant l'exécution d'une routine de service d'Excel ?
 

Dranreb

XLDnaute Barbatruc
Non, mon idée c'était :
VB:
Private Sub TimerProc(ByVal hwnd As Long, ByVal MSG As Long, ByVal nIDEvent As Long, ByVal dwTimer As Long)
    On Error GoTo errHandler
    Application.OnTime Now, "ExécuterLeTruc"
    Exit Sub
errHandler:
    KillTimer Application.hwnd, 0
   End Sub
Sub ExécuterLeTruc()
    Cell.Interior.ColorIndex = IIf(Int(dwTimer / 1000) Mod 2 = 0, xlNone, 6)
    Cell.Calculate
   End Sub
Comme ça on ne tenterait plus de forcer Excel à faire n'importe quoi n'importe quand. Mais peut être que même un Application.OnTime ce serait déjà de trop ? …
 

Dudu2

XLDnaute Barbatruc
C'est impossible à planter:
VB:
Public Run As Boolean

Sub demarre()
    Run = True
    Application.OnTime Now, "heure"
End Sub

Sub arrete()
    Run = False
End Sub

Sub heure()
    If Run Then
        Range("A1") = Time
        Application.OnTime Now + TimeValue("00:00:01"), "heure"
    Else
        Range("A1") = "heure"
    End If
End Sub

De toutes façons ce n'est pas ma discussion, je vous laisse à votre débat. @+
 

Dudu2

XLDnaute Barbatruc
Je pense que déclencher un OnTime, ou valoriser une cellule ou autre c'est pareil.
Le déclenchement du Timer, c'est une action préemptive qui est déclenchée directement alors qu'Excel peut avoir à faire autre chose.
Pour être sûr que le Timer n'entre pas en conflit avec Excel c'est de forcer Excel à rester tranquille.

Le cas du MsgBox Modal rentre dans cette option, et encore je suppose que le traitement du Click bouton pourrait parfaitement entrer en conflit avec le Timer s'il se déclenchait très précisément au même moment.
 

patricktoulon

XLDnaute Barbatruc
re
Pour être sûr que le Timer n'entre pas en conflit avec Excel c'est de forcer Excel à rester tranquille.
ben difficile quand on voit que simplement la selection de cellules fait planter excel
et quand je dit planter je parle du whitescreen et du message sans appel "excel va redémarer...." etc.... :D
on ne peut pas utiliser settimer pour une procédure répétée régulièrement pour bloquer l'utilisation d'excel pour tout le reste ça n'a pas de sens
un timer doit être silencieux et non bloquant
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035