Message d'attente pendant l'exécution d'une macro

Bonjour à tous,

L'exécution d'une de mes macros prend beaucoup de temps, mon fichier est très volumineux..

j'aimerais afficher un message d'attente du style: "veuillez patienter" pendant son exécution.

j'ai fait quelques recherches mais je débute en vba alors les userform, barre de progression et autres subtilités d'excel sont à un niveau encore au delà de mes compétences...

pourriez vous me faire un exemple sur un fichier landa avec une macro toute simple?

on exécute la macro à l'aide d'un bouton et un message s'affiche pendant son exécution.

je pourrais ensuite adapter mon code et insérer celui du message d'attente.

merci de votre aide

Bonjour,

un essai

Cordialement

5'960essai.xlsm (13.74 Ko)

Bonjour festysonic,

en fait le bouton a déjà une macro d'attribuée, et j'aimerais que ton message s'affiche pendant l'exécution de la dite macro et qu'il disparaisse une fois la macro totalement exécutée.

est-ce possible?

oza

Une solution avec la barre d'état (en bas à gauche) tirée de l'aide VBA d'excel :

Sub attends()
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
Application.StatusBar = "C'est pas fini..."

'appel de la macro ici

Application.StatusBar = False
Application.DisplayStatusBar = oldStatusBar
End Sub

Bonjour

Une idée simple

merci vba-new et Banzai64!

vba-new, ta solution est simple et répond à ma demande!

la solution de Banzai64 est super intéressante également! si j'ai bien compris je dois coller mon code existant comme ci-dessous?

est on obligé de passer par la fenêtre "lancement de la macro"? est ce plutôt possible de cliquer sur bouton 1 et la fenêtre "veuillez patienter" s'affiche?

Private Sub CommandButton1_Click()
Dim I As Integer
Dim J As Long

  USFWait.Show 0
  USFWait.Repaint

  'je copie le code de ma macro existante ici?
  For I = 10 To 20
    For J = 1 To 20000
      Cells(J, I) = "Travail"
    Next J
  Next I
    For I = 10 To 20
    For J = 1 To 200
      Cells(J, I).ClearContents
    Next J
  Next I
  'fin

  Unload USFWait
End Sub

merci

Bonjour

Non le bouton "Lancement macro" ne sert qu'à simuler ta propre macro

C'est en fonction de ton programme que tu dois insérer le code

Sub Ma_Macro_A_Moi_Tout_Seul() 
  USFWait.Show 0
  USFWait.Repaint

  'je copie le code de ma macro existante ici?  
  'fin

  Unload USFWait
End Sub

c'est bon j'ai réussi!

merci beaucoup Banzai64 et vba-new

merci du coup de main, je l'ai adapté sur mon fichier et cela fonctionne parfaitement avec mes macros.

par contre est ce possible d'insérer une image dans le useform?

si oui comment?

j'ai trouvé par moi même, propriété du useform/picture

Bonjour,

Je me permets de déterrer un vieux sujet car il correspond exactement à ma demande et je ne veux pas créer de doublon

J'ai utilisé le code fourni par Banzai64 mais le userform ne se ferme jamais

Je pense avoir mal placé le "Unload USFWait"...

Pouvez vous m'aider ?

Un grand merci par avance,

Bonne journée,

Loïc

Function LireCellule_ClasseurFerme( _
        Chemin As String, _
        Fichier As String, _
        Feuille As String, _
        Cellule As Variant) As Variant
  USFWait.Show 0
  USFWait.Repaint
    Application.Volatile

    Dim Source As Object, Rst As Object, ADOCommand As Object
    Dim Cible As String

    Feuille = Feuille & "$"
    Cible = Cellule.Address(0, 0, xlA1, 0) & ":" & _
        Cellule.Address(0, 0, xlA1, 0)

    Set Source = CreateObject("ADODB.Connection")
    Source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & Chemin & "\" & Fichier & _
        ";Extended Properties=""Excel 8.0;HDR=No;"";"

    Set ADOCommand = CreateObject("ADODB.Command")
    With ADOCommand
        .ActiveConnection = Source
        .CommandText = "SELECT * FROM [" & Feuille & Cible & "]"
    End With

    Set Rst = CreateObject("ADODB.Recordset")
    '1 = adOpenKeyset, 3 = adLockOptimistic
    Rst.Open ADOCommand, , 1, 3
    Set Rst = Source.Execute("[" & Feuille & Cible & "]")

    LireCellule_ClasseurFerme = Rst(0).Value

    Rst.Close
    Source.Close

    Set Source = Nothing
    Set Rst = Nothing
    Set ADOCommand = Nothing
    Unload USFWait
End Function

Bonjour toutes et tous et bonne semaine

à tester

crdlt,

André

Bonjour,

Merci encore,

Bonne journée,

Loic

Rechercher des sujets similaires à "message attente execution macro"