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 :

Mails envoyés provenant d'un public folder à rediriger vers celui-ci


Sujet :

VBA Outlook

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Est ce que sous "Medical Information Request"
    il y a bien un dossier éléments envoyés ou sent ?

    Essaye ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Publicfolder()
        Set myNamespace = Application.GetNamespace("MAPI")
        Set myPublicFolder = myNamespace.GetDefaultFolder(olPublicFoldersAllPublicFolders).folder("Public Folders - MonEmail@masociete.com").folder("Medical Information Request")
        If Not myPublicFolder Is Nothing Then
            MsgBox myPublicFolder.Name
        End If
    End Sub
    ou celui-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Publicfolder1()
        Set myNamespace = Application.GetNamespace("MAPI")
        Set myPublicFolder = myNamespace.GetDefaultFolder(olPublicFoldersAllPublicFolders).folder("Medical Information Request")
        If Not myPublicFolder Is Nothing Then
            MsgBox myPublicFolder.Name
        End If
    End Sub

  2. #22
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Points : 5
    Points
    5
    Par défaut
    Non il n'y a pas de sous-dossier sent. Je voudrais que les mail envoyés arrivent dans le dossier principal.

    les codes que tu proposes, je les mets à la place d'une certaine partie ou je ne mets que ça?

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    SAlut,

    Essaye ce code
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    
     
    Private WithEvents objSentItems As Items
    Public DestinationFolder As Outlook.Folder
     
     
    Public Sub Application_Startup() ' faire F5 su ce code pour initialiser ou fermer/réouvrir outlook
    'Retrieve ID for accessing non-default sent folder
        getPublicFolderID("Medical Information Request")
        Set objSentItems = Application.Session.GetDefaultFolder(olFolderSentMail).Items
    End Sub
     
     
    Sub getPublicFolderID(Name)
       Dim myNamespace
       Set myNamespace = Application.GetNamespace("MAPI")
       Dim oRoot As Outlook.Folder
     
        Set DestinationFolder=myNamespace.GetDefaultFolder(olPublicFoldersAllPublicFolders).folder(Name)
        
     if DestinationFolder is nothing then 
        msgbox Name & vbcr & "pas trouvé"
    End if
    End Sub
     
    Private Sub objSentItems_ItemAdd(ByVal Item As Object)
    'Fired when something is added to personal "Sent Mail" folder
    Dim MailItem As Outlook.MailItem
        If TypeOf Item Is Outlook.MailItem Then
            With Item
                Set MailItem = Application.GetNamespace("mapi").GetItemFromID(.EntryID, .Parent.StoreID)
            End With
    Debug.Print MailItem.SenderName
    MsgBox MailItem.SenderName
     
            If MailItem.SenderName = "Medical Information Request" Then
               If DestinationFolder Is Nothing Then getPublicFolderID("Medical Information Request")
                MailItem.Move DestinationFolder
            End If
        End If
        Set MailItem = Nothing
    End Sub

  4. #24
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Points : 5
    Points
    5
    Par défaut
    Déjà merci pour te persévérance à résoudre mon problème, c'est super sympa !

    Alors avec ton dernier code, j'ai à l'ouverture d'outlook, une erreur

    run time error 438 object doesn't support this property or method

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    oups j'ai du oublier le s
    le problème c'est que je n'ai pas de PUBLIC FOLDER POUR TESTER.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub getPublicFolderID(Name)
       Dim myNamespace
       Set myNamespace = Application.GetNamespace("MAPI")
       Dim oRoot As Outlook.Folder
     
        Set DestinationFolder=myNamespace.GetDefaultFolder(olPublicFoldersAllPublicFolders).folders(Name)
     
     if DestinationFolder is nothing then 
        msgbox Name & vbcr & "pas trouvé"
    End if
    End Sub

  6. #26
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Points : 5
    Points
    5
    Par défaut
    MAGNIFIQUE !!!

    Ca marche nickel!

    Un tout tout grand merci.

    Je vais abuser mais serait-il possible de ne pas avoir la boite de dialogue qui apparaît après avoir envoyé le message?

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par tetsunochin Voir le message
    serait-il possible de ne pas avoir la boite de dialogue qui apparaît après avoir envoyé le message?
    c'est à dire ?

    tu peux supprimer la ligne "MsgBox MailItem.SenderName"

  8. #28
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Points : 5
    Points
    5
    Par défaut
    C'était bien ça !!

    Merci

    Difficulté supplémentaire...mais peut-être que j'en demande trop

    Certaines personnes ont accès à différents dossiers publiques (A, B, C) et chaque fois un mail y est associé (A@masociete.com, B@masociete.com, ...)
    Là j'ai un script qui me dit que si j'envoie avec l'identité de A, le mail envoyé va dans le dossier publique A.

    Sait-on compléter le code pour définir que si le mail est envoyé de B, le mail envoyé sera redirigé vers le dossier public B et ainsi de suite?
    Ou faut-il copier/coller le code plusieurs fois et change le A par B???

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Oui on peut, il y a quelques éléments à changer


    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    Private WithEvents objSentItems As Items
    Public DestinationFolder As Outlook.Folder
     
     
    Public Sub Application_Startup() ' faire F5 su ce code pour initialiser ou fermer/réouvrir outlook
        Set objSentItems = Application.Session.GetDefaultFolder(olFolderSentMail).Items
    End Sub
     
     
    Sub getPublicFolderID(Name)
       Dim myNamespace
       Set myNamespace = Application.GetNamespace("MAPI")
       Dim oRoot As Outlook.Folder
     
        Set DestinationFolder=myNamespace.GetDefaultFolder(olPublicFoldersAllPublicFolders).folders(Name)
        
     if DestinationFolder is nothing then 
        msgbox Name & vbcr & "pas trouvé"
    End if
    End Sub
     
    Private Sub objSentItems_ItemAdd(ByVal Item As Object)
    'Fired when something is added to personal "Sent Mail" folder
    Dim MailItem As Outlook.MailItem
        If TypeOf Item Is Outlook.MailItem Then
            With Item
                Set MailItem = Application.GetNamespace("mapi").GetItemFromID(.EntryID, .Parent.StoreID)
            End With
    Debug.Print MailItem.SenderName
    MsgBox MailItem.SenderName
     
            Select case MailItem.SenderName 
                     case "Medical Information Request" 
                           getPublicFolderID(MailItem.SenderName)
                           MailItem.Move DestinationFolder
                      case "TOTO" 
                           getPublicFolderID(MailItem.SenderName)
                           MailItem.Move DestinationFolder
            End select
        End If
        Set MailItem = Nothing
    End Sub

    C'EST LA PARTIE EN VERT QU'IL FAUT DUPLIQUER

  10. #30
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Points : 5
    Points
    5
    Par défaut
    Le nouveau code ne fonctionne pas.

    J'ai mis ton code et j'ai changé TOTO par le nom d'un autre dossier publique.
    J'ai fait un test à partir du dossier publique Medical Information Request mais le mail envoyé reste dans les sent.

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    ET EN AJOUTANT TOUT EN HAUT

  12. #32
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Points : 5
    Points
    5
    Par défaut
    non plus...

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    non, c'est à dire ? c'est quoi l'erreur ?

    s'il y a eu un bug dans les macros il faut soit relancer outlook,

    soit lancer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub init_objSentItems() 
        Set objSentItems = Application.Session.GetDefaultFolder(olFolderSentMail).items
    End Sub
    OPTION COMPARE TEXT SE MET EN HAUT DU MODULE


    n'hésite pas à utiliserles points d'arrêt, le pas à pas, les espions ou la fenetre variable, pour comprendre !

  14. #34
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Points : 5
    Points
    5
    Par défaut
    J'ai testé le code chez moi et en fait je me suis rendu compte que c'était un problème de certificat sur l'autre machine...donc le nouveau code marche en ce qui concerne le dossier publique Medical Information Request.

    Par contre ça ne marche pas par rapport aux autres dossiers publiques (pas de message d'erreur mais rien ne se passe) et je pense que c'est lié au fait que pour ces dossiers là, les gens ne sont pas en "send as" mais en "send on behalf of"

    Du coup j'ai essaté les deux codes ci-dessous mais sans succès.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Case "Paul Durant on behalf of TOTO"
                           getPublicFolderID (MailItem.SenderName)
                           MailItem.Move DestinationFolder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Case "Paul Durant on behalf of TOTO"
                           getPublicFolderID ("TOTO")
                           MailItem.Move DestinationFolder
    Des idées?

    Je ne demande qu'à apprendre mais tu fais allusions à des termes que je ne comprends même pas (points d'arrêt, le pas à pas, les espions ou la fenetre variable)

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Lis ce tuto pendant que je regarde ton pb
    http://cafeine.developpez.com/access...el/debugprint/


    c'est très important de connaitre ces points si tu veux progresser , c'est la base et la solution à beaucoup de questions

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Change cette partie là

    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
    20
    21
    22
    Private Sub objSentItems_ItemAdd(ByVal Item As Object)
    'Fired when something is added to personal "Sent Mail" folder
    Dim MailItem As Outlook.MailItem
        If TypeOf Item Is Outlook.MailItem Then
            With Item
                Set MailItem = Application.GetNamespace("mapi").GetItemFromID(.EntryID, .Parent.StoreID)
            End With
     
    Debug.Print MailItem.SenderName & "-" & MailItem.Sender.Name & "-" & MailItem.SentOnBehalfOfName
    MsgBox MailItem.SenderName & "-" & MailItem.Sender.Name & "-" & MailItem.SentOnBehalfOfName
     
            Select Case MailItem.Sender.Name
                     Case "Medical Information Request"
                           getPublicFolderID (MailItem.Sender.Name)
                           MailItem.Move DestinationFolder
                      Case "toto"
                           getPublicFolderID (MailItem.Sender.Name)
                           MailItem.Move DestinationFolder
            End Select
        End If
        Set MailItem = Nothing
    End Sub
    Il faut juste être sûr que le nom du dossier = nom qui apparait lors de l'envoi

  17. #37
    Futur Membre du Club
    Inscrit en
    Mars 2013
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 30
    Points : 5
    Points
    5
    Par défaut
    Ca fonctionne super !

    Un tout tout grand merci.

    Je m'en vais lire ton tuto...

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/07/2008, 10h33
  2. [javaMail] Aucune trace des mails envoyés !...
    Par toctof dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 18/10/2005, 09h09
  3. [Encodage] Unicode dans un mail envoyé par servlet
    Par beber69 dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 16/09/2005, 17h21
  4. Sauvegarder automatiquement un mail envoyé par asp
    Par Immobilis dans le forum ASP
    Réponses: 7
    Dernier message: 27/10/2004, 14h11
  5. Modification auto du corps d'un mail envoyé via Lotus Note
    Par DeepXtaZy dans le forum VBA Access
    Réponses: 5
    Dernier message: 20/06/2003, 11h33

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