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 message d'attente pendant l'exécution d'une macro [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut Afficher un message d'attente pendant l'exécution d'une macro
    Bonsoir,

    Je souhaiterai pouvoir afficher un message de type "Veuillez patientez...." pendant l'exécution d'une macro assez longue en arrière plan.
    J'ai essayé avec un UserForm et les instructions :
    - frmMessage.Show
    puis
    - unload frmMessage
    mais le code s'arrête dès l'affichage du message.

    Pour info, mon code n'est pas une boucle, mais une succession d'incrémentation et de copier/coller

    Avez-vous une solution à me proposer ?

  2. #2
    Membre expérimenté Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Points : 1 512
    Points
    1 512
    Par défaut
    bonjour demongin le forum un exemple a adapter

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut
    Merci Laeticia,

    A priori, je ne peux pas utiliser le compteur car cela bloque l'exécution de mon code et je ne connais pas la durée d'exécution du dit code, d'autant quand fonction des performances d'un pc à l'autre, elle sera différente.

    J'ai abandonné la solution de la barre de progression, faute de boucle dans mon code.

    Je pense donc utiliser un USF simple contenant du texte avec l'instruction 0 (non modal, je crois : UserForm1.Show 0) pour permettre la poursuite du code en arrière plan.
    En revanche, je souhaiterai l'agrémenter d'un Gif animé qui serait importé et donc intégré dans le classeur. Comment faut-il s'y prendre ?

    Merci par avance...

  4. #4
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Bonjour Demongin, l'amie Laetitia, le forum

    Pour les Gif, j'ai personnellement adapté les conseils de ce fameux tuto :
    http://silkyroad.developpez.com/VBA/ExcelImageGIF/

    bonne journée

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut
    Merci casefayere,

    J'étais justement dessus après avoir essayé la méthode ImageList car cette dernière ne permet pas de conserver l'animation (du moins facilement, sans compteur ni boucle).

    Les tutos similaires de Silkroad de 2007 et de MichelXLD de 2005 et les classeurs démo sont au top.

    Maintenant que j'ai importé mon Gif et qu'il est codé dans la feuille nommé "Image 3", je souhaiterai l'utiliser dans un autre classeur. J'ai donc copier la feuille cachée et repris la partie du code permettant l'affichage dans l'USF.
    Cependant, le Gif ne s'affiche pas dans l'USF, le WebBrowser reste blanc !
    J'ai forcé la valeur attribué à ComboBox1 avec "Image 3" mais cela ne convient pas. Le problème doit venir de cette fonction qui est inhibée.

    Quelle est la commande qui permet d'activer l'affichage ?

    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
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Private Sub ComboBox1_Change()
        Dim S As String
        Dim i As Long, F As Long
        Dim j As Byte, b As Byte
        Dim Hauteur As Long, Largeur As Long
     
        'Vérifie qu'il y a bien un nom de choisi dans le ComboBox.
        'If ComboBox1.Value = "" Then Exit Sub
     
        ComboBox1.Value = "Image 3"
     
        i = 1
        'Définit le chemin de l'image qui va être créée.
        S = "C:\imageTemp.gif"
     
        '----- Création de l'image pour un affichage dans l'USF -----
        F = FreeFile
        Open S For Binary Access Write As F
     
            Do
            j = j + 1
                    If j = 21 Then
                    j = 1
                    i = i + 1
                    End If
            b = ThisWorkbook.Sheets(ComboBox1.Value).Cells(i, j).Value
            Put #F, , b
            DoEvents
            Loop While ThisWorkbook.Sheets(ComboBox1.Value).Cells(i, j).Value <> ""
     
        Close F
        '------------------------------------------------------------
     
     
        'Définit les dimensions d'affichage de l'image dans le WebBrowser.
        Largeur = WebBrowser1.Width * 96 / 72
        Hauteur = WebBrowser1.Height * 96 / 72
     
        'Affiche l'image dans le WebBrowser en supprimant les marges et les barres de défilement
        WebBrowser1.Navigate _
        "ABOUT:<HTML><CENTER><HEAD><body scroll='no' LEFTMARGIN=0 TOPMARGIN=0><IMG WIDTH=" & _
            Largeur & " HEIGHT=" & Hauteur & _
            " SRC='" & S & "'</IMG></BODY></CENTER></HTML>"
     
     
        'Version pour afficher l'image à sa taille réelle:
        'WebBrowser1.Navigate _
        "ABOUT:<HTML><CENTER><HEAD><body scroll='no' LEFTMARGIN=0 TOPMARGIN=0><IMG " & _
            " SRC='" & S & "'</IMG></BODY></CENTER></HTML>"
     
    End Sub

  6. #6
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    re,
    je t'envoie un code que tu pourras comparer que j'utilise pour ouvrir un gif à l'ouverture de l'USF
    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
    41
    42
    Private Sub UserForm_Initialize()
    Dim s As String
    Dim Hauteur As Long, Largeur As Long
     Dim i As Long, F As Long, j As Long
     Dim b As Byte
    '----------------------------------------------------------------------------------------------
    'animation gif
    i = 1
    'Affiche une page blanche dans le webBrowser
    'Ferme et réouvre l'UserForm (permet une réinitialisation rapide)
        If gif = "" Then: gif = "CAMERAMAN" 'nom de ma feuille avec gif codé
        'Définit le chemin de l'image qui va être créée.
        s = "c:\temp\imagetemp.gif"
        '----- Création de l'image pour un affichage dans l'USF -----
        F = FreeFile
        Open s For Binary Access Write As F
            Do
            j = j + 1
                    If j = 21 Then
                    j = 1
                    i = i + 1
                    End If
            b = ThisWorkbook.Sheets(gif).Cells(i, j).Value
            Put #F, , b
            DoEvents
            Loop While ThisWorkbook.Sheets(gif).Cells(i, j).Value <> ""
    Close F
    '---------------------------------------------------------------------------------------
        'Définit les dimensions d'affichage de l'image dans le WebBrowser.
        Largeur = camera.Width * 96 / 72
        Hauteur = camera.Height * 96 / 72
        'Affiche l'image dans le WebBrowser en supprimant les marges et les barres de défilement
        camera.Navigate _
        "ABOUT:<HTML><CENTER><HEAD><body scroll='no' LEFTMARGIN=0 TOPMARGIN=0><IMG WIDTH=" & _
            Largeur & " HEIGHT=" & Hauteur & _
            " SRC='" & s & "'</IMG></BODY></CENTER></HTML>"
        'POUR TAILLE REELLE
            'WebBrowser1.Navigate _
        "ABOUT:<HTML><CENTER><HEAD><body scroll='no' LEFTMARGIN=0 TOPMARGIN=0><IMG " & _
            " SRC='" & s & "'</IMG></BODY></CENTER></HTML>"
     
    End Sub

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut
    Bonsoir Casefayere,

    Génial, ça marche !!!!

    J'ai du définir 'gif' et je l'ai mis en String, j'espère que c'était le mieux.

    Par contre, l'instruction 'camera.' n'est pas reconnue et elle semble remplacer WebBrowser1. Pour le moment, j'ai donc utilisé WebBrowser1.

    Comment faire fonctionner ton instruction et qu'a t-elle de différent avec WebBrowser1 ?
    Je me trompe peux être, mais je viens de faire tilt en pensant que vous avez sans doute tout simplement renommé WebBrowser1 en camera !

  8. #8
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Tu as bien fait tilt, c'est bien ça, j'ai donné mon code sans penser à tout ça mais comme tu n'es pas bête, tu as trouvé (je plaisante)

    Bonne soirée

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mai 2009
    Messages : 83
    Points : 37
    Points
    37
    Par défaut
    Merci mille fois, je vois pouvoir passer la nuit avec le coeur léger.

    Il ne me reste plus qu'à peaufiner mon nouveau joujou et à l'intégrer dans mon code final.


  10. #10
    Expert éminent Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Points : 9 548
    Points
    9 548
    Par défaut
    Meme si ce message sera supprimé par la suite, je crois qu'on peut dire merci surtout a Silkyroad pour cette magie et coucou à Laetitia pour le reste et par amitié

+ 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. Message d'attente pendant l'exécution d'un script php
    Par sam01 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 19/01/2014, 22h13
  3. [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
  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. Réponses: 3
    Dernier message: 29/11/2006, 10h45

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