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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

+ 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