Exécuter en boucle le code d'un userform sans le 'figer' ?
Bonsoir à tout le monde,
J'ai besoin de vos lumières à nouveau pour un petit souci sur lequel je sèche depuis plusieurs jours... Je résume :
J'ai un userform, qui à son ouverture, lance une procédure qui vérifie si un autre logiciel avec lequel j'inter-réagis par VBA, est bel est bien ouvert. S'il n'est pas ouvert, le bouton VALIDER de cet userform est désactivé. S'il est ouvert, le bouton VALIDER est activé. (Cet userform contient aussi plein de textbox à remplir pour préparer l’interaction avec le fameux logiciel mais je vous passe les détails)
Tant que cet userform est ouvert, je souhaiterais re-vérifier toutes les X secondes si le fameux logiciel en question n'as pas été ouvert ou fermé entre temps, afin d'activer/désactiver le bouton VALIDER, sans avoir a relancer la procédure manuellement...
Et là je coince, car si je mets un Timer et une boucle, l'exécution de la procédure ne se termine jamais, donc fatalement, je n'ai plus aucun contrôle sur l'userform et ses textbox, il reste figé, la souris en sablier, et je ne peux même plus le quitter, (sauf en faisant échap, comme un barbare).
Je sais que je pourrais mettre un petit bouton "Actualiser", histoire que l'utilisateur lui même, relance manuellement la détection sans passer par un timer, mais j'ai envie de me compliquer la vie pour le challenge, et la beauté du geste.
Voici le code actuel :
Private Sub UserForm_Activate()
Userform1.BoutonValider.Enabled = False
LoopDetection:
''''''''''''''''''''''''''''''''''''''''''''''
On Error GoTo NoSession
'Ici se trouve le code qui détecte si mon logiciel est ouvert
'Si non ==> Erreur VBA 'Impossible de créer l'objet'
On Error GoTo 0
'''''''''''''''''''''''''''''''''''''''''''''''
Userform1.BoutonValider.Enabled = True
Exit Sub
NoSession:
Application.Wait Time + TimeSerial(0, 0, 5)
Resume LoopDetection
End SubSi l'un d'entre vous a une petite astuce pour que je puisse parvenir à mes fins je suis preneur et je vous en serai éternellement reconnaissant
Un grand merci par avance pour votre aide potentielle
Bonjour mickado83,
Une piste dans le fichier joint basée sur l'instruction OnTime. Le code (dans UserForm1 et module1) est un peu commenté.
Bonjour MaPoire !
Je pense effectivement que "Application.Ontime" va me sauver
Je ne l'ai jamais utilisé, mais avec ton exemple, cela semble assez simple et logique.
Je viens de modifier mon code je testerai ça au boulot, ça devrait fonctionner !
Un très grand merci à toi pour le coup de pouce
Micka