Option Explicit
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Const Tempo = 0
Sub Parcourir()
Dim xy(1 To 999, 1 To 2), Npoints&, x0 As Double, y0 As Double
Dim shp As Shape, pnt As Point, crt As Series
Dim i&, T0 As Single
'initialisation
Set shp = ActiveSheet.Shapes("Oval 1")
x0 = Worksheets("Feuil1").ChartObjects(1).Left
y0 = Worksheets("Feuil1").ChartObjects(1).Top
shp.Left = x0: shp.Top = y0
Set crt = Worksheets("Feuil1").ChartObjects(1).Chart.SeriesCollection(1)
'calcul des coordonnées successives
Npoints = crt.Points.Count
For i = 1 To Npoints
Set pnt = crt.Points(i)
xy(i, 1) = pnt.Left + x0: xy(i, 2) = pnt.Top + y0
Next i
'parcours de la courbe
T0 = Timer
For i = 1 To Npoints
shp.Left = xy(i, 1): shp.Top = xy(i, 2)
shp.Visible = msoCTrue
DoEvents
Sleep Tempo
Next i
DoEvents
Sleep Tempo
'Fin et affichage
T0 = Timer - T0
shp.Left = x0: shp.Top = y0
MsgBox "Durée parcours : " & Format(T0, "0.000") & " sec. " & vbLf & vbLf & _
" soit " & Format(T0 / Npoints, "0.000") & " sec. par point"
End Sub