Poursuivre ou annuler une macro

Résolu
arnaud74 -  
 pecan056 -
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

1 réponse

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    1. arnaud74
       
      Merci beaucoup pour ces explications! c'est exactement ce dont j'avais besoin :)
      0
    2. pecan056
       

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

      0