Recursivite avec on time

Bonjour,

je vous explique rapidement quel est le but de la macro excel.

Un logiciel exporte des informations dans différents fichiers excel toutes les 30 secondes. Le but de la macro est de compiler les informations pour pouvoir conserver un historique des valeurs exportées.

Mon programme fonctionne bien mais arrivé a un nombre d'itération de la fonction ( environ 3000 ) la macro s’arrête d'elle même.

La fonction en question :

Function addData(iSonde As Integer)
    Dim book As Workbook
    Dim iLastLane As Integer
    Application.ScreenUpdating = False
    If Sonde.aSonde(iSonde).Statut = 1 Then
        If openFileName(iSonde) = "noFile" Then
            errorOnProcess (iSonde)
        ElseIf openFileName(iSonde) = "tooMuchFile" Then
            errorOnProcess (iSonde)
        Else
            On Error Resume Next
            Set book = Application.Workbooks.Open(openFileName(iSonde))
            If Err.Number <> 0 Then
                errorOnProcess (iSonde)
            Else
                iLastLane = aSonde(iSonde).ResultFile.worksheets(1).Range("A" & Rows.Count).End(xlUp).Row + 1
                aSonde(iSonde).ResultFile.worksheets(1).Cells(iLastLane, 1) = Left(CStr(book.worksheets(1).Cells(2, 1)), InStr(1, CStr(book.worksheets(1).Cells(2, 1)), ";") - 1)
                aSonde(iSonde).ResultFile.worksheets(1).Cells(iLastLane, 2) = Left(CStr(book.worksheets(1).Cells(5, 1)), InStr(1, book.worksheets(1).Cells(5, 1), ";") - 1)
                aSonde(iSonde).ResultFile.worksheets(1).Cells(iLastLane, 3) = Left(CStr(book.worksheets(1).Cells(10, 1)), InStr(1, book.worksheets(1).Cells(10, 1), ";") - 1)
                For i = 1 To 3
                    void = ApiDesignSheet.drawBorderLight((aSonde(iSonde).ResultFile.worksheets(1).Cells(iLastLane, i)))
                Next i
                book.Close
                Application.DisplayAlerts = False
                    aSonde(iSonde).ResultFile.SaveAs (Sonde.fileName(iSonde, Sonde.aSonde(iSonde).reference))
                Application.DisplayAlerts = True
                dDate = Now + TimeValue(sDelai)
                Sonde.defineVariance (iSonde)
                Select Case iSonde
                    Case 0
                        Application.OnTime dDate, "addData0"
                    Case 1
                        Application.OnTime dDate, "addData1"
                    Case 2
                        Application.OnTime dDate, "addData2"
                    Case 3
                        Application.OnTime dDate, "addData3"
                    Case 4
                        Application.OnTime dDate, "addData4"
                    Case 5
                        Application.OnTime dDate, "addData5"
                    Case 6
                        Application.OnTime dDate, "addData6"
                    Case 7
                        Application.OnTime dDate, "addData7"
                    Case 8
                        Application.OnTime dDate, "addData8"
                    Case 9
                        Application.OnTime dDate, "addData9"
                    Case 10
                        Application.OnTime dDate, "addData10"
                    Case 11
                        Application.OnTime dDate, "addData11"
                    Case 12
                        Application.OnTime dDate, "addData12"
                    Case 13
                        Application.OnTime dDate, "addData13"
                    Case 14
                        Application.OnTime dDate, "addData14"
                    Case 15
                        Application.OnTime dDate, "addData15"
                    Case 16
                        Application.OnTime dDate, "addData16"
                    Case 17
                        Application.OnTime dDate, "addData17"
                    Case 18
                        Application.OnTime dDate, "addData18"
                    Case 19
                        Application.OnTime dDate, "addData19"
                    Case 20
                        Application.OnTime dDate, "addData20"
                    Case 21
                        Application.OnTime dDate, "addData21"
                    Case 22
                        Application.OnTime dDate, "addData22"
                    Case 23
                        Application.OnTime dDate, "addData23"
                    Case 24
                        Application.OnTime dDate, "addData24"
                    Case Else
                End Select
            End If
        End If
    End If
    Application.ScreenUpdating = True
End Function

addDataxx appelle tout simplement addData(xx)

Je suppose que c'est une sorte de sécurité pour se protéger d'une boucle infinie. Avez-vous une idée pour pouvoir dépasser cette valeur ? le processus doit être continu sur une période d'un mois.

D'avance merci pour vos réponses.

Personne n'a été confronté à ce problème ?

Le problème est assez dérangeant car nous perdons assez souvent des informations suite à ce problème.

Rechercher des sujets similaires à "recursivite time"