Ben il suffit de faire un sémaphore pour éviter les problèmes d'appel
consécutifs suite à un appel de fonction par un événement...
Je persiste à dire que le DoEvents permet quand même d'obtenir plus de
rapidité dans une longue boucle car il évite de bloquer le
système !
Dans des petites fonctions, je suis d'accord que le DoEvents ralentit l'éxécution, mais dans une longue fonction y'a pas photo !
Donc une petite sémaphore devrait régler le problème de dépassement de pile :
Public Function Calcul_Dominant_1(Valeur_Date As String) As String
Static bFinish As Boolean
if Not bFinish Then Exit function
if bFinish Then let bFinish = False
Dim MySql As New ADODB.Recordset
Call MySql.Open("SELECT V_Dir FROM Tab_vents WHERE jours_r='" &
Left(Valeur_Date, 4) & "-" & Mid(Valeur_Date, 6, 2) & "-"
& Mid(Valeur_Date, 9, 2) & "' AND V_Moy <> 0 ", cn,
adOpenDynamic)
Dim Tmp As String
Dim G As Integer, H As Integer
Dim I As Integer
I = 0
For G = 0 To 15
Nombre_D(G) = 0
Next G
While Not MySql.EOF
Tmp =
Conv_Vent_Num_Dir(Val(MySql!V_Dir)) ' retourne le nom de la direction
par rapport a l'angle
For G = 0 To 15
If Direction_D(G) = Tmp Then Nombre_D(G) = Nombre_D(G) + 1
Next G
MySql.MoveNext
DoEvents
Wend
MySql.Close
H = 0
For G = 0 To 15
If Nombre_D(G) > H Then
Calcul_Dominant_1 = Direction_D(G)
H = Nombre_D(G)
End If
Next G
Let bFinish = True
End Function
DarK Sidious
Un API Viewer (pour le VB, VB.NET, C, C# et Delphi) : www.ProgOtoP.com/popapi/