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 :

Message restant affiché 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
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut Message restant affiché pendant l'exécution d'une macro
    Bonjour,

    Je cherche à savoir s'il existe en VBA la possibilité de faire afficher une fenêtre de message comme celle d'une MsgBox (de préférence sans boutons) mais qui reste affichée pendant l'exécution d'une macro.
    Ce serait pour indiquer à l'utilisateur "Procédure en cours, ne pas interrompre" ou quelque chose comme ça.

    Parce que j'ai des macro qui peuvent prendre quelques dizaines de secondes à se dérouler, sans qu'il y ait quoi que ce soit qui bouge à l'écran. Donc, certains utilisateurs pensent que ça a planté et appuient sur tout ce qui leur passe sous le pointeur.
    J'ai beau expliquer "Pas touche tant que le message Terminé n'est pas affiché", rien n'y fait.
    Il faudrait qu'il y ait à l'écran quelque chose qui leur indique clairement que Excel est en train de travailler.

    La seule astuce que j'ai trouvé est de créer un Workbook, d'y mettre un message et de le laisser au premier plan pendant l'exécution, mais ce n'est pas vraiment satisfaisant.

    Merci d'avance.

  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,

    en dehors du message dans une cellule ou dans la barre d'état,
    il y a l'UserForm en non modal (via sa propriété ShowModal à False).

    L'autre possibilité est d'afficher un objet Shape préalablement caché …

    ______________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Marc-L Voir le message
    l'UserForm en non modal (via sa propriété ShowModal à False).
    J'ai un peu été voir dans l'aide VBA et cet méthode semble être celle qui correspond le mieux à ce que je cherche.
    Jusqu'à présent, je m'étais peu intéressé aux UserForm et je ne connaissais pas cette propriété.

    Merci pour cette réponse.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Tu pose une barre de progression sur une Form à laquelle tu supprime la croix de fermeture (voir code). Si tu n'as pas de barre de progression, tu peux en créer une avec deux Labels. A mettre dans le module de la Form :
    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
     
    Private Declare Function FindWindow _
                    Lib "user32" _
                    Alias "FindWindowA" ( _
                    ByVal lpClassName As String, _
                    ByVal lpWindowName As String) As Long
     
    Private Declare Function SetWindowLong _
                    Lib "user32" _
                    Alias "SetWindowLongA" ( _
                    ByVal hWnd As Long, _
                    ByVal nIndex As Long, _
                    ByVal dwNewLong As Long) As Long
     
    Private Declare Function GetWindowLong _
                    Lib "user32" _
                    Alias "GetWindowLongA" ( _
                    ByVal hWnd As Long, _
                    ByVal nIndex As Long) As Long
     
     
    Private Sub UserForm_Initialize()
     
        Dim ID As Long
     
        Me.Caption = "Procédure en cours, ne pas interrompre..."
     
        ID = FindWindow(vbNullString, Me.Caption)
        SetWindowLong ID, -16, GetWindowLong(ID, -16) And -524289
     
    End Sub
     
    'pour le test afin de fermer !
    Private Sub UserForm_Click()
     
        Unload Me
     
    End Sub

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Merci.
    Je retient l'idée d'utiliser un champ string pour faire une barre de progression. Je n'y avais pas pensé.

  6. #6

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Merci pour ce code. Je vais m'en inspirer.

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

Discussions similaires

  1. [XL-2007] Afficher un MsgBox sans Bouton pendant l'exécution d'une macro
    Par ddanie dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/11/2014, 12h23
  2. [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
  3. [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
  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