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
 
Hello,
Tout d'abord un grand grand merci à vous tous.
Je ne pensais pas que ma question susciterait un tel intérêt.
Toutes vos propositions sont super intéressantes et j'ai trouvé mon bonheur.
Encore merci et excellente journée

Fab
 
Bonjour les temporisateurs,

Perso je trouve qu'un MsgBox non Modal c'est aussi sympa car ça permet de l'utiliser à d'autres fin que celles liées à l'exigence stricte d'une réponse.

Ceci dit, le MsgBox, le vrai, il est pas facile à Time-Outer. Il est Modal et prend la main sur toute tentative de Application.Ontime pour le dézinguer. Par contre, avec SetTimer, la situation devient plus intéressante.

Ci-joint, un MsgBox standard Modal et temporisé.

Edit: Fichier modifié 16/08 à 16h35 pour de petites améliorations (Déclaration LongPtr, titre par défaut, timer en millisecondes, simplification de code).
Et pour une grosse correction sur la fermeture de la fenêtre MsgBox qui n'a pas d'option de fermeture (X en barre de menu) pour vbYesNo et vbAbortRetryIgnore et donc insensible au SendMessage WM_CLOSE mais qu'il est possible de fermer avec un simple SendKeys "{ENTER}".
 

Pièces jointes

Dernière édition:
oui avec un usf c'est complètement personnalisable et je préfère
car l'api settimer est très très très très sensible et ne pardonne pas quand ça déraille c'est le crash 100% destruction
par exemple sur mon vieux pc portable W7 excel 2007, il arrive parfois (APPAREMMENT SANS RAISONS) de me planter et c'est aléatoire ce qui rend le problème plus difficile a cerner
 
En effet SetTimer est délicat à manipuler. Dans ces tests (et d'autres auparavant) oùj'ai vu à plusieurs reprises Excel dégager brusquement à cause de Timers en suspend. Là dans ce code, c'est très limité dans l'usage Set / Kill.
 
@Bernard,
Il faudrait que tu l'écrives complètement car je ne te suis pas pour le moment.
Reprends le code car j'ai retiré un flag inutile en fait. Il reste 15 lignes de code au final.
Le hWnd de la fenêtre MsgBox je ne peux pas l'avoir avant de passer en TimeOut.
 
Ça m'est aussi arrivé jadis. Je suppose que c'est parce que par cette voie Excel peut être ainsi dérangé n'importe quand, au beau milieu d'une réorganisation impliquée par des calculs ou autres, où ce n'est absolument pas possible d'exécuter une méthode demandée. MSForms est bien plus tolérant.
 
Oui, VBA non plus n'est pas sensible, je parlais d'autre cas. Ce qui est dangeureux c'est d'utiliser une méthode Excel dans un timer. C'est ça qui peut entrainer un plantage sévère et silencieux de l'application. On peut tout au plus espérer qu'un Application.OnTime Now, … y est assez tolérant pour savoir reporter cette exécution jusqu'au moment où elle est possible pour Excel.
 
- 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