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éplacement de mails en groupe


Sujet :

VBA Outlook

  1. #1
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut Déplacement de mails en groupe
    Bonjour,

    j'ai écris une macro qui filtre les mails en fonction de leur date de réception.

    je souhaite ensuite les déplacer dans un autre dossier.

    actuellement, je les prend un par un pour les déplacer. Ceci génère un temps de traitement très long dès 100 mails ... le but est d'utiliser cette macro pour des volumes beaucoup plus conséquents (40 000 mails).

    Est-il possible de transformer ma dernière boucle en une sélection de tous les mails renvoyés par la fonction Restrict, afin de faire un déplacement "groupé" de tous les mails ?

    j'ai tenté de déplacer directement la collection, mais sans succès.

    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
     
    Sub Deplacement()
     
        Dim OlApp As Outlook.Application
        Dim olNmSpace As Outlook.NameSpace
     
        Dim olFolderParent As Outlook.MAPIFolder
        Dim BoiteMail As String
        Dim Histomail As Outlook.MAPIFolder
        Dim DossierTri As Outlook.MAPIFolder
     
        Dim LesMails As Outlook.Items
        Dim LesMailsTries As Outlook.Items
        Dim Restriction As String
     
        Dim i As Integer
     
        BoiteMail = "LaBoiteMail"
     
     
        Set OlApp = CreateObject("Outlook.Application")
        Set olNmSpace = OlApp.GetNamespace("MAPI")
        Set olFolderParent = olNmSpace.Folders(BoiteMail)
        Set Histomail = olFolderParent.Folders("Boîte de réception")   '("*HISTOMAIL")
        Set DossierTri = olFolderParent.Folders("TEMP")
     
        Restriction = "[Receivedtime] < '" & Date - 30 & "'"
     
        Set LesMails = Histomail.Items
        Set LesMailsTries = LesMails.Restrict(Restriction)
     
        'MsgBox LesMailsTries.Count
     
        For i = LesMailsTries.Count To 1 Step -1
            LesMailsTries(i).move DossierTri
        Next
     
    End Sub
    Merci par avance aux avis éclairés de la communauté.

    Joe

  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
    Salut,

    Je ne vois pas vraiment d'autre méthode.

    A moins de prendre le problème à l'envers, et de ne déplacer que les Email récents, mais comme tu travailles dans la boite de reception, difficile de la renommer.

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    merci pour la réponse.

    En fait j'ai mis la boite de réception comme dossier source afin de faire des tests.

    Ca va s'appliquer à mon dossier Histomail.

    j'avais déjà pensé à le faire à l'envers, mais j'aboutis au même problème : je ne peux déplacer les mails que un par un.

    donc pour résumer, on ne peut pas déplacer une collection de MailItems sans boucler sur chaque Item

  4. #4
    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
    J'ai fait un test sur 5000 Emails (de petite taille) , en selectionnant au clavier ctrl+a puis déplacement à la souris cela met à peine 15 sec tandis qu'avec ta macro cela met 1 minute.

    il y a peut être une solution plus rapide en utilisant la méthode MoveMultiple de REDEMPTION
    http://www.dimastr.com/redemption/RDOItems.htm

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Je viens de tester cette méthode (que je ne connaissais absolument pas, merci au passage !)


    Le temps est identique, car la méthode est également du type "un par un"

    voici pour les curieux un exemple appliqué au dossier actif, qui déplace les mails dans le dossier "TEMP" situé une hiérarchie en dessous du dossier actif

    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
     
    Sub TestRDO()
     
        Dim Session As Object
        Dim Messages()
     
        Set Session = CreateObject("Redemption.RDOSession")
     
        Session.MAPIOBJECT = Application.Session.MAPIOBJECT
     
        Set Folder = Session.GetFolderFromID(Application.ActiveExplorer.CurrentFolder.EntryID)
     
        Set Selection = Application.ActiveExplorer.Selection
     
        ReDim Messages(Selection.Count)
     
        For i = 1 To Selection.Count
            Messages(i - 1) = Application.ActiveExplorer.Selection(i).EntryID
        Next
     
        ' MsgBox "terminé"
        Folder.Items.MoveMultiple Messages, Folder.Folders("TEMP")
     
     
     
    End Sub

    Pour juger de la rapidité du code, déquoter la ligne qui affiche "terminé"

    - 1 seconde pour grouper les mails dans Message()
    - plusieurs minutes ensuite pour effectuer le déplacement (testé avec 544 mails)



    Dommage donc.

    Je continue à chercher, et viendrai enrichir la discussion SI je trouve plus rapide.

Discussions similaires

  1. [XL-2007] Automatiser le déplacement de mails dans outlook avec EXCEL
    Par Guiggs dans le forum Excel
    Réponses: 3
    Dernier message: 08/07/2013, 13h24
  2. Envoyer un mail à un groupe de destinataires
    Par guillome29 dans le forum IHM
    Réponses: 2
    Dernier message: 30/01/2013, 10h32
  3. [AC-2007] Outlook : Déplacement de mail LU
    Par fbu78 dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/10/2012, 18h34
  4. Envoi mail à un groupe de personne avec lotus
    Par mariol dans le forum VBA Access
    Réponses: 5
    Dernier message: 11/04/2009, 20h14
  5. déplacement de mails d'une boite à l'autre
    Par phenixleo dans le forum Exchange Server
    Réponses: 0
    Dernier message: 18/03/2009, 10h08

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