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
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Je ne sais pas si on peut le faire avec un MsgBox, mais avec un UserForm non modal, oui.
J'en ai deux comme ça, si ça vous intéresse, qui peuvent interrompre une exécution en les fermant par la croix: un UFmProg qui affiche une barre de progression pour un traitement dont on peut déterminer à l'avance un nombre d'opérations élémentaires et un UFmVisu qui permet d'afficher l'activité d'un système à appels récursifs dont la durée est imprévisible.
Si aucun des deux affichage n'est adapté à votre traitement on pourrait quand même afficher le temps déjà passé sur ce traitement, vu qu'il y a aussi des chronomètres dans le classeur de démonstration qui porte la barre de progression.
Édition: J'allais oublier le plus intéressant: un UFmDécompte qui affiche le temps restant jusqu'à interruption assumée, muni d'un Label pour un message !
Allez, je joins ce classeur là …
 

Pièces jointes

  • Progression.xlsm
    220.4 KB · Affichages: 14
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bonjour,
Il existe plusieurs MsgBoxPerso sur Internet et j'en ai aussi fait un avec des tonnes d'options (facultatives !) sur la base d'un UserForm et d'un Module à include dans le Projet VBA dont l'aspect est très proche du MsgBox standard. Une des options est un temps maxi d'affichage.

Edit: si c'est uniquement pour le Timeout, mieux vaut utiliser les solutions proposées ci-dessous.
Ce MsgBoxPerso a surtout vocation à proposer des boutons personnalisables et un texte au format adaptable.
 

Pièces jointes

  • TestMsgBoxTemporisé.xlsm
    53.8 KB · Affichages: 9
Dernière édition:

Phil69970

XLDnaute Barbatruc
Bonsoir Fab117, Dranreb, Dudu2, le forum

Je te propose ceci :

VB:
Sub ReponseMSG()

Dim Wsh As Object, Reponse As Integer
Set Wsh = CreateObject("WScript.Shell")

Reponse = Wsh.popup("Voulez vous gagner à l'euromillion ?", 1, "Demande de confirmation", vbYesNo + vbDefaultButton2)

Select Case Reponse
    Case -1                 'Pas de réponse
        'Blablabla pas de réponse
        MsgBox "Pas de réponse de l'utilisateur", , "Alors tu dors !"

    Case 6                  'Réponse oui
        'Blablabla réponse oui
        MsgBox "Tu as cliqué sur oui, alors tu vas jouer pour gagner", , "Bravo !!"
    
    Case 7                  'Réponse Non
        'Blablabla réponse non
        MsgBox "Tu as cliqué sur non", , "Dommage pour toi"

End Select

End Sub

Wsh.popup("Voulez vous gagner à l'euromillion ?", 1, "Demande de confirmation", vbYesNo + vbDefaultButton2)
Le 1 en rouge te permet de régler la durée du popup (ici 1 seconde)

@Phil69970
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonsoir @Phil69970 , @Dudu2
un msgbox proposant deux choix réponse (ex: yes/No)ou plus ne peut qu’être modal sans ça c'est de la farigoulette
en effet les deux derniers exemples ne sont pas modal puisque je peux sélectionner des cellules en attendant donc faire tout autre chose y compris biaiser le msgbox
ton premier Dudu2 (#3) semble fonctionner comme il se doit (il est modal et exige une réponse et se ferme après 8 secondes )
pour les deux derniers donc c'est choux blanc ;)
A méditer
;)
edit donc non il n'a pas l’embarras du choix ;) ;) ;) ;)

ps: @Phil69970
avec certaine version + config de excel il arrive qu'avec wscript.shell que l'argument delay pour le msgbox soit inopérant ce qui est le cas chez moi sur W7 et xl2013
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
si vous finissez par le faire avec un userform,j’irais me plus loin dans mon raisonnement
en effet il est sensé être modal et vous interdire de pourvoir faire autre chose et s'auto fermer avec un delay
et bien pour la rare fois je ferais un do loop interne puisqu'on s'en fout on est sensé pouvoir rien faire d'autre que de répondre ou attendre son auto fermeture
 

Dranreb

XLDnaute Barbatruc
Je trouve justement dommage avec un affichage modal, aussi possible avec un UserForm, que pendant que la question reste posée, même pour une minute, le traitement ne se fait pas, alors qu'il pourrait se poursuivre jusqu'à la décision, soit par l'opérateur soit automatique.
 

patricktoulon

XLDnaute Barbatruc
Je trouve justement dommage avec un affichage modal, aussi possible avec un UserForm, que pendant que la question reste posée, même pour une minute, le traitement ne se fait pas, alors qu'il pourrait se poursuivre jusqu'à la décision, soit par l'opérateur soit automatique.
bonsoir @Dranreb
ouaip la question servirais a quoi alors ? ;) dans ce cas là un vbokonly suffit et non modal
 

Dranreb

XLDnaute Barbatruc
On a quand même oublié de faire préciser au demandeur si son traitement est bien écrit pour être le plus performant possible. Souvent le souhait d'un affichage pendant une exécution trahissent une macro mal écrite. Mais ce n'est pas forcément le cas: mon UFmVisu dont le parlais plus haut est conçu pour des tirages aléatoires de joueurs avec contraintes pour des compétions. Ceux-ci n'émettent jamais de requête à Excel, lesquelles sont pratiquement les seule à être foncièrement pénalisantes.
Si dans son code il y a plein de Cells ou Range dans des boucles, on va lui arranger tout ça pour qu'il n'en ait plus besoin !
 

Discussions similaires

Réponses
7
Affichages
358

Statistiques des forums

Discussions
311 725
Messages
2 081 943
Membres
101 849
dernier inscrit
florentMIG