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

Macros et VBA Excel Discussion :

Temps de traitement long pour récupérer des données Outlook


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Temps de traitement long pour récupérer des données Outlook
    Bonjour,

    J'ai créé une macro pour calculer la taille d'une BAL (avec calcul du dossier le plus gros).
    Je gère plusieurs boites de services. Le but étant de les monitorer pour savoir si elles ne dépasse pas les 250 Mo et faire de l'archivage si nécessaire.

    La macro fonctionne parfaitement...le seul problème, c'est qu'elle met beauuucoup de temps (on parle de 5 à 30min par BAL) !

    Dans outlook, si on va chercher la même info via les propriétés, cela mets à peine 5sec !
    Je me doute que ca n'utilise pas du vba pour faire cela mais ca fait une grande différence.

    Je voulais donc savoir si vous aviez du code ou autre pour peut être améliorer le temps de traitement...
    Le truc, c'est qu'apparemment, il n'y a pas de propriété "taille d'un dossier" et il faut donc passer par tous les mails de la boite pour calculer la taille du dossier et au final, de la boite elle même...

    Ci dessous mon 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
    Private Function GetMailBoxSize(Num_Boite) As Single
    Dim oSubFolder                As Outlook.MAPIFolder
    Dim oOlkApp                   As Outlook.Application
    Dim oOlkNameSpace             As Outlook.Namespace
    Dim oOlkMailbox               As Outlook.Folder
    Dim oPersonalFolder           As Outlook.Folder
    Dim lngsize                   As Single
     
    Set oOlkApp = CreateObject("Outlook.Application")
      Set oOlkNameSpace = oOlkApp.GetNamespace("MAPI")
      Set oOlkMailbox = oOlkNameSpace.Session.Folders.Item(Num_Boite).Folders.Item("Boîte de réception")
      Set oPersonalFolder = oOlkMailbox.Parent
      taille_dossier_max = 0
     
      ''' Appel de la fonction recursive pour chaque dossier
      For Each oSubFolder In oPersonalFolder.Folders
         lngsize = lngsize + GetMailBoxFolderSize(oSubFolder)
      Next
      GetMailBoxSize = lngsize
    Exit Function
     
    Private Function GetMailBoxFolderSize(ByVal TargetFolder As Outlook.MAPIFolder) As Single
    Dim oSubFolder                As Outlook.MAPIFolder
    Dim oMessage                  As Object
    Dim lngsize As Single
     
     ''' Calcule la taille de chaque message pour le dossier
      For Each oMessage In TargetFolder.Items
        lngsize = lngsize + oMessage.Size
      Next
      If lngsize > taille_dossier_max Then
        taille_dossier_max = lngsize
        nom_dossier_max = TargetFolder.FolderPath
      End If
    ''' Répète la procédure pour chaque sous-dossier ou celui ciblé
      For Each oSubFolder In TargetFolder.Folders
        lngsize = lngsize + GetMailBoxFolderSize(oSubFolder)
      Next
        GetMailBoxFolderSize = lngsize
    Exit Function

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 674
    Points
    18 674
    Par défaut

    Bonjour,

    instancier une autre application est forcément plus long que de l'effectuer dans l'application conteneur ‼

    Sinon voir dans le forum Outlook …


  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci Marc,

    Je vais essayer chez Outlook

Discussions similaires

  1. automate pour récupérer des données sur un site web
    Par castor75 dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2008, 19h59
  2. [LDAP] problème pour récupérer des données
    Par Bizoo dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/04/2007, 09h09
  3. Réponses: 1
    Dernier message: 14/03/2007, 13h08
  4. fonction pour récupérer des données xml
    Par jeff29 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/06/2006, 15h46
  5. cherche module ou langage pour récupérer des données audio..
    Par Ry_Yo dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 12/05/2003, 17h44

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