Private Declare Function SetTimer& Lib "user32" _
(ByVal hwnd&, ByVal nIDEvent&, ByVal uElapse&, ByVal lpTimerFunc&)
Private Declare Function KillTimer& Lib "user32" _
(ByVal hwnd&, ByVal nIDEvent&)
'#############################################################
Public Const NOM_FEUILLE As String = "test" '### à adapter ###
'#############################################################
Public MonImage As Shape
Public MaFeuille As Worksheet
Public OnTimer&
Dim OldHscroll As Long
Dim OldVscroll As Long
Private Sub VisibleRangeWinProc()
Dim WD As Window
If ActiveSheet Is MaFeuille Then
If Not MonImage Is Nothing Then
Set WD = ActiveWindow
If WD.ScrollColumn <> OldHscroll Then
MonImage.Left = WD.VisibleRange.Cells(1, 1).Left
OldHscroll = WD.ScrollColumn
End If
If WD.ScrollRow <> OldVscroll Then
MonImage.Top = WD.VisibleRange.Cells(1, 1).Top
OldVscroll = WD.ScrollRow
End If
End If
End If
End Sub
Sub RunTimer(Delai&)
If OnTimer& > 0 Then OffTimer
OnTimer& = SetTimer(0, 0, ByVal Delai&, AddressOf VisibleRangeWinProc)
End Sub
Sub OffTimer(Optional dummy As Byte)
If OnTimer& > 0 Then
OnTimer& = KillTimer(0&, OnTimer&)
OnTimer& = 0
End If
End Sub