erreur Move/Delete sur element ouvert - VB/VBA/VBS - Programmation
MarshPosté le 07-08-2007 à 11:47:05
Bonjour,
J'ai un soucis avec une macro qui doit faire cela : Lors de la fermeture d'un nouveau mail, je propose à l'utilisateur d'archiver le mail vers un dossier. Le truc c'est que le mail doit être déplacé mais il ne peut pas parcequ'il est ouvert.
J'ai pensé à créér une copie de ce mail, et de déplacer la copie, mais je veux supprimer le mail recu, pour qu'il n'y ai pas de doublon. Encore une fois, impossible de supprimer le mail ouvert. Tout ca se passe dans le objet_BeforeClose, il me faudrait un équivalent de AfterClose pour régler mon prôblème, mais qui n'existe malheuresement pas...
Si vous avez des idées ca m'aiderait pas mal, je vous c/c le code :
Dim WithEvents myInspectors As Outlook.Inspectors Dim WithEvents myMail As Outlook.MailItem
Private Sub Application_Startup() On Error Resume Next Set myInspectors = ThisOutlookSession.Inspectors On Error GoTo 0 End Sub
Private Sub myInspectors_NewInspector(ByVal Insp As Inspector) If Insp.CurrentItem.Class = olMail Then If Insp.CurrentItem.UnRead = True Then Set myMail = Insp.CurrentItem 'MsgBox "Nouveau Mail" 'Else 'MsgBox "Vieux Mail" End If End If End Sub
Private Sub myMail_Close(Cancel As Boolean) Dim myCopiedItem As Outlook.MailItem
If MsgBox("Voulez-vous archiver ce message ?", vbYesNo + vbQuestion, "Voulez-vous Archiver ?" ) = vbYes Then Dim oDossier As MAPIFolder 'Set oNS = Application.GetNamespace("MAPI" ) Set oDossier = Application.GetNamespace("MAPI" ).PickFolder
If Not oDossier Is Nothing Then Set myCopiedItem = myMail.Copy myCopiedItem.Move oDossier myMail.Delete End If Set oDossier = Nothing End If End Sub
Cette version créé une copie du mail et le déplace, jusque la OK, mais le myMail.Delete pose probleme. Pour tester l'idée premiere, il faut remplacer Set myCopiedItem = myMail.Copy myCopiedItem.Move oDossier myMail.Delete par myMail.Move oDossier
Voila l'erreur qu'il me donne :
Donc le move et delete ne sont pas accéssible sur l'événement close, si vous avez une idée alternative... je suis preneur !
Marsh Posté le 07-08-2007 à 11:47:05
Bonjour,
J'ai un soucis avec une macro qui doit faire cela : Lors de la fermeture d'un nouveau mail, je propose à l'utilisateur d'archiver le mail vers un dossier. Le truc c'est que le mail doit être déplacé mais il ne peut pas parcequ'il est ouvert.
J'ai pensé à créér une copie de ce mail, et de déplacer la copie, mais je veux supprimer le mail recu, pour qu'il n'y ai pas de doublon. Encore une fois, impossible de supprimer le mail ouvert. Tout ca se passe dans le objet_BeforeClose, il me faudrait un équivalent de AfterClose pour régler mon prôblème, mais qui n'existe malheuresement pas...
Si vous avez des idées ca m'aiderait pas mal, je vous c/c le code :
Dim WithEvents myInspectors As Outlook.Inspectors
Dim WithEvents myMail As Outlook.MailItem
Private Sub Application_Startup()
On Error Resume Next
Set myInspectors = ThisOutlookSession.Inspectors
On Error GoTo 0
End Sub
Private Sub myInspectors_NewInspector(ByVal Insp As Inspector)
If Insp.CurrentItem.Class = olMail Then
If Insp.CurrentItem.UnRead = True Then
Set myMail = Insp.CurrentItem
'MsgBox "Nouveau Mail"
'Else
'MsgBox "Vieux Mail"
End If
End If
End Sub
Private Sub myMail_Close(Cancel As Boolean)
Dim myCopiedItem As Outlook.MailItem
If MsgBox("Voulez-vous archiver ce message ?", vbYesNo + vbQuestion, "Voulez-vous Archiver ?" ) = vbYes Then
Dim oDossier As MAPIFolder
'Set oNS = Application.GetNamespace("MAPI" )
Set oDossier = Application.GetNamespace("MAPI" ).PickFolder
If Not oDossier Is Nothing Then
Set myCopiedItem = myMail.Copy
myCopiedItem.Move oDossier
myMail.Delete
End If
Set oDossier = Nothing
End If
End Sub
Cette version créé une copie du mail et le déplace, jusque la OK, mais le myMail.Delete pose probleme.
Pour tester l'idée premiere, il faut remplacer
Set myCopiedItem = myMail.Copy
myCopiedItem.Move oDossier
myMail.Delete
par
myMail.Move oDossier
Voila l'erreur qu'il me donne :
Donc le move et delete ne sont pas accéssible sur l'événement close, si vous avez une idée alternative... je suis preneur !