Fermer une procédure vba

passesautee Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
Gord21 Messages postés 918 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

N'étant pas un expert en VBA et en programmation, je m'arrache les cheveux sur un problème qui parrait pourtant simple.

Ma procédure permet d'effectuer un calcul assez long. Pour faire patienter l'utilisateur, j'ai créé un userform avec une barre de progression. Sur cette Msgbox, j'aimerais ajouter un bouton annuler. Cependant, je sais unloader le userform mais je ne sais pas arreter la procédure.

D'où ma question:

Comment faire pour stopper une procédure qui est en train de tourner en cliquant simplement sur annuler?

Merci d'avance!

2 réponses

Gord21 Messages postés 918 Date d'inscription   Statut Membre Dernière intervention   289
 
Bonjour,
Oui, ça marche en cliquant sur annuler mais ce n'est pas très élégant :-)
Tu peux déclarer une variable publique (par exemple On_arrete as Boolean) qui tu initialises à False en début de calcul. Dans tes boucles de calcul, tu insères des tests du type :
If On_arret Then
Exit sub
End If


Tu peux également lancer une procédure d'arrêt ou mettre un GoTo à la place de l'Exit sub
1
passesautee Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup pour ta réponse, c'est aimable à toi. C'est ce qu'il me faut.
Mais admettons qu'un jour je veuille quitter une procédure dont le calcul n'est pas une boucle. Je peux uniquement quitter la procédure avec un exit sub au sein de son code? ce n'est pas possible de quitter la procédure de l'extérieur? (du même type que unload par exemple)
0
Gord21 Messages postés 918 Date d'inscription   Statut Membre Dernière intervention   289
 
Bonsoir,
A ma connaissance, il n'est pas possible de quitter une procédure de l'extérieur excepté par les méthodes brutes du type Echap, Gestionnaire de tâches, ...
Je ne pense d'ailleur pas qu'il soit possible dans un même projet de lancer deux procédures en parallèle (une qui calcule et une qui gère les interruptions par exemple).
0