IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

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


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut Affichage erroné d'un msgbox lors de la relance d'1 macro
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    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

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 258
    Par défaut
    Plusieurs éléments :
    1/ Quel est le msgbox qui réapparait?
    2/ Généralement, ce genre de probleme est résolu en forcant la variable qui déclenche l'événement.

    Si la msgbox se déclenche quand la variable x= true alors remettre x=false apres l'avoir executé.

  3. #3
    Membre expérimenté
    Inscrit en
    Juillet 2007
    Messages
    239
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 239
    Par défaut
    Bonjour,

    Sans vouloir critiquer , a mon avis , il faut revoir la façon de faire.

    La fonction msgbox a un usage bien précis.
    On trouve sur le net des méthodes pour temporiser la réponse.

    La méthode qui consiste à faire des sendkeys est à réserver pour communiquer avec une application 'non standard' .
    Faire des sendkeys dans excel et mesurer le temps de réaction , ça reste aléatoire , imagine qu'il y a une sauvegarde du fichier , des lenteurs réseaux , une charge de la machine ....

    Il vaut mieux prévoir une analyse plus précise de la problèmatique pour adopter une architecture plus sophistiquée.

  4. #4
    Membre éclairé
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2011
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2011
    Messages : 571
    Par défaut
    Salut à tous

    Merci pour vos interventions.
    COCONUT DIT : Quel est le messga qui réaparait.
    C'est le même message qui réapparaît.
    Si je vous ai bien compris, je dois procéder ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    noaction = True
    noaction = False
    CODE FACILE :si l'enregistrement auto du fichier peut avoir des effets sur le bon fonctionnement du sendkeys, pouvez-vous trouvez une solution à cela tout en sachant que je prefère les sauvegardes manuelles?
    Merci pour tout.
    Je reste à l'écoute si vous venez à trouvre autres solutions.

Discussions similaires

  1. Faire apparaître un msgbox lors de la suppression de doublons
    Par dandy87 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/11/2010, 18h32
  2. Réponses: 2
    Dernier message: 11/12/2007, 14h58
  3. comment empêcher l'affichage de l'adresse ip lors d'un ping ?
    Par vacknov dans le forum Serveurs (Apache, IIS,...)
    Réponses: 3
    Dernier message: 25/09/2007, 18h03
  4. Affichage valeur de la variable lors du debug
    Par thanae dans le forum Access
    Réponses: 1
    Dernier message: 03/12/2005, 16h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo