Poursuivre ou annuler une macro

Résolu/Fermé
arnaud74 - 13 nov. 2012 à 12:08
 pecan056 - 25 juil. 2022 à 11:59
Bonjour,
J'ai créé au départ de ma macro une msgbox pour informer les utilisateurs que l'exécution prendra un temps conséquent.
Est-il possible de créer un bouton "Annuler" dans cette msgbox au même titre que le "OK" pour interrompre l'exécution si l'utilisateur n'a pas le temps nécessaire dispo?

Merci pour votre aide

A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 13/11/2012 à 13:00
Bonjour,

Pour quitter une procédure sans l'exécuter, il convient d'utiliser
Exit Sub
.

Les MsgBox sont paramétrables. Syntaxe : MsgBox(message[, boutons] [, titre] [, helpfile, context])

Si vous voulez qu'elle affiche Oui et Annuler, il faut utiliser l'argument "boutons" : vbOKCancel.
L'argument bouton renvoie une valeur de type numérique (1, 2, 3...7).
Si, avec un MsgBox de type vbOkCancel vous cliquez sur Oui, sa valeur est 1, si vous cliquez sur annuler la valeur est 2.
Il nous faut donc pour réaliser ceci :
- un MsgBox de type vbOkCancel,
- une variable pour pouvoir tester la réponse de l'utilisateur. Cette variable ne pourra prendre que deux valeurs, 1 ou 2, elle est donc de type numérique (nombre entier = Integer).

Voici le code de ce que vous souhaitez :
Sub test() 
Dim OuiOuNon As Integer 
OuiOuNon = MsgBox("Voulez-vous continuer?", vbOKCancel, "Choix") 
If OuiOuNon = 2 Then Exit Sub 
MsgBox "Là vous avez cliqué sur Oui!!!" 
End Sub


Plus de renseignements sur les MsgBox : ICI (Microsoft), une MsgBox personnalisée ICI.

Note : 1- Dans le code, je place la valeur du MsgBox dans une variable de type Integer, le résultat est le même avec un Byte...
2- Dans le code, on peux remplacer (pour une maintenance plus aisée du code) :
If OuiOuNon = 2 Then Exit Sub
par :
If OuiOuNon = vbCancel Then Exit Sub

Cordialement,
Franck P
1
Merci beaucoup pour ces explications! c'est exactement ce dont j'avais besoin :)
0

merci infiniment pour ces explications, cela m'a été très utile

0