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 :

Problème transfert de mail vers sous-repertoires


Sujet :

VBA Outlook

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur COBOL
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Problème transfert de mail vers sous-repertoires
    Bonjour,
    Je rencontre un petit souci avec ma macro, je souhaite transférer les mails d'un répertoire "ANOMALIES", vers des sous-répértoires "ANOMALIE 1", "ANOMALIE 2" et "ANOMALIE 3" :

    ANOMALIES
    - ANOMALIE 1
    - ANOMALIE 2
    - ANOMALIE 3
    Voici ce que j'ai réalisé pour l'instant :

    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
    Set myFolder = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    Set myFolder = myFolder.Folders("ANOMALIES")
    For Each Item In myFolder.Items
        If TypeOf Item Is MailItem Then
                If Item.Subject = "Anomalie 1" Then
                    Set myFolderDest = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
                    Set myFolderDest = myFolderDest.Folders("ANOMALIES")
                    Set myFolderDest = myFolderDest.Folders("ANOMALIE 1")
                    Item.Move myFolderDest
                End If
     
                If Item.Subject = "Anomalie 2" Then
                    Set myFolderDest = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
                    Set myFolderDest = myFolderDest.Folders("ANOMALIES")
                    Set myFolderDest = myFolderDest.Folders("ANOMALIE 2")
                    Item.Move myFolderDest
                End If
     
                If Item.Subject = "Anomalie 3" Then
                    Set myFolderDest = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
                    Set myFolderDest = myFolderDest.Folders("ANOMALIES")
                    Set myFolderDest = myFolderDest.Folders("ANOMALIE 3")
                    Item.Move myFolderDest
                End If
        End If
    Next
    J'ai 10 mails d'anomalies dans mon répertoire "ANOMALIES", quand je lance la macro seuls 5 Anomalies sont transférées, et jamais les mêmes.
    Par exemple un coup les anomalies 2 ne seront pas transférées, et un autre ce seront les anomalies 3, et parfois toutes les anomalies d'un même type sont transférées partiellement (certaines transférées, d'autres non)...
    Pouvez-vous me dire ce qui clocherait dans mon bout de code, SVP?


    Merci d'avance pour votre aide,

    Cordialement.

  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,
    Quand on déplace ou supprime des élements on ne peut pas utiliser for each
    il faut faire une boucle et commencer par la 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
    Set myFolder = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
    Set myFolder = myFolder.Folders("ANOMALIES")
     
    For i=myFolder.Items.count to 1 step -1
    Each Item In myFolder.Items
     
    set item = myFolder.Items(i)
        If TypeOf Item Is MailItem Then
                If Item.Subject = "Anomalie 1" Then
                    Set myFolderDest = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
                    Set myFolderDest = myFolderDest.Folders("ANOMALIES")
                    Set myFolderDest = myFolderDest.Folders("ANOMALIE 1")
                    Item.Move myFolderDest
                End If
     
                If Item.Subject = "Anomalie 2" Then
                    Set myFolderDest = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
                    Set myFolderDest = myFolderDest.Folders("ANOMALIES")
                    Set myFolderDest = myFolderDest.Folders("ANOMALIE 2")
                    Item.Move myFolderDest
                End If
     
                If Item.Subject = "Anomalie 3" Then
                    Set myFolderDest = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
                    Set myFolderDest = myFolderDest.Folders("ANOMALIES")
                    Set myFolderDest = myFolderDest.Folders("ANOMALIE 3")
                    Item.Move myFolderDest
                End If
        End If
    Next i

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur COBOL
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    ça marche nickel!

    merci pour votre aide,

    du coup j'avais essayé un truc avant et j'aurais aimé comprendre pourquoi celà ne marchait pas :

    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
    For I = 1 To NombreMAils
       Set Item = myFolder.Items(1)
           If TypeOf Item Is MailItem Then
                If Item.Subject = "Anomalie 1" Then
                    Set myFolderDest = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
                    Set myFolderDest = myFolderDest.Folders("ANOMALIES")
                    Set myFolderDest = myFolderDest.Folders("ANOMALIE 1")
                    Item.Move myFolderDest
                End If
     
                If Item.Subject = "Anomalie 2" Then
                    Set myFolderDest = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
                    Set myFolderDest = myFolderDest.Folders("ANOMALIES")
                    Set myFolderDest = myFolderDest.Folders("ANOMALIE 2")
                    Item.Move myFolderDest
                End If
     
                If Item.Subject = "Anomalie 3" Then
                    Set myFolderDest = GetNamespace("MAPI").GetDefaultFolder(olFolderInbox)
                    Set myFolderDest = myFolderDest.Folders("ANOMALIES")
                    Set myFolderDest = myFolderDest.Folders("ANOMALIE 3")
                    Item.Move myFolderDest
                End If
        I= I+1
        End If
    Next
    en gros, dans ce bout de code, je veux transférer après chaque transfert, le 1er mail du repertoire,

    merci d'avance pour votre retour,

    Cordialement.

  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
    Bonjour
    Je ne comprend pas ton second essais, quand tu dis "transférer" tu veux dire "déplacer" ?

    Sinon c'est le même code c'est juste qu'il faut commencer la boucle par la fin.

    sinon quand tu as

    items(1), items(2), items(3)
    et que tu supprimes ou déplace le 1

    tu obtiens
    items(1), items(2)

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2011, 16h18
  2. problème envoi de mail vers l'extérieur
    Par cavocavu dans le forum Administration système
    Réponses: 2
    Dernier message: 16/07/2008, 11h22
  3. [SBS 2003] Problème pour envoyer mail vers 1 domaine
    Par arnaud_verlaine dans le forum Exchange Server
    Réponses: 0
    Dernier message: 14/02/2008, 14h27
  4. transfert d'adresse mail vers outlook
    Par marbuly dans le forum VBA Access
    Réponses: 1
    Dernier message: 15/09/2007, 21h40
  5. [VBA-O] Classement mails envoyés vers sous-dossiers
    Par jmcrib dans le forum VBA Outlook
    Réponses: 4
    Dernier message: 08/02/2007, 16h42

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