Make your own free website on Tripod.com

Home
Home

--- Soumis par Dev Ashish---

Interrompre en cours de boucle.

(Q)    Peut-on  interrompre un code, alors qu'il boucle, en utilisant le clavier?

(A)    On peut utiliser la fonction API GetAsyncKeyState à cet effet.  Voici un exemple d'une boucle qui ajoute n enregistrements à l'intérieur d'une boucle, mais où on peut l'interrompre en appuyant sur la touche d'échapement (Escape).

'************ Code Start ***********
Private Declare Function apiGetAsyncKeyState Lib "user32" _
        Alias "GetAsyncKeyState" _
        (ByVal vKey As Long) _
        As Integer
        
Private Const VK_ESCAPE = &H1B

Function fBreakInCode()
Dim boolEsc As Boolean
Dim db As Database
Dim rs As Recordset
Dim i As Integer

    Set db = CurrentDb
    Set rs = db.OpenRecordset("Table Quelconque", dbOpenDynaset)
    For i = 1 To 20000
        If apiGetAsyncKeyState(VK_ESCAPE) Then
              If MsgBox("Vous avez appuyé Escape! Désirez-vous arrêter le code?", _
                         vbYesNo, "Confirmation requise") = vbYes Then
                          Exit For
              End If
        End If
        With rs
            .AddNew
                !Field1 = i
                !Field2 = i * 2
                !Field3 = i * 3
            .Update
            i = i + 1
        End With
    Next
    rs.Close
    Set rs = Nothing
    MsgBox "Fini.  On a ajouté " & i & " enregistrements!"
End Function
'*************** Code End ************