Activer le bouton "annuler"

Trashboy666

XLDnaute Nouveau
Bonjour à tous! J'ai un p'tit soucis surement très très simple sur Excel 2007, mais impossible de trouver la solution.

J'ai trouvé et utilisé une macro permettant d'envoyer un mail de notification à chaque fois qu'un utilisateur sauvegarde le classeur excel (un ctrl+S quoi).

J'ai optimisé cette macro en ajoutant une msgbox avertissant l'utilisateur qu'une notification par mail va être envoyée. L'utilisateur devra pouvoir continuer (OK), ou arrêter le processus de sauvegarde et d'envoie de la notification (annuler).

Là où je n'y arrive pas, c'est de trouver un moyen de stopper le processus de sauvegarde et d'envoi si l'utilisateur click sur "annuler". J'ai fait le tour du site et je trouve pas.

V'là mon code, qui se trouve dans Workbook :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

Dim Message As String
Message = " Une notification par mail va être envoyée "
MsgBox Message, vbOKCancel, "Enregistrement"

Dim ol As Object, monmail As Object
DisplayAlerts = False
Set ol = CreateObject("outlook.application")
Set monmail = ol.CreateItem(olMailItem)
monmail.To = "XXX@xxx.xx"
monmail.Subject = "Modifs"
monmail.Body = "Message de notif avec msgbox ok cancel"
monmail.Send
Set ol = Nothing

End Sub


Si possible en bonus, je voudrais qu'une fois que l'utilisateur a clické sur "annuler", une autre msgbox informe que le fichier n'a pas été enregistré, et que s'il click sur "ok", une msgbox informe que le fichier a été enregistré.

Merci d'avance pour votre aide!
 

youky(BJ)

XLDnaute Barbatruc
Re : Activer le bouton "annuler"

salut bien,
Avec Cancel=True on abandonne l'enregistrement
Donc voici....
Bruno
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Message As String
Dim rep
Message = " Une notification par mail va être envoyée " & vbCr & "Voulez-vous poursuivre l'enregistrement ?"
rep = MsgBox(Message, vbOKCancel, "Enregistrement")
If rep = vbCancel Then Cancel = True: Exit Sub
Dim ol As Object, monmail As Object
DisplayAlerts = False
Set ol = CreateObject("outlook.application")
Set monmail = ol.CreateItem(olMailItem)
monmail.To = "XXX@xxx.xx"
monmail.Subject = "Modifs"
monmail.Body = "Message de notif avec msgbox ok cancel"
monmail.Send
Set ol = Nothing
End Sub
 

Trashboy666

XLDnaute Nouveau
Re : Activer le bouton "annuler"

Haaa j'étais pas loin! j'avais juste oublié "cancel = true", je mettais direct "if rep = cancel then exit sub"

J'ai profité de ta réponse pour répondre à ma question "bonus" et voilà ce que ça donne pour les éventuels futurs membres qui auront le même besoin :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Message As String
Dim messageabort As String
Dim messageok As String
Dim rep
Dim abort
Dim ok

Message = " Une notification par mail va être envoyée " & vbCr & "Voulez-vous poursuivre l'enregistrement ?"
rep = MsgBox(Message, vbOKCancel, "Enregistrement")

If rep = vbCancel Then
    Cancel = True:
        messageabort = "l'enregistrement et l'envoi ont été annulés"
        abort = MsgBox(messageabort, vbOKOnly, "Annulation")
    Exit Sub
End If

Dim ol As Object, monmail As Object
DisplayAlerts = False
Set ol = CreateObject("outlook.application")
Set monmail = ol.CreateItem(olMailItem)
monmail.To = "xxx@xx.xx"
monmail.Subject = "Modifs"
monmail.Body = "Message de notif avec msgbox okcancel"
monmail.Send
Set ol = Nothing

messageok = "l'enregistrement a été effectué et" & vbCr & "votre Outlook a envoyé le mail de notification"
ok = MsgBox(messageok, vbOKOnly, "Enregistrement")

End Sub

Merci pour ton aide!
 
Dernière édition: