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 :

Laisser une Msgbox affichée pendant le déroulement de la macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut Laisser une Msgbox affichée pendant le déroulement de la macro
    Bonjour, j'aurai souhaité mettre en place une msgbox me disant "réinitialisation des données en cours" et qu'une fois la macro terminée j'ai une msg box qui me dise "traitement terminé". Pour l'instant j'ai:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Réinitialisation des feuilles en cours", vbInformation
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Traitement terminé", vbInformation
    Le problème c'est qu'il faut que l'utilisateur clique sur ok, pour lancer la macro j'aurai souhaité savoir si il y avait une possibilité que la msgbox soit affichée tout au long du processus et que la seconde msgbox arrive à la fin et que là l'utilisateur cklqiue ok.

    Merci beaucoup et bonne journée.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Jète un oeil dans contribuez VBA-Excel, il y a un exemple pour créer un message en utilisant un userform.
    http://www.developpez.net/forums/sho...d.php?t=452868

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    En fait j'ai fait une userbox que j'ai loadé puis uploadé a la fin de la macro, par contre çà augmente le temps de réalisation...Y a t-il une autre manière de faire?

  4. #4
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir,

    tu peux utiliser la barre d'état pour afficher un message
    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
    Dim EtatStatusBar As Boolean
    'état de la barre d'état
    EtatStatusBar = Application.DisplayStatusBar
    'affichage de la barre d'état
    Application.DisplayStatusBar = True
    'affichage du message
    Application.StatusBar = "Réinitialisation des feuilles en cours..."
    '----------------------
    ' ton code
    '----------------------
    'et à la fin
    'réinitialisation de la barre
    Application.StatusBar = False
    'remise à l'état d'origine
    Application.DisplayStatusBar = EtatStatusBar
    cordialement

  5. #5
    kika18
    Invité(e)
    Par défaut
    Une question par rapport a ces suggestions: elles ne permettent que d'afficher un message a l'ecran pendant l'execution de la macro.
    Est-il possible de generaliser ca en ayant un objet de type msgbox qui permette d'interrompre l'execution de la macro?

    Merci.

    kika18

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Regarde ici, je donne un exemple de message à afficher pendant le déroulement d'une macro. http://www.developpez.net/forums/sho...d.php?t=461247

    Dans l'userform :
    Pour le message, ajoutes un msgbox dans l'événement UserForm_QueryClose
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        Fin = True
        Msgbox "C'est fini !"
        If CloseMode <> 1 Then Cancel = False
    End Sub
    Tu remplaces la boucle sur les labels par le nom de ta macro.
    Pour ça, tu supprimes les labels 2 et 3 et tu remplaces tout ça
    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
    Private Sub UserForm_Activate()
    Dim msg, msg2 As String
        Label1.Caption = vbCr & " Minute papillon, je bosse !" 'Ton message
        DoEvents
        
    '*************A remplacer par l'appel à la macro *****************
        msg = " Là, je simule le travail de la macro "
        msg2 = " Un clic sur l'userform m'arrête "
        Do
            msg = Right(msg, Len(msg) - 1) & Left(msg, 1)
            msg2 = Right(msg2, 1) & Left(msg2, Len(msg2) - 1)
            LaMacro msg, msg2
            DoEvents
        Loop While Not Fin
    '*****************************************************************
    End Sub
    
    Sub LaMacro(msg, msg2)
    Dim i
        Me.Label2 = msg
        Me.Label3 = msg2
        For i = 1 To 4500
            DoEvents
        Next
    End Sub
    par ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_Activate()
    Dim msg, msg2 As String
        Label1.Caption = vbCr & " Minute papillon, je bosse !"
        DoEvents
        Call TaMacro
    End sub
    Dans un module standard où se trouve déjà ta macro, pour appeler l'userform tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub LancerLeMessageEtLaMacro()
        Load MessageBox
        MessageBox.show
    End sub
    Et au lieu de lancer ta macro directement, tu exécutes "LancerLeMessageEtLaMacro"

    Pour te former, les cours et tutoriels Excel : https://excel.developpez.com/cours/

    Amuse-toi bien

  7. #7
    kika18
    Invité(e)
    Par défaut
    Impeccable!

    Merci.

    kika18

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Si c'est résolu, alors un petit click sur en bas de cette fenêtre et comme ça on saura que c'est résolu

Discussions similaires

  1. Réponses: 15
    Dernier message: 05/02/2012, 19h31
  2. Réponses: 1
    Dernier message: 19/01/2007, 11h19
  3. [VBA EXCEL] Afficher une somme dans une MSGBOX
    Par helmut_perchu dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/12/2006, 21h46
  4. [html] afficher une page web pendant x temps
    Par goma771 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 15
    Dernier message: 11/01/2006, 15h50
  5. [Thread] laisser une fenetre s'afficher
    Par parisjohn dans le forum Concurrence et multi-thread
    Réponses: 11
    Dernier message: 25/08/2004, 15h05

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