Bonjour,
Voici le code reconstitué après qqs recherches:
Public WithEvents myOlInspectors As Outlook.Inspectors
Public myInspectorsCollection As New Collection
Private WithEvents objExplorer As Outlook.Explorer
Private WithEvents msg As Outlook.MailItem
Private Sub Application_Startup()
Set objExplorer = Application.ActiveExplorer
End Sub
Private Sub objExplorer_SelectionChange()
If objExplorer.CurrentFolder.DefaultItemType = olMailItem Then
If objExplorer.Selection.Count > 0 Then
' And objExplorer.Selection.Class = olMail
Set msg = objExplorer.Selection(1)
End If
End If
End Sub
Private Sub msg_Read()
If msg.Categories = vbNullString And msg.UnRead = True Then
msg.ShowCategoriesDialog
End If
End Sub
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Debug.Print Item.Categories
If Item.Categories = "" Then
Item.ShowCategoriesDialog
End If
End Sub
Quelques commentaires:
1. Envoi de message: cela fonctionne correctement (ouverture de la boîte de dialogue "Catégories").
2. Lecture de message: l'affichage de la boîte de dialogue "Catégories" fonctionne bien aux conditions voulues: non lu et absence de catégorie, à condition que l'élément sélectionné soit un message. Le code se met en défaut dès qu'un autre type d'élément Outlook non lu est sélectionné (p.ex. une convocation de réunion)
La ligne de code mise en évidence dans le debugger:
Set msg = objExplorer.Selection(1)
J'ai déjà essayé d'ajouter une condition (commentaire en rouge), mais sans succès.
Les corrections ou propositions d'amélioration sont les bienvenues.
D'avance, merci
Partager