Temporiser le déroulement d'une Macro ?

  • Initiateur de la discussion Patrick
  • Date de début
P

Patrick

Guest
Bonjour à tous.
Je souhaiterais réaliser la macro si dessous, mais je voudrais que les
bannières s'affiche lentement, avec un laps de temps de 3 secondes entre
chaque affichage par exemple.
Comment peut -on faire ?
Merci de votre aide
Patrick


Sub Macro1()
' Macro enregistrée le 16/06/03 par Patrick
y = 10
x = 10
For an = 1953 To 2003
ActiveSheet.Shapes.AddShape(msoShapeVerticalScroll, y, x, 70.5, 64.5) _
.Select
Selection.Characters.Text = an
With Selection.Characters(Start:=1, Length:=4).Font
.Name = "Arial"
.FontStyle = "Normal"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
End With
y = (an - 1952) * 10
x = (an - 1952) * 5
'COMMENT TEMPORISER L'AFFICHAGE DES BANIERES ?
Next an
Range("A1").Select
End Sub
 
V

Vériland

Guest
Bonsoir Patrick et le forum,

place ceci ---> Attente (5) à l'endroit souhaité dans ta macro...

mais pour cela il faut aussi que tu aies cette macro à la suite...

'macro time pour Patrick
'Vériland
'pour Excel Downloads (http://www.Excel-downloads.com)


Sub Attente(seconde As Integer)
Dim Start, PauseTime
PauseTime = seconde
Start = Timer
Do While Timer < Start + PauseTime
DoEvents
Loop
End Sub


Attente (5) va ainsi appeler la macro Attente appliquant un délai de 5 secondes...enfin aproximativement...tu peux en mettre autant que tu veux...loool

A+Veriland.gif


PS : Macro à copier depuis le forum auquel cas tu risques d'avoir les attributs du post dans la macro...lol
 
T

Ti

Guest
Après la solution de Vincent qui interrompt complètement le fonctionnement d'Excel (mais selon ce que tu veux faire, c'est plus ou moins gênant), voici une procédure qui fait ça en rendant la main après chaque appel, mais attention, une fois qu'elle est lancée, tu ne peux plus interrompre la boucle avant l'exécution complète, ou plutôt elle se relancera d'elle-même toutes les 3 secondes jusqu'à l'an 2003.
(J'ai viré tout ce qui était inutile dans ta macro ci-dessus)

Option Explicit
'Ti
Sub AfficheShape()
Dim X As Long, Y As Long
Static An As Long
An = IIf(An = 0, 1953, An + 1)
Y = (An - 1952) * 10
X = (An - 1952) * 5
ActiveSheet.Shapes.AddShape(msoShapeVerticalScroll, Y, X, 70.5, 64.5).Select
Selection.Text = An
[A1].Activate
If An < 2003 Then
Application.OnTime Now + TimeValue("00:00:03"), "AfficheShape"
Else
An = 0
End If
End Sub
 

Statistiques des forums

Discussions
314 095
Messages
2 105 816
Membres
109 436
dernier inscrit
alex.972