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
    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
    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
    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
    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
    Merci pour votre aide.

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



    Savez-vous d'ou peut venir le soucis ?

    Encore merci

  6. #6
    Expert éminent
    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
    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 :



    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 :



    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 :



    Tout grand merci pour votre aide précieuse.

  8. #8
    Expert éminent
    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
    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 !

###raw>template_hook.ano_emploi###