L'étrange c'est souvent juste un truc qu'on n'a pas compris.
Non, là c'est plus de l'étrange, c'est du surnaturel, du paranormal, du vaudou !
En fait, ça plante dès la première itération, pour i=1.
Voilà la déclaration de mon tableau :
Dim sortieIndice(1 To 721) As Double
Et voilà ma rustine (dont je suis assez fier
) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Dim iter As Long
Dim attente As Long
Dim maxattente As Long
' récupération de la fréquence processeur pour adapter l'attente
Dim freq As Long
freq = frequence_proc()
maxattente = CLng((5 / 0.6) * freq - 5) 'équation de droite établie empiriquement
For iter = 1 To UBound(sortieIndice)
For attente = 0 To maxattente 'permet de faire une petite pause pour éviter le plantage
DoEvents
Sleep 1
Next attente
If sortieIndice(iter) <> 0 Then 'premier élément non-nul, à mettre à 0
sortieIndice(iter) = 0
Exit For
End If
Next iter |
la fonction de récupération de la fréquence du processeur :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| Function frequence_proc() As Long
Dim objs As Object
Dim obj As Object
Dim WMI As Object
Dim lAns As Long
Set WMI = GetObject("WinMgmts:")
Set objs = WMI.InstancesOf("Win32_Processor")
lAns = 0
For Each obj In objs
If obj.MaxClockSpeed > lAns Then
lAns = obj.MaxClockSpeed
End If
Next
frequence_proc = lAns / 1000 ' fréquence en GHz
End Function |
et la définition de Sleep :
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Partager