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 :

Question desactivation msgbox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut Question desactivation msgbox
    Bonjour les amis,

    Je viens de recevoir un tool d'un consultant qui fait des calculs qui prennent des heures...

    Je suis en train de construire un tool qui me permet de lancer une suite de calculs à la suite en faisant appel à ce classeur.

    A la fin des calculs j'ai plusieurs msgbox qui s'affichent et qui stoppent donc ma macro.. Ce qui m'embête, je pourrais toucher au code pour virer ces msgbox mais j'aimerais laisser ce tool tel quel.

    Des idées?

    Merci

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    tu peux légèrement modifier le code du tool en lui passant un paramètre booléen pour afficher ou non les messages …

  3. #3
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Bonne idée, cependant le tool fait dans les 20k lignes de code et me plonger dedans serait assez chiant!

    Qui dit mieux?

    Il n'y aurait pas moyen de détecter un affichage de msgbox, ou inhiber leur affichage, ou demander que le code continue ?

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Sinon si c'est toujours le même nombre de messages affichés et toujours appuyer sur le même bouton par défaut,
    il faudrait injecter dans le buffer clavier autant de retours …

    Mais pas toujours fiable avec un applicatif VBA.

  5. #5
    Inactif  
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    1 733
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2012
    Messages : 1 733
    Par défaut
    Les temps des calculs sont très variables.. C'est toujours deux msgbox avec un ok seulement.. donc oui mais il faut détecter leur affichage

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut Exemple de fermeture de MsgBox indésirable
    Bonjour,

    Si cela peut aider, voici un exemple de fermeture de MsgBox indésirable.
    Le code ci-dessous ferme la MsgBox indésirable, l'important est de connaître son titre car son identification se fait par lui.

    Copiez le code suivant dans un module standard
    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
    '### Adapter la constante selon le Titre de la MsgBox ###
    Private Const TITRE_MSGBOX As String = "zaza"
    '########################################################
     
    Dim OnTimer&
     
    Private Declare Function SendMessage& Lib "user32" Alias "SendMessageA" ( _
      ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
    Private Declare Function FindWindow& Lib "user32" Alias "FindWindowA" ( _
      ByVal lpClassName As String, ByVal lpWindowName As String)
    Private Declare Function SetTimer& Lib "user32" ( _
      ByVal hwnd As Long, ByVal nIDEvent As Long, _
      ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    Private Declare Function KillTimer& Lib "user32" ( _
      ByVal hwnd As Long, ByVal nIDEvent As Long)
    Private Declare Function GetWindowText& Lib "user32" Alias "GetWindowTextA" ( _
      ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long)
     
     
    Const WM_CLOSE As Long = &H10
     
    '___________________________
    Private Sub CloseMsgBox()
    Dim HwndMsgBox&
    HwndMsgBox& = FindWindow(vbNullString, TITRE_MSGBOX)
    Dim Ch$
    Dim Tampon&
    Dim reponse&
    Ch$ = Space(1024)
    Tampon& = Len(Ch$)
    reponse& = GetWindowText(HwndMsgBox&, Ch$, Tampon&)
    Ch$ = Trim(Replace(Ch$, Chr$(0), ""))
    If Ch$ = TITRE_MSGBOX Then
      SendMessage HwndMsgBox&, WM_CLOSE, 0, ByVal 0&
    End If
    End Sub
    '___________________________
    Private Sub RunTimer(Delai&)
    If OnTimer& > 0 Then OffTimer
    OnTimer& = SetTimer(0, 0, ByVal Delai&, AddressOf CloseMsgBox)
    End Sub
    '___________________________
    Private Sub OffTimer()
    If OnTimer& > 0 Then
      OnTimer& = KillTimer(0&, OnTimer&)
      OnTimer& = 0
    End If
    End Sub
    '___________________________
    Sub monTraitement()
     
      '*** Code traitement avant l'apparition du message ***
     
    '///// à ajouter à votre code ////
    OnTimer& = 0
    Call RunTimer(Delai:=1000)  'j'ai mis le délai à 1 seconde pour voir ce qui se passe (1000 millisecondes)
    'Call RunTimer(Delai:=0)
     
    '---- Ici : simulation d'un message indésirable (à virer)----
    MsgBox prompt:="coucou", Title:="zaza"
    '------------------------------------------------------------
     
    Call OffTimer
    '/////////////////////////////////
     
      '*** Code traitement après fermeture du message ***
     
     
    End Sub
    Lancez la procédure monTraitement pour faire un test.

  7. #7
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut





    Tout dépend du nombre de fenêtres avec différends titres pour ne pas trop ralentir ses 20k lignes de code …

Discussions similaires

  1. [XL-2007] Question userform au lieu de msgbox
    Par hdisnice dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 14/09/2011, 09h49
  2. [XL-2003] Question pour une msgbox
    Par Tom24 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/11/2009, 10h29
  3. question sur les boutons d'une MsgBox
    Par 4rn0_o dans le forum IHM
    Réponses: 2
    Dernier message: 31/08/2007, 14h09
  4. Desactiver les MsgBox
    Par pedrodmst dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/07/2007, 09h41
  5. Question / réponse MsgBox.
    Par Kiwix dans le forum Access
    Réponses: 1
    Dernier message: 26/01/2007, 16h02

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