OVH Cloud OVH Cloud

Message d'attente

2 réponses
Avatar
Érico
Bonjour,

J'ai une macro qui prend une dizaine de secondes à exécuter et j'aimerais
savoir si c'est faisaible de mettre un message à l'écran que la macro est en
cours pour pas que la personne qui voit celà, pense pas que c'Est un bogue?

Merci

2 réponses

Avatar
Jacky
Bonsoir,

Une solution simple de AV...
Pas d'obligation pour la photo de la grand-mère ;o)
'--------------
Il y a une soluce simple : dessiner une zone de texte, la barbouiller, la
positionner et écrire dedans à volonté, mettre la photo de ta grand-mère....
puis la nommer (sélection bordure-->barre des noms--> Ex : "laZN"

'En début de ta macro :
ActiveSheet.DrawingObjects("laZN").Visible = True
'blablabla.....
'en fin de macro :
ActiveSheet.DrawingObjects("laZN").Visible = False
'-----------

Salutations

JJ

"Érico" a écrit dans le message de news:

Bonjour,

J'ai une macro qui prend une dizaine de secondes à exécuter et j'aimerais
savoir si c'est faisaible de mettre un message à l'écran que la macro est
en cours pour pas que la personne qui voit celà, pense pas que c'Est un
bogue?

Merci



Avatar
JB
Bonjour,

Affiche un pourcentage du temps d'exécution:

http://cjoint.com/?fAgkUWyDCG

Sub matache()
n = 3000
For i = 1 To n
For j = 1 To 100000

Next j
Sheets("feuil1").Range("B1") = i / n
Next i
End Sub


Affiche le temps d'exécution d'une tâche:

http://cjoint.com/?fAgjQYkSJV

Dim temps
Dim chrono As Double

Sub majHeure()
Sheets("feuil1").Range("a1") = chrono / 86400
chrono = chrono + 1
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End Sub

Sub matache()
chrono = 0
majHeure
n = 3000
For i = 1 To n
DoEvents
For j = 1 To 100000

Next j
Sheets("feuil1").Range("B1") = i / n
Next i
Sheets("feuil1").Range("a1") = "Fin"
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

Cordialement JB