API SolidWorks - Interruption macro via touche Escape

Bonjour à tous,

Je souhaite pouvoir afficher un MsgBox si l'utilisateur presse la touche "ESCAPE" pendand que ma macro tourne.

J'ai ajouté au début de ma macro:

     Excel.Application.OnKey "{ESC}", "Escape"

Et défini le MsgBox dans le Sub suivant:

Sub Escape()
        If MsgBox("Arreter la macro?", vbYesNo + vbQuestion) = vbYes Then
            Exit Sub
        Else
            Resume  'Reprend l'execution
        End If
End Sub

 

Mais cela ne fonctionne pas. Est-ce que quelqu'un aurait une idée?

Merci d'avance.

1 « J'aime »

Bonjour,

Vous êtes sur SW ou sur Excel ?

N'est ce pas un peu dangereux de pouvoir stopper le code à n'importe quel moment ? Vous ne faites que de la lecture sur vous fichiers SW j'espère ?

A plus...

1 « J'aime »

Bonjour,

Si le code n'est pas lancé il ne se passe rien. J'ai testé avec juste Application.OnKey et ça fonctione très bien.

Par contre il faut que cette fonction soit active en permanence donc probablement à placer dans la feuille où le contrôle des actions de l'utilisateur doit se faire.

1 « J'aime »

@Remrem

Je suis sur SW mais Application.OnKey fait partie de la Library Excel. Je ne fais pas que de la lecture mais ma macro communique avec notre ERP via des WebServices...

@Cyril.f

Ca fonctionne depuis une macro SW ou Excel?

1 « J'aime »

Excel, pas testé sur SW.

A mon avis il ne sera pas possible d'utiliser les procédures excel dans SW. Après une recherche rapide, regarde au niveau de vbkey qui s'applique sur les forumulaires.

Merci Cyril.

Cela fonctionne comme désiré.

Sub Control_KeyDown()
   
    DoEvents
    If (GetAsyncKeyState(vbKeyEscape)) Then
        If MsgBox("Arreter la macro?", vbYesNo + vbQuestion) = vbYes Then
            End
        Else
        End If
    End If
        
End Sub

De rien.