none
Macro Outlook 2007 RRS feed

  • Question

  • Bonjour à vous,

     

    Je travails sur une macro pour déplacer un Élément Envoyé à partir d'une mailbox supplémentaire Exchange dans Outlook 2007.

     

    Exemple; Lorsque j'envois un courrier à partir de "Boîte aux lettres - Tech Support ", je voudrais que la copie de l'élément envoyé soit déplacé dans le dossier "Éléments Envoyés" de la mailbox "Boîte aux lettres - Tech Support" et non dans "Éléments Envoyés" de mon compte Exchange principale "Boîte aux lettres - Luc St-Laurent".

     

    La fonction GetFolder fonctionne très bien. Mon problème semble venir de la propriété SaveSentMessageFolder qui ne semble pas être configurable.

     

    Voici mon code:

     

    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As _
    Boolean)

        Dim objFolder As MAPIFolder

        Set objNS = Application.GetNamespace("MAPI")

       
            If Item.Class = olMail Then
                If Item.SentOnBehalfOfName = "Support Tech" Then
                    Set objFolder = GetFolder("\\Boîte aux lettres - Support Tech\Éléments envoyés")
                   
                    'Affichage de Test   
                    MsgBox TypeName(Item)
                    MsgBox TypeName(objFolder)
                    MsgBox objFolder
                    objFolder.Display
                   

                    Set Item.SaveSentMessageFolder = objFolder
                  
                End If
            End If
       
       
        Set objFolder = Nothing
        Set objNS = Nothing
     
    End Sub

    Function GetFolder(ByVal FolderPath As String) As Outlook.folder
        Dim TestFolder As Outlook.folder
        Dim FoldersArray As Variant
        Dim i As Integer
           
        On Error GoTo GetFolder_Error
        If Left(FolderPath, 2) = "\\" Then
            FolderPath = Right(FolderPath, Len(FolderPath) - 2)
        End If
        'Convert folderpath to array
        FoldersArray = Split(FolderPath, "\")
        Set TestFolder = Application.Session.Folders.Item(FoldersArray(0))
        If Not TestFolder Is Nothing Then
            For i = 1 To UBound(FoldersArray, 1)
                Dim SubFolders As Outlook.Folders
                Set SubFolders = TestFolder.Folders
                Set TestFolder = SubFolders.Item(FoldersArray(i))
                If TestFolder Is Nothing Then
                    Set GetFolder = Nothing
                End If
            Next
        End If
        'Return the TestFolder
        Set GetFolder = TestFolder
        Exit Function
           
    GetFolder_Error:
        Set GetFolder = Nothing
        Exit Function
    End Function

    Sub TestGetFolder()
        Dim folder As Outlook.folder
        Set folder = GetFolder("\\Boîte aux lettres - Support Tech\Éléments envoyés")
        If Not (folder Is Nothing) Then
        folder.Display
        End If
    End Sub

    mardi 29 mai 2007 14:07

Réponses

  • Bonjour,

    Merci pour ta réponse.

    Pourtant la fonction GetFolder fonctionne très bien, elle affiche le bon répertoire.

    objFolder.Display

    Je crois avoir trouvé une partie de la réponse, la macro est peut-être bonne mais le répertoire ne fait pas partie de la banque d'informations par défault d'outlook.

    J'ai fait quelques teste avec Outlook 2003 et j'obtiens le message d'erreur suivant:

    "le dossier que vous avez sélectionné n'est pas un sous-dossier de la banque
    d'informations par défaut. Pour sélectionner un dossier différent, cliquer
    sur OK"


    Donc, j'ai un nouveau problème....comment ajouter un sous-dossier à la banque d'information par défaut...

    Merci beaucoup Smile

    Lucky



    mercredi 30 mai 2007 12:40

Toutes les réponses

  • Bonjour,

     

    D'après  ce que j'ai trouvé, cette propriété est modifiable:

    http://msdn2.microsoft.com/en-us/library/aa171932(office.11).aspx

    http://support.microsoft.com/kb/178343/fr

     

    Cependant, je me demande si le problème ne vient pas des accents, utilisés ici:

     

     

    Code Snippet
    Set objFolder = GetFolder("\\Boîte aux lettres - Support Tech\Éléments envoyés")

     

    Il faudrait faire le test avec des noms anglais (MailBox, Sent Items, etc..) pour être sur

     

     

    A bientôt.

    mardi 29 mai 2007 14:19
  • Bonjour,

    Merci pour ta réponse.

    Pourtant la fonction GetFolder fonctionne très bien, elle affiche le bon répertoire.

    objFolder.Display

    Je crois avoir trouvé une partie de la réponse, la macro est peut-être bonne mais le répertoire ne fait pas partie de la banque d'informations par défault d'outlook.

    J'ai fait quelques teste avec Outlook 2003 et j'obtiens le message d'erreur suivant:

    "le dossier que vous avez sélectionné n'est pas un sous-dossier de la banque
    d'informations par défaut. Pour sélectionner un dossier différent, cliquer
    sur OK"


    Donc, j'ai un nouveau problème....comment ajouter un sous-dossier à la banque d'information par défaut...

    Merci beaucoup Smile

    Lucky



    mercredi 30 mai 2007 12:40
  • Bonjour,

    Est ce que tu vois cette BAL dans l’arborescence du COURRIER ?

    sinon tu l'ajoutes via Fichier/Paramètres du compte/modifier/paramètres summplémentaires

    onglet avancé puis "ajouter").

    et en principe le mail envoyé "en tant que" arrivera dans les éléments envoyés de cete bal sans programmation.


    Have a nice day. Oliv-

    vendredi 17 avril 2015 08:20
  • Il doit manquer un save 

    Set Item.SaveSentMessageFolder = objFolder

    Item.save

    edit: oups j'ai pas vu la date de ce sujet


    Have a nice day. Oliv-


    • Modifié Oliv- vendredi 17 avril 2015 08:44
    vendredi 17 avril 2015 08:23