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 :

Macro mail envoyé catégorie


Sujet :

VBA Outlook

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : novembre 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Macro mail envoyé catégorie
    Bonjour à tous,

    Je souhaiterais créer une macro dans outlook pour qu'a chaque mail envoyé ces 2 actions se déroulent :
    1) Classer le mail envoyé directement un dossier qui est nommé "DONE"
    2) Ouvrir la fenêtre pour pour ajouter une catégorie à ce mail.

    En cherchant sur le forum, j'ai trouvé ce code qui servira de base mais je ne parviens pas à l'adapter comme souhaité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub Application_ItemSend(ByVal Item As Object, Cancel As _
    Boolean)
    If Not Item.Class = olMail Then GoTo fin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim objNS As NameSpace
    Dim objFolder As MAPIFolder
     
            Set objNS = Application.GetNamespace("MAPI")
            Set objFolder = objNS.PickFolder
            If TypeName(objFolder) = "Nothing" Then
                Set objNS = Application.GetNamespace("MAPI")
                Set objFolder = objNS.GetDefaultFolder(olFolderDeletedItems)
            End If
        Set Item.SaveSentMessageFolder = objFolder
    End Sub
    D'avance un grand merci pour votre aide,
    Bien à vous,

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 809
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 809
    Points : 6 667
    Points
    6 667
    Billets dans le blog
    18
    Par défaut
    Bonsoir,

    Pour la catégorie il est plus simple de le faire au moment de l'envoi
    pas exemple comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If item.Categories = "" Then item.GetInspector.CommandBars.ExecuteMso ("MessageOptions")
    à mettre après If item.Categories = "" Then item.GetInspector.CommandBars.ExecuteMso ("MessageOptions")

    pour le dossier Cela dépend où il se trouve

    si c'est un sous dossier de inbox

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set objFolder = objNS.GetDefaultFolder(olFolderInbox).folders("Done")

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : novembre 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    Merci beaucoup pour la réponse.

    Je confirme que le dossier "DONE" est un sous-dossier de inbox.

    Pourriez-vous svp me confirmer que je peux utiliser le code suivant pour la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As _
    Boolean)
    If item.Categories = "" Then item.GetInspector.CommandBars.ExecuteMso ("MessageOptions")
    If Not Item.Class = olMail Then GoTo fin
    Dim objNS As NameSpace
    Dim objFolder As MAPIFolder
     
            Set objNS = Application.GetNamespace("MAPI")
            Set objFolder = objNS.GetDefaultFolder(olFolderInbox).folders("DONE")
            If TypeName(objFolder) = "Nothing" Then
                Set objNS = Application.GetNamespace("MAPI")
                Set objFolder = objNS.GetDefaultFolder(olFolderDeletedItems)
            End If
        Set Item.SaveSentMessageFolder = objFolder
    End If
    End Sub
    Malheureusement, ca ne fonctionne pas et rien ne se passe lors de l'envoi d'un mail.

    Grand merci d'avance,

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 809
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 809
    Points : 6 667
    Points
    6 667
    Billets dans le blog
    18
    Par défaut
    Bonjour,
    LE code à l'air correct, par contre il doit être copié dans THisOutlookSession et les macros doivent être activées
    https://www.developpez.net/forums/bl...curite-macros/

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : novembre 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre aide.

    Après activation des macros. Voici le message d'erreur lors du lancement de la macro :

    Nom : Capture macro.PNG
Affichages : 32
Taille : 30,0 Ko

    Savez-vous d'ou peut venir le soucis ?

    Encore merci

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 809
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 809
    Points : 6 667
    Points
    6 667
    Billets dans le blog
    18
    Par défaut
    il manque une ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As _
    Boolean)
    If item.Categories = "" Then item.GetInspector.CommandBars.ExecuteMso ("MessageOptions")
    If Not Item.Class = olMail Then GoTo fin
    Dim objNS As NameSpace
    Dim objFolder As MAPIFolder
     
            Set objNS = Application.GetNamespace("MAPI")
            Set objFolder = objNS.GetDefaultFolder(olFolderInbox).folders("DONE")
            If TypeName(objFolder) = "Nothing" Then
                Set objNS = Application.GetNamespace("MAPI")
                Set objFolder = objNS.GetDefaultFolder(olFolderDeletedItems)
            End If
        Set Item.SaveSentMessageFolder = objFolder
    End If
    fin:
     
    End Sub

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : novembre 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Génial. Merci Oliv ! Ca fonctionne !

    Je me permets de poser quelques questions supplémentaires et vue d'améliorer cette macro :

    1) Cette boite "properties" s'ouvre à l'envoi mail :

    Nom : Boite properties.PNG
Affichages : 31
Taille : 16,6 Ko

    Je n'ai pas besoin de toute cette information mais uniquement de la selection des catégories. Je souhaiterais uniquement ouvrir cette boite pour la selection des catégories :

    Nom : color categroy.PNG
Affichages : 33
Taille : 6,7 Ko

    2) Je souhaiterais que le mail soit marqué comme lu quand il arrive dans mon dossier "DONE".

    Est-il possible d'adapter la macro pour tenir compte de ceci ?

    Enfin, est-il possible de renseigner cette macro comme sure sans pour autant activer toutes les macros (non recommandé, exécution possible de code potentiellement dangereux) ?
    En effet à chaque ouverture de outlook je dois confirmer le message suivant et je souhaiterais éviter ça :

    Nom : Trusted macro.PNG
Affichages : 31
Taille : 9,6 Ko

    Tout grand merci pour votre aide précieuse.

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 809
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 809
    Points : 6 667
    Points
    6 667
    Billets dans le blog
    18
    Par défaut
    as tu la possibilité dans ta version de Outlook d'ouvrir cette Fenêtre Catégories directement ? je ne pense pas qu'elle soit disponible à ce moment là.

    Si tu veux marquer lu ton mail, il faut une autre macro qui va gérer l'ajout d'éléments dans le dossier DONE

    j'ai pas vérifié mais ça doit donner quelque chose comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    Dim WithEvents DoneItems As Items
     
    Private Sub Application_Startup()
     
        Dim NS As Outlook.NameSpace
        Set NS = Application.Session
        Set DoneItems = NS.GetDefaultFolder(olFolderInbox).folders("DONE").Items
    end sub
     
    Private Sub DoneItems_ItemAdd(ByVal item As Object)
     
        If item.Class = olMail Then
    item.unread=false
    item.save
        end if
     
    END SUB

    pour le dernier point : soit règler le niveau de sécurité ou sinon
    https://www.developpez.net/forums/d2...suis-l-auteur/

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant E-Business
    Inscrit en
    novembre 2015
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : novembre 2015
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour Oliv,

    La fenêtre catégorie que je souhaiterais ouvrir lors de l'envoi d'un mail est la fenêtre quand je vais dans le ruban MESSAGE > TAGS > CATEGORIZE > ALL CAETGORIES.
    Effectivement cette option/fenêtre n'est pas disponible lors de la rédaction/envoi d'un mail.

    Quelle pourrait être la solution ?

    Grand merci d'avance,
    J'en profite pour te souhaiter d'agréables fêtes de fin d'année !

Discussions similaires

  1. [XL-2007] macro pour envoyer mail avec outlook express avec image
    Par HIGGUINS dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/02/2011, 12h47
  2. Macro pour envoyer mail via lotus notes
    Par jimmy0123 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 01/12/2008, 16h51
  3. Macro pour envoyer un mail à partir d'un formulaire
    Par aurore1008 dans le forum IHM
    Réponses: 2
    Dernier message: 17/06/2008, 17h16
  4. Une macro pour gérer mes mails envoyés et reçus
    Par memet dans le forum VBA Outlook
    Réponses: 5
    Dernier message: 30/04/2008, 21h09
  5. Macro pour envoyer mail via lotus notes
    Par Debutante-Excel dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/03/2008, 10h37

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