il y a plus simple, tu utilises la propriété EnableCancelKey comme ceci, et en plus tu peux gérer les erreurs et même reprendre la boucle si tu le désires :
Sub Interruption()
Dim Reponse, Bcle%
On Error GoTo fin
Application.EnableCancelKey = xlErrorHandler
Do
'pour passer le temps...
Bcle = IIf(Bcle = 0, 1, 0)
Loop
Exit Sub
fin:
If Err = 18 Then
Reponse = MsgBox("Annuler la procédure ?", vbYesNo, "BcleTi")
If Reponse = vbNo Then Resume
ElseIf Err <> 0 Then
MsgBox "Erreur durant le traitement", vbExclamation, "BcleTi"
End If
End Sub