Bonjour tout le monde
Je ne suis qu'un débutant en VBA, je n'ai aucune expérience dans les userform. Mais je dirais que le code de Franck est plus 'propre' que celui de Julos.
Je m'explique, il faut faire attention à l'utilisation de la Méthode OnTime, dans l'aide en ligne de VBA il y a un exemple qui montre comment exécuter my_Procedure à 17 heures, et indique comment arrêter 'my_Procedure', par
Application.OnTime EarliestTime:=TimeValue('17:00:00'), _
Procedure:='my_Procedure', Schedule:=False
Il est préférable d'utiliser les conseils de l'aide en ligne.
Autre point, étant sur environnement Mac, l'utilisation de la méthode SendKeys n'est pas supportée. Il est préférable d'utiliser la méthode
Unload UserForm1
Autre inconvénient, si l'utilisateur quitte l'userform avant les 10 secondes...
1er cas, si la méthode 'sortie' se trouve dans le module de l'userform, VBA va afficher un message d'erreur, disant qu'il ne trouve pas la sub 'sortie'
2ème Cas, si la méthode 'sortie' se trouve dans un autre module, VBA va vouloir fermer la fenêtre active, ce qui ne sera pas le cas avec UnLoad.
Tout ceci, implique de nommer une variable publique pour stocker l'heure d'arrêt (obligatoire sur Mac), et l'affection de la procédure d'arrêt aux événements et objets de fermeture de l'userform, voir du fichier.
@+Jean-Marie