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

  • Initiateur de la discussion Initiateur de la discussion Fab117
  • Date de début Date de début

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 !

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
 
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.
 
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:
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 ?
 
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 ? …
 
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. @+
 
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.
 
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.... 😀
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:
- 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

Discussions similaires

Retour