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 :

Macro Outlook : Déplacer Mail de la Boite de Réception vers un Sous-Dossier


Sujet :

VBA Outlook

  1. #1
    Candidat au Club
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2023
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Macro Outlook : Déplacer Mail de la Boite de Réception vers un Sous-Dossier
    Bonjour à tous ! C'est ma 1ère demande sur ce forum qui m'a bien servis jusque là, mais je suis bloqué.

    En effet, je cherche à faire une Macro qui range les mails de ma boite de réception dans des sous-dossiers par rapport au adresse mail de l'expéditeur.

    Je me trouve coincé par une erreur "Incompatibilité de type". Le débuggeur ne me pointe même pas la ligne où se situe l'erreur

    A l'avenir je vais inclure ce code dans un Déclencheur de type "Application_NewMailEx" pour l'exécuter quand je reçois un mail, mais pour l'instant je déclenche la Macro à la main.

    Si une âme charitable peu m'aider ça serait super cool. Merci d'avance.

    -------------------------------------------------------------------------------------------------------------------------------------------------------
    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
    Sub TriMail()   'Macro pour Déplacer les mails voulus dans différents sous-dossier
     
        Dim myName As Outlook.NameSpace
        Dim BoitedeRecep As Outlook.Folder
        Dim DossierDesti As Outlook.Folder
        Dim myItems As Outlook.Items
        Dim myItem As Object
        Dim obj As Outlook.MailItem
        Dim i As Integer
     
        i = 0
        Set myName = Application.GetNamespace("MAPI")
        Set BoitedeRecep = myName.GetDefaultFolder(olFolderInbox)       'Dossier "Boite de Reception"
     
     
        For i = 1 To BoitedeRecep.Items.Count                           'Boucle du 1er mail de la Boite de Reception au Dernier mail
     
            Set obj = BoitedeRecep.Items.Item(i)                        'Mail numero i de la Boite de Reception
     
            Select Case obj.SenderEmailAddress                          'Different Cas par rapport à l'adresse mail du l'émetteur
     
                Case "dupont@gmail.com"
                    Set DossierDesti = BoitedeRecep.Folders("Test1")    'Dossier Destinataire du Mail
                    obj.Move DossierDesti                               'Déplacer le mail numero i
     
                Case "dupond@gmail.com"
                    Set DossierDesti = BoitedeRecep.Folders("Test2")
                    obj.Move DossierDesti
     
            End Select
     
        Next i
     
     
    End Sub
    -------------------------------------------------------------------------------------------------------------------------------------------------------

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 237
    Points : 470
    Points
    470
    Par défaut
    Bonjour MDMacsime et bienvenue sur le forum, le forum,

    Ce ne sera pas évident de te répondre avec si peu d’infos...
    Peut-être avec cette macro, mais sans certitudes :
    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
    Sub TriMail()   'Macro pour Déplacer les mails voulus dans différents sous-dossier
     
    Dim BoitedeRecep    As Outlook.Folder
    Dim myItem          As Object
    Dim myMail          As Outlook.mailItem
     
        Set BoitedeRecep = Application.Session.GetDefaultFolder(olFolderInbox)  'Dossier "Boite de Reception"
     
     
        For Each myItem In BoitedeRecep.Items                                   'Boucler sur tous les éléments de la boite de réception (mails, réunions, contacts, ..."
            If TypeOf myItem Is mailItem Then                                   'Filtrer sur les éléments de type mail
                Set myMail = myItem                                             'récupérer le mail
                Select Case LCase(myMail.SenderEmailAddress)
     
                    Case "dupont@gmail.com"
                       obj.Move BoitedeRecep.Folders("Test1")                   'Déplacer le mail
     
                   Case "dupond@gmail.com"
                       obj.Move BoitedeRecep.Folders("Test2")
     
               End Select
            End If
        Next myItem
     
        Set BoitedeRecep = Nothing
        Set myItem = Nothing
        Set myMail = Nothing
    End Sub
    A+

  3. #3
    Candidat au Club
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2023
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Merci mromain ! Je n'ai plus d'erreur !

    Par contre les mails ne se déplacent pas dans les Dossiers "Test1" et "Test2"

    Pour vérifier j'ai ajouté un nombre qui s'incrémente dans la Boucle For Each et je l'affiche en MsgBox à la fin, et la valeur correspond bien aux nombre de mail dans ma Boite de Réception.

    Est-ce que il faut définir autrement le Sous-Dossier ? (BoitedeRecep.Folders("Test1"))
    Ou est-ce que les Sous-Dossiers doivent être placé à un endroit particulier ?
    Nom : Capture d’écran 2023-11-03 142408.png
Affichages : 236
Taille : 4,1 Ko

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 138
    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 138
    Points : 9 972
    Points
    9 972
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    remplace Obj par myMail, qui est l'objet "mail" dans la procédure

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 237
    Points : 470
    Points
    470
    Par défaut
    Re-bonjour MDMacsime, bonjour joe.levrai,

    Par contre les mails ne se déplacent pas dans les Dossiers "Test1" et "Test2"
    Comme le dit joe.levrai, il faut remplacer obj.Move BoitedeRecep.Folders("Test") par myMail.Move BoitedeRecep.Folders("Test").

    A+

  6. #6
    Candidat au Club
    Homme Profil pro
    Automaticien
    Inscrit en
    Novembre 2023
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2023
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bonjour et Merci pour vos solutions,

    Malgré ça la macro ne fonctionne toujours pas. Je ne pense pas que ça soit un problème de code ...

    Je vous montre le code avec le résultat, mais aucun mails n'est déplacer dans les dossiers Test et Test1.

    Est-ce que quelqu'un a une idée ?? Sinon je vais abandonner et trouver une autre solution


    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
    Sub TriMail()   'Macro pour Déplacer les mails voulus dans différents sous-dossier
     
    Dim BoitedeRecep    As Outlook.Folder
    Dim myItem          As Object
    Dim myMail          As Outlook.MailItem
    x = 0
    y = 0
     
    Set BoitedeRecep = Application.Session.GetDefaultFolder(olFolderInbox)  'Dossier "Boite de Reception"
     
     
        For Each myItem In BoitedeRecep.Items                                    'Boucler sur tous les éléments de la boite de réception (mails, réunions, contacts, ..."
            If TypeOf myItem Is MailItem Then                                      'Filtrer sur les éléments de type mail
     
                Set myMail = myItem                                             'récupérer le mail
     
                Select Case LCase(myMail.SenderEmailAddress)
     
                    Case "dupont@gmail.com"
                        myMail.Move BoitedeRecep.Folders("Test")            'Déplacer le mail
                        MsgBox "dupont"
     
                    Case "dupond@gmail.com"
                       myMail.Move BoitedeRecep.Folders("Test1")
                       MsgBox "dupond"
     
                    Case Else
                        y = y + 1
               End Select
     
            End If
     
            x = x + 1
     
        Next myItem
     
        Set BoitedeRecep = Nothing
        Set myItem = Nothing
        Set myMail = Nothing
     
        MsgBox x & " " & y
     
    End Sub
    Résultat :

    Nom : Capture d’écran 2023-11-08 112832.png
Affichages : 223
Taille : 2,9 Ko

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 237
    Points : 470
    Points
    470
    Par défaut
    Bonjour MDMacsime, bonjour joe.levrai, le forum,

    Si la seule MsgBox affichée est celle que tu as mise en screenshot, et que tu n'as pas eu de MsgBox avec "dupont" ou "dupond", cela signifie que LCase(myMail.SenderEmailAddress) ne vaut jamais "dupont@gmail.com" ni "dupond@gmail.com".

    Si tel est le cas, cela signifie que sur les 356 éléments de ta boite de réception, tu as 349 mails (dont aucun ne provient de "dupont@gmail.com" ou "dupond@gmail.com") et d'autres éléments (demandes de RDV, ...).

    A+

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/09/2021, 15h31
  2. [OL-365] Collecteur seuil de mail présent en boite de réception
    Par iliasma dans le forum Outlook
    Réponses: 0
    Dernier message: 04/08/2021, 12h22
  3. Réponses: 0
    Dernier message: 07/03/2020, 11h24
  4. Macro Outlook trier mails par destinataire
    Par ngourdier dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 20/06/2019, 10h46
  5. Réponses: 32
    Dernier message: 02/06/2008, 11h02

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