Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2011, 21h42   #1
Invité de passage
 
Homme Nicolas
Chargé d'affaire
Inscription : mai 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : Belgique

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 2
Points : 0
Points : 0
Par défaut Attribution automatique de Catégories Outlook (envoi et lecture e-mails)

Bonjour à tous,
Je fais mes premiers pas sur Developpez.com en soumettant la demande d'aide suivante.
J'utilise depuis peu les Catégories dans Outlook (2003 tout d'abord et récemment 2010 après migration des PC vers Win7), en en attribuant une à chacun de mes projets. Je trouve cela très pratique pour classer, archiver, faire des recherches, etc. dans mes e-mails. Cette façon de faire est d'autant plus efficace si elle est systématique. C'est là que le VBA peut aider.
Mes souhaits seraient les suivants:

1/ lors de l'envoi d'un e-mail, si aucune catégorie n'est attribuée à cet e-mail sortant (pas systématique puisque les catégories sont héritées de l'e-mail parent): lancement automatique de la boîte de dialogue d'attribution de Catégories (event ShowCategoriesDialog)

2/ lors de la navigation dans la boîte de réception, lorsqu'un message est lu pour la première fois (event Read et propriété Unread) et que celui-ci n'a pas encore de catégorie: lancement automatique de la boîte de dialogue d'attribution de Catégories

Dans Outlook 2003, j'avais écris quelques lignes qui remplissaient grosso modo ces fonctions, avec de nombreuses imperfections. Par exemple, lorsque je recevais dans ma boîte des réponses à des invitations de réunion, le code plantait... J'avais vraisemblablement récupéré un morceau de code qui ne s'appliquait qu'à la classe MailItem et non pas aux autres types d'objet Outlook. De plus, lors de la migration vers OL 2010, je n'ai pas fait de sauvegarde du code...

D'avance merci à tous ceux qui pourraient contribuer à ce type de traitement automatisé
NicoH78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/06/2011, 22h17   #2
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 103
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 103
Points : 8 726
Points : 8 726
bonjour et bienvenue

Comment commence t'on code ? livre tes débuts et on pourra essayer de finaliser la chose

@+
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 12h28   #3
Invité de passage
 
Homme Nicolas
Chargé d'affaire
Inscription : mai 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Nicolas
Localisation : Belgique

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 2
Points : 0
Points : 0
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
NicoH78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h09.


 
 
 
 
Partenaires

Hébergement Web