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

Outlook Discussion :

Supression Mail dans Outlook


Sujet :

Outlook

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : mars 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Supression Mail dans Outlook
    Bonjour a tous,

    J'ai créer une Macro VBA dans Outlook pour permettre au utilisateur de ranger leur Mail dans des dossier spécifique propre a notre process, et cette macro marche très bien.
    Toutefois je n'arrive pas a résoudre un point qui me parait bête et pourtant je ne trouve pas de solution, c'est que une fois le mail enregistrer dans le dossier, je voudrais le mettre dans le dossier "Élément supprimée de Outlook", j'ai essayer plusieurs solution sans succès, pourriez vous me venir en aide ?

    Merci par 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
     
     Private Sub LanceSurSelection()
        Dim MonOutlook As Outlook.Application
        Dim LeMail As Object
        Dim LesMails As Outlook.Selection
        Set MonOutlook = Outlook.Application
     
        Set LesMails = MonOutlook.ActiveExplorer.Selection
     
        For Each LeMail In LesMails
            sav_mail_as_msg LeMail
        Next LeMail
     
        Set LesMails = Nothing
     
        'MsgBox "Fin de traitement"
    End Sub
    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
     
    Private Sub sav_mail_as_msg(Optional objCurrentMessage As Object)
     
        If objCurrentMessage Is Nothing Then Set objCurrentMessage = ActiveInspector.CurrentItem
     
        'Extraction et formatage de la date
        Annee = Mid(objCurrentMessage.CreationTime, 7, 4)
        Mois = Mid(objCurrentMessage.CreationTime, 4, 2)
        Jour = Mid(objCurrentMessage.CreationTime, 1, 2)
        Heure = Mid(objCurrentMessage.CreationTime, 12, 5)
        'Ici on construit le nom du fichier qui sera créé
        NomExport = Annee & Mois & Jour & "-" & Heure & "-" & MailSens & " - " & objCurrentMessage.Subject
     
        'Ici on défini le répertoire où l'enregistrer
        'repertoire = "c:\Cmc Interface\"
        'repertoire = BrowseForFolder("Choisissez la destination", SDossier(5, 0)) & "\"
     
        'Ici on supprime les caractères non autorisé dans les noms de fichiers
        PathNomExport = RepArchiv & Left(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace( _
        NomExport, "\", " "), "/", " "), ":", ""), "*", " "), "?", " "), "<", " "), ">", " "), "|", " "), ".", " "), """", ""), vbTab, ""), Chr(7), ""), 160) & ".msg"
     
        'Ici on vérifie que le fichier n'existe pas déjà sinon il serait écrasé
        n = 1
        MemPath = PathNomExport
        While Dir(PathNomExport) <> ""
            MsgBox "Le fichier " & vbCr & PathNomExport & vbCr & "existe déjà", vbInformation
            PathNomExport = Left(MemPath, Len(MemPath) - 4) & "(" & n & ")" & ".msg"
            n = n + 1
     
        Wend
        objCurrentMessage.SaveAs PathNomExport, OlSaveAsType.olMSG
     
    End Sub

  2. #2
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 830
    Points : 6 705
    Points
    6 705
    Billets dans le blog
    19
    Par défaut
    Salut,
    Simplement comme cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     For Each LeMail In LesMails
            sav_mail_as_msg LeMail
    lemail.delete
        Next LeMail
    mais si tu boucles avec des suppressions ou déplacements il faut faire une boucle inverse pour ne pas zapper d'Emails

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    For i = LesMails.count To 1 Step -1
        Set LeMail = LesMails(i)
        sav_mail_as_msg LeMail
        lemail.delete
    Set LeMail =nothing
    Next i

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : mars 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci Oliv-

    Mais j'ai déjà essayer ce script "LeMail.delete" dans ma recherche de solution, et ça bug

  4. #4
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 830
    Points : 6 705
    Points
    6 705
    Billets dans le blog
    19
    Par défaut
    Pourrais tu être plus précis ? qu'est ce qui bug le mail n'est pas supprimé ? ou le programme ne traite pas tous les Emails ? dans le second cas il faut utiliser la boucle for i...step-1

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : mars 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Voici 3 captures d’écran
    Le programme modifie
    Le message d'erreur
    Et l’écran VBA de deboguage avec la ligne surligne

    Nom : Code.jpg
Affichages : 9
Taille : 40,2 Ko

    Nom : Message.jpg
Affichages : 10
Taille : 14,9 Ko

    Nom : Deboguage.jpg
Affichages : 10
Taille : 42,9 Ko

  6. #6
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 830
    Points : 6 705
    Points
    6 705
    Billets dans le blog
    19
    Par défaut
    Qu'est ce qu'il a de particulier ce mail ? il est dans une boite partagée ?

    chez moi cela fonctionne très bien.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : mars 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Non il n'a rien de particulier, d’ailleurs je reproduit l'erreur avec des mails différents.

    Ça pourrait pas être un problème de complément que je n'est pas et il ne reconnait pas la commande ?

  8. #8
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 830
    Points : 6 705
    Points
    6 705
    Billets dans le blog
    19
    Par défaut
    IL FAUT IMPERATIVEMENT UTILISER UNE BOUCLE FOR I= ...STEP -1 et pas for each

    tu peux aussi le déplacer

    Set myDestFolder = session.GetDefaultFolder(olFolderDeletedItems)

    lemail.Move myDestFolder

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : mars 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci cette commande marche et ma permis de comprendre le problème,

    Car en faite dans mon Outlook je reçois deux boite mail différente, Ma perso (en Exchange), et ma pro (en pop).
    Ma macros est faite pour être utilise avec ma boite pro, mais je suppose que la commande "delete" cherche a supprimer dans ma boite perso.

    Et la quand j'ai utilise ton code de déplacement il a bien retire le mail de ma boite de réception pro, mais la mis dans le dossier supprimer de mon perso.
    Donc la question suivante est comment avec cette même commande envoyer le mail dans le dossier supprimer de ma pro, ou stipuler qu'il faut supprimer dans ma boite pro ?

  10. #10
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 830
    Points : 6 705
    Points
    6 705
    Billets dans le blog
    19
    Par défaut
    je pense déjà qu'il serait préférable de paramétrer ta bal pro en IMAP, c'est peut être la raison de l'échec.


    sinon on peut choisir le dossier de destination comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set myDestFolder = Application.Session.Stores("bal@societe.com").GetDefaultFolder(olFolderDeletedItems)
    ou comme cela pour trouver à partir du mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set myDestFolde = lemail.Parent.Store.GetDefaultFolder(olFolderDeletedItems)

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    mars 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : mars 2015
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Je suis pas fan du protocole IMAP c'est pour ça que ma boite perso est en Exchange beaucoup mieux.

    En tous cas mon problème est complètement résolue, je te remercie.

  12. #12
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    mars 2006
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 830
    Points : 6 705
    Points
    6 705
    Billets dans le blog
    19
    Par défaut
    Exchange est effectivement mieux que IMAP qui est mieux que POP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lire les mails dans outlook ..et les deplacer
    Par distogal dans le forum C#
    Réponses: 0
    Dernier message: 26/08/2009, 16h41
  2. deplacer un mail dans outlook
    Par distogal dans le forum Visual Studio
    Réponses: 2
    Dernier message: 20/08/2009, 11h51
  3. envoyer la liste des mails dans outlook
    Par raphael_g dans le forum IHM
    Réponses: 4
    Dernier message: 16/08/2009, 23h09
  4. Times New Roman à réception mail dans Outlook 2003…
    Par Mister Paul dans le forum Outlook
    Réponses: 4
    Dernier message: 04/04/2008, 10h52
  5. [Mail] Affichage entête des e-mails dans Outlook
    Par Manuxy dans le forum Langage
    Réponses: 1
    Dernier message: 18/07/2007, 17h15

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