Désactiver (ou répondre automatiquement...) à un msgbox [Résolu]

Messages postés
17
Date d'inscription
lundi 24 novembre 2008
Statut
Membre
Dernière intervention
13 décembre 2010
- - Dernière réponse : Ericbzc
Messages postés
17
Date d'inscription
lundi 24 novembre 2008
Statut
Membre
Dernière intervention
13 décembre 2010
- 26 juil. 2010 à 01:46
Bonjour,

j'ai fait pas mal de recherche sur le sujet, mais je n'ai pas trouvé de rép. satisfaisante.

Le pb est t simple. je cherche une fonction à la display_alerts false mais pour les msgbox !

En fait j'ai des tas de petites macros qui affichent à la fin de la procédure "Opération terminée". et j'ai une macro principale qui appelle toutes ces petites macros.

Du coup l'exécution de la grande macro est tout le temps interrompue et nécessite l'intervention de l'utilisateur.

Peut-on désactiver l'affichage des msgbox ?

Peut-on envoyer une réponse automatique suite à un msgbox ? (genre sendkeys)

Autre idées ?

je peux tjs les supprimer ou mettre une variable public Affich = true/false et mettre un IF avant chaque msgbox "op. terminée" mais si je peux, je souhaite éviter ces méthodes.

Merci d'avance
Eric
Afficher la suite 

3 réponses

Meilleure réponse
Messages postés
17283
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
21 juillet 2019
56
3
Merci
L'approche naturelle est bien de mettre un Flag est de conditionner l'apparition des MsgBox...

de toutes facon, meme si tu trouvais un moyen de les fermer automatiquement, a quoi bon ? Il te faudrait ajouter un test...


Enfin, je pense que ton code a un souci de structure.
Le MsgBox doit etre mis dans la macro qui se déclenche sur action de l'utilisateur, pas dans la procédure de traitement...

en clair :

Private Sub Bouton1_Click()
    If LanceTraitement("Param1") Then
        MsgBox "OK"
    Else
        MsgBox "KO"
    End If
End Sub

Private Function LanceTraitement(Param as String) as Boolean
    [...]
End Function


Ainsi, si tu as besoin de faire appel a LanceTraitement ailleurs, tu n'aura pas de Msgbox d'office...




Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 111 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Renfield
Messages postés
423
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
4
0
Merci
Bonjour,

+1 pour ce que dit Renfield.

La facon la plus propre est de gérer l'affichage ou non du msgbox.

Par contre, si vous avez vraiment besoin d'afficher des informations multiples tout au long de votre traitement, la solution la plus propre est de créer un formulaire "Informations", affiché de manière non modale au début de l'exécution, contenant un TextBox multiligne.

Ensuite il suffirait d'ajouter les messages (vos msgbox actuellement) au TextBox au fur et à mesure.

L'utilisateur aura comme ca un récap de tous les messages.
Commenter la réponse de foliv57
Messages postés
17
Date d'inscription
lundi 24 novembre 2008
Statut
Membre
Dernière intervention
13 décembre 2010
0
Merci
Merci bcp à tous les 2 pr vos réponses.

Je retiens donc que un module doit exécuter un code sans interruption aucune... Tous les paramètres étant précisés dans le code qui déclenche l'action (ex : bouton_click) et donc dans le userform.

Je suppose que de même, il est également plus propre de coder les ws.unprotect, application.enableevents, et application.screenupdating au niveau de l'action ??

Merci encore.
Eric
Commenter la réponse de Ericbzc