Je dois remplir un tableau stockéata60 à partir d'une cellule dynamique A1 de la feuille6 toutes les trente secondes. Ce tableau doit être réinitialisé à zéro toutes les 30 minutes. La boîte de message affichera un message si la différence entre les maxima et les minima est supérieure à 7. J'ai 4 sous-types pour cette activité. Je reçois une erreur d'exécution 9 subscript out of range. L'erreur apparaît à la première ligne de ma_procédure. Ci-dessous le code :
Public RunWhen As Double
Public Const cRunWhat = "my_Procedure"
Dim I As Integer, n50max As Double, n50min As Double, Max_Min As Double, storedata60() As Double
Option Explicit
Sub StartTimer()
RunWhen = Now + TimeSerial(0, 0, 30)
Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
schedule:=True
End Sub
Sub StopTimer()
On Error Resume Next
Application.OnTime earliesttime:=RunWhen, _
procedure:=cRunWhat, schedule:=False
End Sub
Sub my_Procedure()
storedata60(I) = ThisWorkbook.Sheets("Sheet6").Range("A1").Value
n50max = Application.WorksheetFunction.Max(storedata60)
n50min = Application.WorksheetFunction.Min(storedata60)
Max_Min = n50max - n50min
If Max_Min >= 7 Then MsgBox Max_Min
I = I + 1
ReDim storedata60(I)
If I = 60 Then Call reset_zero
If I <> 60 Then Call StartTimer
End Sub
Sub reset_zero()
I = 0
Call StartTimer
End Sub