[Catégorie modifiée .Net -> VBA] fermer la fenetre message outlook
cs_Blorf78
Messages postés6Date d'inscriptionvendredi 16 janvier 2009StatutMembreDernière intervention28 avril 2011
-
28 avril 2011 à 14:11
cs_Blorf78
Messages postés6Date d'inscriptionvendredi 16 janvier 2009StatutMembreDernière intervention28 avril 2011
-
28 avril 2011 à 17:23
Blorf
Je suis actuellement en train de réaliser une petite macro VBA qui vérifie que la taille de la piece jointe est inferieur à celle autorisé par notre messagerie. Si la piece jointe est trop grande un message averti l'utilisateur que la piece jointe est trop importante et le mail est sauvegarder dans les brouillons.
Jusque la pas de problème, sauf que je voudrai que la fenetre de redaction du mail en question soit fermer automatiquement après la sauvegarde. Car pour le moment elle reste ouverte et repropose naturellement de sauvegarder le mail dans les brouillon lorsque l'on veut la fermer.
voici le code de la macro
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If TypeOf Item Is Outlook.MailItem Then
Cancel = Not (ConfirmBigAttachments(Item))
End If
End Sub
Private Function ConfirmBigAttachments(oMail As Outlook.MailItem) As Boolean
Dim lSize As Long
Const MAX_ITEM_SIZE As Long = 527566 ' Byte
Dim bSend As Boolean
bSend = True
If oMail.Attachments.Count Then
oMail.Save
lSize = oMail.Size
If lSize > MAX_ITEM_SIZE Then
bSend (MsgBox("Bonjour, votre pièce jointe dépasse les 5Mo autorisé par la messagerie." & vbCrLf & "Votre message sera concervé dans les brouillons", vbSystemModal, vbinfo) vbNo)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 28 avril 2011 à 14:45
Ta MsgBox suppose que tu poses une question avec réponse Oui/Non.
Le texte ne propose aucun choix.
Si tu dois poser une question :
MsgBox "Le texte de la question", vbQuestion Or vbYesNo, _
"Le titre du message"
Si tu ne dois qu'afficher un message avec un simple Ok :
MsgBox("Bonjour, votre pièce jointe dépasse les 5Mo autorisé par la messagerie." & _
& vbCrLf & "Votre message sera concervé dans les brouillons", _
vbSystemModal Or vbInformation Or vbOKOnly, "Le titre du message"
Voir l'aide pour + d'info
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate) [img]http://allproj
cs_Blorf78
Messages postés6Date d'inscriptionvendredi 16 janvier 2009StatutMembreDernière intervention28 avril 2011 28 avril 2011 à 15:15
Bonjour et merci,
merci pour les petites rectifications d'erreur d'inattention comme la mauvaise convertion en byte.
j'ai bien essayer la commande
oMail.Close(olDiscard)
sa ma l'air d'etre la bonne commande effectivement mais cela génère un message d'erreur d'exécution '-1594753015(a0f20009)':
La commande Item.close ne peut pas etre éxecutée pendant un évènement Item.send
Une idée ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 28 avril 2011 à 16:30
Je pense qu'il suffit donc de ressortir cette commande de l'évènement et d'attendre que le Send soit terminé.
Que vaut Cancel dans la Sub Application_ItemSend ?
Méthode de bogage :
- F9 sur une ligne de code
Le programme s'y arrêtera au prochain passage
Survole avec la souris tes variables pour visualiser leur contenu, ou va dans la fenêtre de debogage (Ctrl-G) et tape
? maVariable
pour qu'elle s'inscrive dans la fenêtre.
- F8 (VB6) ou F10 (.Net) pour avancer d'une ligne de code
- F5 pour continuer normalement
cs_Blorf78
Messages postés6Date d'inscriptionvendredi 16 janvier 2009StatutMembreDernière intervention28 avril 2011 28 avril 2011 à 17:08
Blorf
je comprend bien le concept derriere votre réponse : "Je pense qu'il suffit donc de ressortir cette commande de l'évènement et d'attendre que le Send soit terminé. "
Cependant je n'arrive pas a saisir ou je doit mettre la ligne de fermeture de la fenetre message puisque je n'ai que la Sub Application_ItemSend qui appel la fonction ConfirmBigAttachments
et pour rectifié la reponse précédente je pense qu'a la toute fin du script (après l'execution de la fonction ConfirmBigAttachments) Cancel = not False donc true
cs_Blorf78
Messages postés6Date d'inscriptionvendredi 16 janvier 2009StatutMembreDernière intervention28 avril 2011 28 avril 2011 à 17:23
j'ai bien essayer de le mettre le item close aprés la boucle if qui contient le cancel mais sa me met toujours la meme erreur....
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
If TypeOf Item Is Outlook.MailItem Then
Cancel = Not (ConfirmBigAttachments(Item))
End If
If Cancel = True Then
Item.Close (olDiscard)
End If
End Sub
Pourtant en sortant du premier if l'instruction cancel devrai s'etre executé dsl mais la je suis dubitatif et perplexe je ne vois pas comment fermer la fenetre....