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

  • Initiateur de la discussion Initiateur de la discussion zombe
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
235
Réponses
4
Affichages
177
Réponses
8
Affichages
466
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
649
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
169
Retour