IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Attribution automatique de Catégories Outlook (envoi et lecture e-mails)


Sujet :

VBA Outlook

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 1
    Points
    1
    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é

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    bonjour et bienvenue

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

    @+

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

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

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    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

Discussions similaires

  1. [XL-2007] Excel VBA Erreur lors d'une boucle --> Macro Envoi automatique PDF via Outlook
    Par Oulol dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/07/2014, 13h14
  2. [XL-2007] Pb avec macro d'envoi automatique fichier via Outlook
    Par AGCvba dans le forum Excel
    Réponses: 4
    Dernier message: 21/12/2012, 15h54
  3. [OL-2003] Programme malveillant outlook (envoi automatique de courrier)
    Par giantdj_ve dans le forum Outlook
    Réponses: 1
    Dernier message: 17/06/2010, 17h08
  4. [OUTLOOK] Envoi de courriel automatique
    Par NicoNours dans le forum Outlook
    Réponses: 2
    Dernier message: 27/07/2006, 22h19
  5. Alerte Outlook (Envoie d'un mail) et changer l'icône
    Par Jihnn dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 06/03/2006, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo