Code arrêt macro à parfaire

Salut Lermite et le forum

Tu avais pu integrer un code dans ma macro dont l'objet était de pouvoir arrêter la macro lorsqu'elle est en cours d'exécution.

J'ai des soucis avec ce code et je ne sais pas si vous pouvez revoir.

Au cas ou quelqu'un d'autre aurait une solution, je suis prenable. (lire message ci-dessous)

Dans le code ci-dessous, avec la touche ESC, je peux arrêter la macro en cours d’exécution.

L'arrêt de la macro nécessite une confirmation par msgbox. Ce qui se déroule bien.

Le problème survient lorsque je relance à nouveau la macro après l'avoir arrêtée.

Dans ce cas, le msgbox réapparaît encore quand bien même j’ai pas demandé l’arrêt de la macro par la touche ESC.

Cet affichage anormale du msgbox entraine le non fonctionnement de la macro.

Ce qui remet en cause la qualité du travail qui a été réalisé donc je cherche une solution au problème du msgbox.

Qu’est ce qui entraine son apparition et quelle solution pourrait être trouvée?

Merci de me tirer de l'aubaine comme d'habitude svp.

NB: le 2è code est une suite logique du 1er code.

Option Explicit
Public Var
Declare Function GetKeyState Lib "user32" (ByVal nvirtkey As Long) As Integer
Dim noaction As Boolean

Sub activePack()
Dim I As Integer, MemJ8 As Integer
Var = 0
'On Error GoTo gestionerreur
If MsgBox("ASSUREZ-VOUS QUE VOTRE", vbYesNo, "Demande de confirmation") = vbYes Then
noaction = False
AppActivate "ICI NOM DU LOGICIEL"

'POSITIONNEZ-VOUS SUR LE MENU SIMPLIFIE IGOR SOUHAITE
For I = 3 To 6
    SendKeys Cells(I, 10).Value, True
    attendre 0.6
    If noaction Then Exit Sub
    SendKeys "~"
    attendre 1
    If noaction Then Exit Sub
Next
    SendKeys "N" & Chr(13), True
    attendre 0.6
    If noaction Then Exit Sub
    SendKeys "{LEFT}"
    SendKeys "{ENTER}"
    attendre 1
    If noaction Then Exit Sub

For I = 7 To 45

'POSITIONNEZ-VOUS SUR LE MENU SIMPLIFIE IGOR SOUHAITE
'For I = 3 To 45
' Si I = 8 alor on mémorise la valeur de la cellule
If I = 8 Then MemJ8 = Range("J8").Value
' Si I = 17 ou 18
' si I = 7

If I = 17 Or I = 18 Then
' Si la veleur mémorisée est 3
If MemJ8 = 3 Then

' On inscrit le nom et le prénom du mari
SendKeys Cells(I, 10).Value, True
attendre 0.6
If noaction Then Exit Sub
SendKeys "~"
attendre 1
If noaction Then Exit Sub
End If
Else
' Si I à une autre valeur que 16 ou 17
SendKeys Cells(I, 10).Value, True
attendre 0.6
If noaction Then Exit Sub
SendKeys "~"
attendre 1
If noaction Then Exit Sub
End If
Next
    SendKeys "+{F3}"
    attendre 1
    If noaction Then Exit Sub
For I = 46 To 53
    SendKeys Cells(I, 10).Value, True
    attendre 0.6
    If noaction Then Exit Sub
    SendKeys "~"
    attendre 1
    If noaction Then Exit Sub

Next
    SendKeys "+{F6}"
    attendre 1
    If noaction Then Exit Sub

'For I = 51 To 51
    'SendKeys Cells(I, 10).Value, True
    'attendre 0.6
    'SendKeys "~"
    attendre 1
End If
Exit Sub
gestionerreur:
MsgBox "fichier non ouvert ou réduit dans la barre des tâches : abandon"

End Sub

Sub attendre(sec%)
Dim deb&, fin&
deb = Timer
fin = deb + sec%
Do Until Timer >= fin
DoEvents
Var = GetKeyState(27)
If Var > 0 Then
If MsgBox("Confirmation arrêt macro", vbOKCancel) Then
SendKeys Chr(27)
noaction = True
Var = 0
Exit Sub
End If
End If
Loop
End Sub
Dernière édition par zombe le 17 Juil 2012,

Bonjour zombe le forum

essayes ainsi

a+

papou

tu remplaces comme suit tous les

If noaction Then Exit Sub

par

If noaction Then noaction=0:Exit Sub

Salut Paritec et le forum

Merci pour votre proposition.

Je l'a testée mais ca ne marche pas.

Voici les constats:

Lorsque je fais ESC pour arrêter la macro, en voulant confirmer par la souris ou la touche ENTREE (OUI ou NON), je vois que ces commandes ne permettent pas la confirmation. Lorsque je click sur OUI, il colle valeur de la cellule dans la cellule active. si je click encore une 2è fois, il efface la valeur collée et ainsi de suite. Il en ait de même qu'en cliquant sur NON.

Finalement, je suis obligé d'utiliser la touche ESC ; ce qui continue le collage dans la cellule active.

Normalement en cliquant sur OUI avec la souris ou par la touche ENTREE, cela devrait arrêter la macro ou si je choisi de cliquer sur NON, cela devrait permettre à la macro de continuer de fonctionner sur le logiciel et non pas sur les cellules excel.

N.B : lorsque j'interrompt la macro par ESC, en voulant qu'elle continue de fonctionner(c'est à dire que je ne confirme pas l'arrêt) le remplissage ne se fait pas sur le logiciel mais sur les cellule excel.

Peut-on en tenir compte c'est à dire lorsqu'il y'a demande d'arrêt qui n'est pas confirmée, qu'en voulant continuer son cours de fonctionnement, que le logiciel soit automatiquement activé pour que le remplissage puisse s'y continuer.

Merci pour l'aide

Rechercher des sujets similaires à "code arret macro parfaire"