Affichage erroné d'un msgbox lors de la relance d'1 macro

zombe

XLDnaute Occasionnel
Salut le forum

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.
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.
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
 

Discussions similaires

Réponses
6
Affichages
248
Réponses
4
Affichages
213

Statistiques des forums

Discussions
312 304
Messages
2 087 065
Membres
103 451
dernier inscrit
Souleymane