En effet, vous pouvez constater, que lorsque vous lancez l'outil de test, que vous rentrez un commentaire libre, que vous cliquez sur copier le contenu et sur ok dans la msgbox et qu'ensuite vous fermez l'userform immédiatement mais pas excel, si vous patientez quelques secondes un userform (userform1 dans le fichier) s'ouvre avec un compteur.
Or, comme je le disais dans le fil de conversation (voir lien), je ne veux pas que cet userform s'ouvre si je quitte la macro avant.
Je veux que l'userform1 ne s'ouvre au bout de 10 secondes que lorsque j'ai cliqué sur "copier le contenu", puis sur ok dans la msgbox, et qu'il n'y ai plus de mouvement de souris ou clavier dans l'userform2.
Bonjour.
Ça vous ennuierait de mettre les propriétés ShowModal à False dans vos userform ?
Ce serait beaucoup plus simple: vous pourriez tout planifier avec des OnTime
Cependant essayons un truc (j'écris ici au fur et à mesure que je programme); Dans module1 en tête:
VB:
Public ArrêterLesFrais As Boolean
dans Userform2:
VB:
p = 5: s = Timer: ArrêterLesFrais = False
Do While Timer < s + p
DoEvents: If ArrêterLesFrais Then Exit Sub
Loop
UserForm1.Show
Puis partout où une action doit suspendre le décompte :
VB:
ArrêterLesFrais = True
Ouais, non. Ça ne va pas marcher parce que Userform2 ne va pas rendre la main à quoi que ce soit d'autre avant qu'on le quitte du fait que sa propriété ShowModal est à True...
Je ne sais pas...
P.S. C'est simple, moi les userform avec ShowModal = True, je ne les utilise plus du tout nulle part. Pas assez souples à mon gout.
C'est peut être une toute autre conception de programmation de l'application au départ, ou chaque userform a sa propre vie indépendante des autres, et qui permet des interventions de toutes sortes ailleurs, mais c'est drôlement pratique !
Cordialement.