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 :

[OL-2007] Réattacher des pièces jointes pour un nouveau mail.


Sujet :

VBA Outlook

  1. #1
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut [OL-2007] Réattacher des pièces jointes pour un nouveau mail.
    Bonjour,

    Je me place dans Outlook avec une macro VBA. Je voudrais sélectionner un mail reçu et le reproduire à l'identique pour l'envoyer.
    Malheureusement,
    • Si j'utilise MailItem.Copy, j'ai la copie d'un mail reçu. Donc je ne peux que répondre et transférer.
    • Si j'utilise MailItem.Forward, j'ai un mail parfait pour être envoyé mais avec des entêtes disgracieuses. J'ai abandonné l'idée de les enlever du code html.
    • Si je fabrique un nouveau mail, je n'arrive pas à ré-attacher les anciennes pièces jointes.


    Je perds patience.

    Comment joint-on les pièces jointes d'un autre mail ?
    OU
    Comment réenvoie-t-on un courrier ? (le pire, c'est que cette fonctionnalité simple existe dans outlook mais pas simple en VBA... à moins que vous sachiez ...)


    Merci de votre attention.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  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,
    Sans programme ou complément additionnel, il me semble qu'il y a 2 méthodes possibles.

    La première, tu enregistres dans un dossier windows toutes les PJ puis tu les ajoutes à ton Nouvel Email.

    La seconde, tu transfères le Mail et corrige les éléments nécessaires. voici un exemple de cette méthode

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    Sub MsgRenvoi(myMail As MailItem)
    '---------------------------------------------------------------------------------------
    ' Procedure : MsgRenvoi
    ' Author    : Oliv'
    ' Date      : 24/04/2015
    ' Purpose   : RENVOI
    '---------------------------------------------------------------------------------------
    '
        Dim LaReponse As Outlook.MailItem
        Dim StrID As String
        Dim olNS As Outlook.NameSpace
        Dim Msg As Outlook.MailItem
        Dim Destinataire, liste
        Dim myRecipient As Outlook.Recipient
        Dim continuer
     
        StrID = myMail.EntryID
        Set olNS = Application.GetNamespace("MAPI")
        Set Msg = olNS.GetItemFromID(StrID)
     
        Set LaReponse = Msg.Forward    ' car ReplyAll ne met pas les PJ
        LaReponse.subject = Msg.subject
            Set myRecipient = LaReponse.Recipients.add(Msg.SenderEmailAddress)
            myRecipient.Resolve
     
        For Each Destinataire In Msg.Recipients
            Set myRecipient = LaReponse.Recipients.add(Destinataire.Address)
            On Error Resume Next
            myRecipient.Type = Destinataire.Type
            myRecipient.Resolve
            On Error GoTo 0
            If Not myRecipient.Resolved Then
                myRecipient.Delete
                Set myRecipient = LaReponse.Recipients.add(Destinataire.Name)
                myRecipient.Type = Destinataire.Type
                myRecipient.Resolve
            End If
        Next Destinataire
     
        Select Case LaReponse.BodyFormat
            'ici on vérifie le format du message HTML OU BRUT ...
     
        Case olFormatHTML:
            LaReponse.HTMLBody=Msg.HTMLBody
     
        Case Else
            ObjCurrentMessage.Body = Msg.body
     
        End Select
        LaReponse.Display
        '    LaReponse.Send
        Set Msg = Nothing
        Set olNS = Nothing
    End Sub

  3. #3
    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
    en fait il y a aussi cette méthode très simple à partir d'un Email Ouvert :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub RenvoiEmail()
     
        Dim objMail As Outlook.MailItem
        Set objMail = ActiveInspector.CurrentItem
        'ici on modifie le corps du Mail
        objMail.HTMLBody = "test " & objMail.HTMLBody
        objMail.Send
     
    End Sub

  4. #4
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    C'est bien tout le dilemme. La modification du html n'est pas un ajout mais une suppression. Et détecter les vilaines entêtes dans du code html touffu avec les outils VBA, j'abandonne tout de suite.

    Le format du mail n'est pas tout. Car il peut me sortir un mail en html, dont les photos insérées en plein milieu du texte sont changées par le texte alternatif ou un lien cassé.

    Pour être franc, pressé par le temps, j'ai changé ma façon de faire. Maintenant, j'utilise la méthode Copy d'un mail enregistré en brouillon. Le titre (sans "Fwd:"), les photos insérées, la capacité d'envoi sont intactes et je peux continuer mon script et l'envoyer.

    Merci de t'être penché sur mon problème.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  5. #5
    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
    Citation Envoyé par Flodelarab Voir le message
    ... La modification du html n'est pas un ajout mais une suppression. Et détecter les vilaines entêtes dans du code html touffu avec les outils VBA, j'abandonne tout de suite.

    Le format du mail n'est pas tout. Car il peut me sortir un mail en html, dont les photos insérées en plein milieu du texte sont changées par le texte alternatif ou un lien cassé.
    Qu'est ce que tu entends par "n'est pas un ajout mais une suppression"
    dans mon premier exemple je remet le hmtl du message d'origine.

  6. #6
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 459
    Points
    13 459
    Par défaut
    Hum. Pour ne pas dire de bêtise, j'ai re-testé ce matin. Et ça marche.

    Hier, il me remplaçait la photo par un texte "photo.jpg".

    Bref. Le problème est résolu.

    Merci!
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

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

Discussions similaires

  1. [OL-2010] Enregistrement des pièces jointes de tous les mails d'un fichier pst
    Par Daejung dans le forum Outlook
    Réponses: 3
    Dernier message: 21/03/2015, 07h37
  2. [OL-2007] Insérer pièces jointes dans un nouveau mail à partir d'un mail reçu
    Par Pikou123 dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 12/03/2014, 17h58
  3. Sauvegarde des pièces jointes d'un nouveau message
    Par antakini dans le forum VBA Outlook
    Réponses: 16
    Dernier message: 03/10/2008, 14h40
  4. Réponses: 1
    Dernier message: 01/02/2008, 20h44
  5. [FAQ] [Access 2007] Gestion des pièces jointes en VBA
    Par Tofalu dans le forum Contribuez
    Réponses: 4
    Dernier message: 04/07/2006, 00h16

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