Fenêtre d'attente

Résolu
likemonster Messages postés 40 Date d'inscription vendredi 16 janvier 2009 Statut Membre Dernière intervention 29 octobre 2009 - 25 mars 2009 à 13:07
likemonster Messages postés 40 Date d'inscription vendredi 16 janvier 2009 Statut Membre Dernière intervention 29 octobre 2009 - 25 mars 2009 à 16:37
Bonjour, j'aimerai lors de l'exécution de ma macro qu'une petite fenêtre s'ouvre avec comme message "Traitement en cours..."
J'ai fait des recherche sur internet mais je n'ai pas trouvé mon bonheur!! A chaque fois on parle de barre de progression.... bref je veux juste une fenêtre avec ce message et rien d'autre!!
Est ce possible ?

Cordialement

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 mars 2009 à 13:44
Salut
Note la catégorie modifiée pour ta prochaine question sur VBA

Il te faut créer une UserForm qui représente la fenêtre qui s'affichera quand tu le désirera. Appelons-la frmAttente.
Quand tu veux afficher la fenêtre, au début de ton traitement (*) :
   Dim maForme As frmAttente
   Set maForme = New frmAttente
   maForme.Show vbModeless
' Option ici
   DoEvents
' Ici ton traitement qui dure longtemps
' Option ici
   maForme.Hide
   Set maFome = Nothing

Option : Quand la forme est appelée, il se peut qu'elle se retrouve derrière les autres.
Pour forcer son affichage au premier plan :
- Créer un module
- Coller ce code à l'intérieur
   Option Explicit
   ' Constantes de SetWindowPos :
   Private Const HWND_TOPMOST      As Long = -1
   Private Const HWND_NOTOPMOST    As Long = -2
   Private Const SWP_NOSIZE        As Long = &H1
   Private Const SWP_NOMOVE        As Long = &H2
   Private Const SWP_NOACTIVATE    As Long = &H10
   Private Declare Function SetWindowPos Lib "user32" ( _
                                ByVal hWnd As Long, _
                                ByVal hWndInsertAfter As Long, _
                                ByVal X As Long, _
                                ByVal Y As Long, _
                                ByVal cx As Long, _
                                ByVal cy As Long, _
                                ByVal uFlags As Long) As Long
   Public Sub SetTop(maForm As UserForm, _
                     ByVal Topmost As Boolean)
       Dim hWndInsertAfter As Long
       If Topmost Then
           hWndInsertAfter = HWND_TOPMOST
       Else
           hWndInsertAfter = HWND_NOTOPMOST
       End If
       SetWindowPos maForm.hWnd, hWndInsertAfter, 0, 0, 0, 0, _
           SWP_NOSIZE Or SWP_NOMOVE Or SWP_NOACTIVATE
   End Sub
- et l'appeler avant le DoEvents de la première partie :
   Call SetTop (maForme, True)
- La rappeler avant de fermer la forme :
   Call SetTop (maForme, False)

(*) Si l'appel et la fermeture de la forme doivent avoir lieu dans des procédures différentes, il faudra dimensionner la forme dans la partie Déclaration d'un module, par exemple.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés


<hr />
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 mars 2009 à 13:48
Oups : Oublie l'Option car sous Excel, les objets tels que les UserForm n'ont pas de Handle (du moins, pas de paramètre accessible facilement)
0
likemonster Messages postés 40 Date d'inscription vendredi 16 janvier 2009 Statut Membre Dernière intervention 29 octobre 2009
25 mars 2009 à 14:03
Est ce que je dois mettre quelque chose dans le userform??? ou je le laisse comme ceci??

Private Sub frmAttente()

End Sub
0
Genildf Messages postés 270 Date d'inscription lundi 12 janvier 2009 Statut Membre Dernière intervention 30 décembre 2015 1
25 mars 2009 à 14:29
Je pense kil n'y a rien a mettre pour ma part si ce n'est ton text "Traitement en cours dans un label"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 mars 2009 à 15:31
Oui, voilà, cette forme n'est qu'un support graphique.
Elle n'a pas besoin de code.
0
likemonster Messages postés 40 Date d'inscription vendredi 16 janvier 2009 Statut Membre Dernière intervention 29 octobre 2009
25 mars 2009 à 16:37
Super merci beaucoup!!!
0
Rejoignez-nous