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 :

Déplace email envoyé dans PST


Sujet :

VBA Outlook

  1. #1
    Débutant
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    1 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 125
    Points : 704
    Points
    704
    Par défaut Déplace email envoyé dans PST
    Bonjour,

    Etant donnée la politique d'Outlook en gardant les emails envoyés sur le serveur Exchange et non en les déplaçant dans le PST (comme pour Outlook 2003), j'utilise une macro qui déplace les mails dans le PST en sortant d'Outlook.

    Cependant lorsque dans la boucle il y a un message de réponse à une réunion, celui plante.

    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
    Private Sub Application_Quit()
     
        ' 06/11/2014 - V1
        ' permet de déplacer tous les mails envoyés coté serveur,
        ' vers element envoyé coté client dans le PST
     
        ' variable
        Dim oMail As MailItem
        Dim myFolder As Folder
        Dim myOlApp As Outlook.Application
        Dim myNamespace As NameSpace
        Dim nom_BAL As String
        Dim rep_envoye_serveur_BAL As String
     
        ' ############# A changer #####################
        ' nom de la boite aux lettres serveur
        nom_BAL = "Boîte aux lettres - USERNAME"
     
        ' nom du repertoire "element envoyé" coté serveur.
        rep_envoye_serveur_BAL = "Éléments envoyés"
        '##############################
     
        ' #############################
        ' affectation
        Set myOlApp = Outlook.Application
        Set myNamespace = myOlApp.GetNamespace("MAPI")
     
        ' dossier de destination - Boite local
        Set myFolder_destination = myNamespace.GetDefaultFolder(olFolderSentMail)
     
        ' dossier source de la boite serveur Exchange
        Set myFolder_source = myNamespace.Folders(nom_BAL).Folders(rep_envoye_serveur_BAL).Items
        Dim myRestrictItems As Outlook.Items
        Set myRestrictItems = myFolder_source
     
        ' deplace le mail
        For Each oMail In myFolder_source
             oMail.Move myFolder_destination
        Next oMail
        '##############################################
    End Sub
    Message à la ligne For Each oMail In myFolder_source : Incompatibilité de type.

    Question : Comment prendre en compte les mails de réponse au réunion? Ou comment justement prendre uniquement les emails ?
    Question bonus : pourquoi la boucle s'arrête à chaque rupture (Aujourd'hui, hier, semaine dernière, le mois dernier,....) ?

    Merci.
    Évènements dans le 06?
    www.sortir06.com

  2. #2
    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
    Bonjour,
    C'est parce que tu partais du principe que tous les éléments contenus dans ton Dossier sont du même type (courrier).

    Il faut juste vérifier avant le type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ' on verifie que c'est un mail
        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
    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 Sub Application_Quit()
     
        ' 06/11/2014 - V1
        ' permet de déplacer tous les mails envoyés coté serveur,
        ' vers element envoyé coté client dans le PST
     
        ' variable
        Dim oMail As MailItem
    Dim Item as object
        Dim myFolder As Folder
        Dim myOlApp As Outlook.Application
        Dim myNamespace As NameSpace
        Dim nom_BAL As String
        Dim rep_envoye_serveur_BAL As String
     
        ' ############# A changer #####################
        ' nom de la boite aux lettres serveur
        nom_BAL = "Boîte aux lettres - USERNAME"
     
        ' nom du repertoire "element envoyé" coté serveur.
        rep_envoye_serveur_BAL = "Éléments envoyés"
        '##############################
     
        ' #############################
        ' affectation
        Set myOlApp = Outlook.Application
        Set myNamespace = myOlApp.GetNamespace("MAPI")
     
        ' dossier de destination - Boite local
        Set myFolder_destination = myNamespace.GetDefaultFolder(olFolderSentMail)
     
        ' dossier source de la boite serveur Exchange
        Set myFolder_source = myNamespace.Folders(nom_BAL).Folders(rep_envoye_serveur_BAL).Items
        Dim myRestrictItems As Outlook.Items
        Set myRestrictItems = myFolder_source
     
        ' deplace le mail
        For Each Item In myFolder_source
      If Not Item.Class = olMail Then GoTo fin
    Set OMail = Item
             oMail.Move myFolder_destination
        Next Item
        '##############################################
    End Sub

    Autre chose, il existe dans la config la possibilité d'utiliser un fichier cache (c'est presque comme un pst mais c'est un .ost)

Discussions similaires

  1. [MySQL] ENvoyer un émail a une liste des emailes stocké dans une base de données My SQL
    Par belakhdarbts10 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 19/07/2012, 12h11
  2. [OL-2003] envoyer un email sans qu'il aille dans le dossier des emails envoyés
    Par o.deb dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 08/06/2010, 17h10
  3. Email envoyé depuis workflow SharePoint partent dans les junkmails
    Par ljin86 dans le forum Développement Sharepoint
    Réponses: 2
    Dernier message: 17/02/2010, 15h52
  4. Réponses: 7
    Dernier message: 21/07/2006, 09h31
  5. [Date] création d'une date à envoyer dans mySql
    Par michaelbob dans le forum JDBC
    Réponses: 4
    Dernier message: 15/09/2005, 17h59

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