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

Ericbzc
Messages postés
17
Date d'inscription
lundi 24 novembre 2008
Dernière intervention
13 décembre 2010
- 23 juil. 2010 à 03:26 - Dernière réponse : Ericbzc
Messages postés
17
Date d'inscription
lundi 24 novembre 2008
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 

Votre réponse

3 réponses

Meilleure réponse
Renfield
Messages postés
17308
Date d'inscription
mercredi 2 janvier 2002
Dernière intervention
22 août 2018
- 23 juil. 2010 à 04:37
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

Merci Renfield 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de Renfield
foliv57
Messages postés
423
Date d'inscription
vendredi 17 novembre 2006
Dernière intervention
15 juillet 2014
- 25 juil. 2010 à 11:00
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
Ericbzc
Messages postés
17
Date d'inscription
lundi 24 novembre 2008
Dernière intervention
13 décembre 2010
- 26 juil. 2010 à 01:46
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.