IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Afficher un MsgBox sans Bouton pendant l'exécution d'une macro [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 51
    Par défaut Afficher un MsgBox sans Bouton pendant l'exécution d'une macro
    Bonsoir à tous,

    J'ai un UserForm1, avec 1 Bouton qui lance une macro qui s'exécute pendant une vingtaine de secondes.
    Pendant ce temps je voudrais un MsgBox sans bouton qui s'affiche, et qui me dit : "Patientez..." et ensuite qui se ferme automatiquement quand la macro est terminée.

    Merci pour votre aide

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut


    Bonjour,

    un MsgBox suspend l'exécution du programme, à oublier donc !

    Une possibilité via un UserForm non modal affichant un simple message (consulter l'aide de sa méthode Show) …
    Encore plus simple est d'afficher un message dans une cellule de la feuille active !

  3. #3

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 51
    Par défaut
    Citation Envoyé par Marc-L Voir le message


    Bonjour,

    un MsgBox suspend l'exécution du programme, à oublier donc !


    Une possibilité via un UserForm non modal affichant un simple message (consulter l'aide de sa méthode Show) …
    Encore plus simple est d'afficher un message dans une cellule de la feuille active !
    Merci Marc
    J'ai utilisé un UserForm2 avec un Label "Patientez..."
    l'UserForm2 s'affiche bien pendant le temps d'exécution de la macro et se ferme automatiquement en fin d'exécution.
    - Problème : c'est que le Label n'affiche rien ou est invisible.

    Je vais continuer à chercher la solution mais vu l'heure, ce ne sera que demain...

  5. #5
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut





    Après UserForm2.Show insérer la fonction DoEvents dans le code …



  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonsoir,

    Quid de la barre de status?
    Si ça peut aider, je classe/transferts qutodiennement des dizaines de GO de data par un wbk + VBA, et j'ai qquchose du style (gauge de progrès dans la status bar)

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    If FilesCnt > 50 Then
     
            Msganswer = MsgBox(FilesCnt & " files to transfer from " & FSOLFoldC.Count & " directories" & vbCrLf & "It could be long" & vbCrLf & _
                "Please, check the excel status bar (Cancel to stop the transfer)", vbInformation + vbOKCancel, Subname)
            If Msganswer = vbCancel Then Exit Sub
     
        End If
     
        ' Status bar
                        If Format(FileTrsCnt / FileCnt, "0%") <> TrsfInd Then
                            TrsfInd = (FileTrsCnt / FileCnt) * 100
     
                            If TrsfInd >= TrsfIndOld + 1 Then
     
                                TrsfIndOld = TrsfInd
                                Call UpdateStatusBar(Funcname & " " & TrsfMode & " - Progress: " & FileTrsCnt & " of " & FileCnt & ": " & Format(TrsfInd / 100, "0%") & " " & String(Int(TrsfInd), "|"), True)
     
                            End If
     
                        End If
    (....)
    Sub UpdateStatusBar(StBarMsg As String, Optional KeepDispl As Boolean = False)
     
    Dim StBarOld As Boolean
    Dim StBar As Boolean
     
     
    StBarOld = Application.DisplayStatusBar
     
    Application.DisplayStatusBar = True
    Application.StatusBar = StBarMsg
    DoEvents
     
    If KeepDispl = False Then
        Application.StatusBar = False
        Application.DisplayStatusBar = StBarOld
    End If
     
    End Sub
    Bonne soirée

  7. #7
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonsoir a tous

    Il y a beaucoup plus simple !

    Moi, pour ce genre de problème, j'utilise la barre d'état et on peut voir l'état d'avancement du traitement !

    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
    19
    20
    21
    22
    23
    24
    25
    Sub Attente_Msg()
        'Sauvegarder la barre d'état en place
        Barre_Actuelle = Application.DisplayStatusBar
        Application.DisplayStatusBar = True
     
        'affichage de la barre avec le message
        Application.StatusBar = "Macro en cours d’exécution, veuillez patienter"
     
        'Traitement à faire
        For i = 1 To 100000
            'message de l'état d'avancement du traitement
            Application.StatusBar = "Macro en cours d’exécution, Traitement en cours " & i & "/100000"
        Next
     
        'message de fin
        Application.StatusBar = "Traitement fini, Merci de votre patience"
     
        '3 secondes d'attente
        Application.Wait Now + TimeValue("00:00:03")
     
        'restauration de l'état de départ
        Application.StatusBar = False
        Application.DisplayStatusBar = Barre_Actuelle
     
    End Sub
    Tester moi ça et dites moi ce que vous en pensez !!


    PS : Je vois que VincBilb a eu la même ideé que moi mais en plus évoluée

  8. #8
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    PS : Je vois que VincBilb a eu la même ideé que moi mais en plus évoluée
    .... hhhu évolué? J'en ai pas mal bavé pour faire une gauge 0-100% (pas trop difficile) mais qui ne ralentisse pas trop le traitement ....
    Bonne soirée

  9. #9
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, et un de plus .... ici

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 51
    Par défaut
    Merci à Marc-L et à Igloobel

    Vos deux solutions DIFFERENTES fonctionnent très bien, j'ai une préférence pour la solution de Marc, car plus conviviale avec l'UserForm,
    L'affichage de Marc dans la barre d'état est très bien aussi..., j'ai remplacé la boucle i par la macro à exécuter.

    Merci et bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Afficher un message et une image d'attente pendant l'exécution d'une Macro
    Par jérémyp8 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/07/2013, 22h38
  2. [XL-2003] Afficher un message d'attente pendant l'exécution d'une macro
    Par demongin dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 07/06/2009, 20h54
  3. [XL-2003] Masquer l'ouverture de fichiers pendant l'exécution d'une macro
    Par thibane dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/04/2009, 08h10
  4. Affichage d'un message d'attente pendant l'exécution d'une macro
    Par shadok6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/10/2008, 14h49
  5. Intercepter un clic dans un userform pendant l'exécution d'une macro
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 05/04/2008, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo