Bonjour!
J'ai actuellement un projet VBA qui utilise plusieurs formulaires. Actuellement, quand l'utilisateur clique sur le bouton "Valider", cela va charger des données et vu que le nombre de données à charger est important, le temps d'exécution est assez long.
Pour que l'utilisateur ne se dise pas "Excel à planté", je souhaiterai faire apparaitre un message d'information, sous forme de formulaire ou MsgBox, qui disent "Chargement en cour...Patientez".
Mais je ne veux pas faire ça dans une feuille Excel car tout se passe dans les Userform.
Le probleme, c'est que actuellement mes traitement se font via une sub de type "Private Sub btnValide_Click()".
Donc si j'affiche un formulaire depuis cette sub, qui afficherai le message, la macro s'arrete et ne continue pas tant que le formulaire est ouvert.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub btnChoosePortfolios_Click() 'Message d'attente frmadvertisement.Show 'definition de la plage de donnée de la liste des portefeuilles et Commandes Call createList("lstPortfolios") Call createListCommand("lstCommandName") Me.txtNameCommand.Visible = False Me.lblTitreCommand.Visible = True Me.lblTitreCommand.Caption = "Command's Name" Me.lstPortfolios.Visible = True Me.btnNewPortfolios.Visible = False Me.btnChoosePortfolios.Visible = False end sub
Et evidemment, je ne vais pas rappeler ma sub, qui déjà est de type private, et va réexcuter la même chose etc...
Je ne veux pas recreer une fonction, juste pour faire mes traitement, et ainsi multiplier le nombre d'appel de fonction inutilement...etc.
Tout ca pour dire ce que je veux faire c'est:
-Click sur le bouton
-Ouvre le formulaire qui dit "Chargement en cour"
-Reprise du code la ou il s'est "arrêter", c'est à dire a la ligne "frmAdvertisement.show".
-Execution des traitements en laissant le formulaire d'avertissement ouvert
-Fermeture du formulaire d'avertissement à la fin des traitements.
Tout ça sans que l'utilisateur ait a cliqué sur "Ok" ou intervenir.
Avez-vous une solution?
J'espere avoir été clair dans mes explications...
Partager