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 :

Fusionner plusieurs mail en 1 seul en VBA Outlook 2007


Sujet :

VBA Outlook

  1. #1
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut Fusionner plusieurs mail en 1 seul en VBA Outlook 2007
    Bonjour,
    j'aimerais savoir comment faire pour fusionner plusieurs mails d'un dossier outlook dans une seul mail.

    Merci.

  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
    bonsoir,
    c'est un peu léger comme explications,
    tous les emails, ceux sélectionnés, les fusionner vers quoi un nouveau mail, avec les infos d'enveloppe ?

  3. #3
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut
    Bonjour,
    Je veux juste regrouper le contenu de plusieurs mail dans un nouveau mail.
    Je n'ai pas besoin des infos du mail, expéditeur, etc....
    Soit les mails sélectionner dans un dossier, ou tous les mails d'un dossier.

    Merci.

  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,
    Voici un exemple avec une selection de Mails en HTML

    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 FusiondeTouteLaSelection()
        Dim MonOutlook As Outlook.Application
        Dim Mail As Object
        Dim LeMail As Outlook.MailItem
        Dim MyNewMail As Outlook.MailItem
        Dim LesMails As Object
        Dim HTML As String
        Set MonOutlook = Outlook.Application
        Set LesMails = MonOutlook.ActiveExplorer.Selection
     
        For Each Mail In LesMails
            If Mail.Class = olMail Then
                Set LeMail = Mail
                If HTML = "" Then
                    HTML = LeMail.HTMLBody
                Else
                    HTML = HTML & "<br>" & LeMail.HTMLBody
                End If
     End If
            Next Mail
     
     
        Set MyNewMail = MonOutlook.CreateItem(olMailItem)
        MyNewMail.HTMLBody = HTML
        MyNewMail.Display
        Set LesMails = Nothing
        MsgBox "Opération terminée"
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut
    Bonjour,
    Bonne année...

    C'est exactement ça. Mais y aurait 'il un moyen d'avoir aussi les images contenu dans le mail?

    Cordialement.

  6. #6
    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
    bonsoir,

    comme cela
    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 FusiondeTouteLaSelection()
        Dim MonOutlook As Outlook.Application
        Dim Mail As Object
        Dim LeMail As Outlook.MailItem
        Dim MyNewMail As Outlook.MailItem
        Dim LesMails As Object
        Dim HTML As String
        Dim objWordDocEditor
        Set MonOutlook = Outlook.Application
        Set LesMails = MonOutlook.ActiveExplorer.Selection
     
        Set MyNewMail = MonOutlook.CreateItem(olMailItem)
        Dim NewWordEditor
        MyNewMail.Display
        Set NewWordEditor = MyNewMail.GetInspector.WordEditor
     
        For Each Mail In LesMails
            If Mail.Class = olMail Then
                Set LeMail = Mail
     
                If LeMail.GetInspector.EditorType = olEditorWord Then
                    'Word format email so try to copy with formatting
                    'http://www.outlookcode.com/article.aspx?id=31
                    'http://support.microsoft.com/kb/212682
                    Set objWordDocEditor = LeMail.GetInspector.WordEditor
                    objWordDocEditor.Range.Copy
                    ' NewWordEditor.Range.Paste
                    Set objSel = NewWordEditor.Windows(1).Selection
                    objSel.Move wdStory, -1
                    objSel.Move wdParagraph, 1
     
                    objSel.Paste    'AndFormat (wdPasteDefault)
     
                End If
     
            End If
        Next Mail
     
     
     
        Set LesMails = Nothing
        MsgBox "Opération terminée"
    End Sub

  7. #7
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut
    Bonjour,
    Merci pour commencer.
    Quand je lance la macro j'ai une erreur la fenêtre VB s'ouvre en jaune sur la ligne :
    objSel.Move wdStory, -1


    Cordialement.

  8. #8
    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 essaye en ajoutant AVANT
    edit: Tu peux lire cet article sur l'utilisation de WORDEDITOR = équivalent de WORD

    https://msdn.microsoft.com/en-us/lib...singWordEditor

  9. #9
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut
    Bonjour,
    et merci.
    Je n'arrive pas à mettre une ligne de séparation entre les mails.

    Merci.

  10. #10
    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 tu peux utiliser enregistreur de macro de WORD pour trouver la syntaxe

    Selection.InlineShapes.AddHorizontalLineStandard

    te donne

    objSel.InlineShapes.AddHorizontalLineStandard

    puisque objSel est un objet SELECTION

    ajoute la ligne du milieu entre les 2 autres.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
              objSel.Move wdParagraph, 1
                        objSel.InlineShapes.AddHorizontalLineStandard
                        objSel.Paste    'AndFormat (wdPasteDefault)

  11. #11
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut
    Bonjour,
    Deux question.
    1) Le VB faut-il le mettre dans un module ou dans Thisoutllooksession.
    Si je le met dans ThisOutllooksession ou j'ai déjà des vb et j'ai comme première ligne : Option Explicit
    Quand je lance la macro elle se break sur : Set objsel = NewWordEditor.Windows(1).Selection (en jaune) et voila le message d'erreur (erreur de compilation - Variable non définie)

    2) je voulais ajouter un séparateur de ligne et un compteur de mail comme séparateur
    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
     
    Numero = 1                                                                                     ' Ligne ajoutée
     
        For Each Mail In LesMails
            If Mail.Class = olMail Then
                Set LeMail = Mail
     
                If LeMail.GetInspector.EditorType = olEditorWord Then
                    'Word format email so try to copy with formatting
                    'http://www.outlookcode.com/article.aspx?id=31
                    'http://support.microsoft.com/kb/212682
                    Set objWordDocEditor = LeMail.GetInspector.WordEditor
                    objWordDocEditor.Range.Copy
                    ' NewWordEditor.Range.Paste
                    Set objsel = NewWordEditor.Windows(1).Selection
     
                    objsel.Move wdStory, -1
     
    ' ligne ajoutée
                    objsel.TypeText Text:= _                                              
                    vbCrLf & "-----------------------------------------------------------------------  New  Mail N°" _
                    & Numero & "------------------------------------------------------------------------------------------" & vbCrLf
    ' Fin de ligne ajoutée
     
                   objsel.Move wdParagraph, 1
                   objsel.Paste    'AndFormat (wdPasteDefault)
     
                End If
     
            End If
            Numero = Numero + 1                    ' ajout de ligne
        Next Mail
    Quand je lance la macro et que j'ai sélectionné 4 mails. Dans le nouveau mail crée il n'y a que 3 mails. Et quand je relance la macro cette fois ci c'est vide. Il faut que j'éteigne Outlook pour relancer la macro
    partiellement correcte.

    merci pour ta réponse.

    Cordialement Dominique

  12. #12
    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,

    1) dans un module c'est très bien. Tu peux déclarer les variables non déclarées par un simple Dim NomVariable.

    2) chez moi en ajoutant tes lignes dans MON code cela fonctionne correctement, cela doit venir de la déclaration de tes variables, il faudrait que tu publies l'ensemble du code.

  13. #13
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut
    Bonsoir,
    Le voici.
    Je developpe un peu en VBA excel.Mais le VBA outlook je n'y comprend rien.
    merci pour ton aide.



    Option Explicit

    Sub FusiondeTouteLaSelection()
    On Error Resume Next
    Dim MonOutlook As Outlook.Application
    Dim Mail As Object
    Dim LeMail As Outlook.MailItem
    Dim MyNewMail As Outlook.MailItem
    Dim LesMails As Object
    Dim HTML As String
    Dim Numero As Integer
    Dim objWordDocEditor
    Set MonOutlook = Outlook.Application
    Set LesMails = MonOutlook.ActiveExplorer.Selection

    Set MyNewMail = MonOutlook.CreateItem(olMailItem)
    Dim NewWordEditor
    MyNewMail.Display
    Set NewWordEditor = MyNewMail.GetInspector.WordEditor
    Numero = 1
    For Each Mail In LesMails
    If Mail.Class = olMail Then
    Set LeMail = Mail

    If LeMail.GetInspector.EditorType = olEditorWord Then
    'Word format email so try to copy with formatting
    'http://www.outlookcode.com/article.aspx?id=31
    'http://support.microsoft.com/kb/212682
    Set objWordDocEditor = LeMail.GetInspector.WordEditor
    objWordDocEditor.Range.Copy
    ' NewWordEditor.Range.Paste
    Set objsel = NewWordEditor.Windows(1).Selection

    objsel.Move wdStory, -1

    objsel.TypeText Text:= _
    vbCrLf & "----------------------------------------------------------------------- New Mail N°" _
    & Numero & "------------------------------------------------------------------------------------------" & vbCrLf

    objsel.Move wdParagraph, 1
    objsel.Paste 'AndFormat (wdPasteDefault)

    End If

    End If
    Numero = Numero + 1
    Next Mail

    Set LesMails = Nothing
    MsgBox "Opération terminée"
    End Sub
    Cordialement.

  14. #14
    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,
    Ce code doit fonctionner !
    Il ignore toutefois les éléments qui ne sont pas des EMAILS.

  15. #15
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2003
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Janvier 2003
    Messages : 85
    Points : 51
    Points
    51
    Par défaut
    Bonjour,
    je ne comprend pas car je le teste sur un dossier ou je n'ai que des mails (des newsletters) et assez souvent j'ai un mail vide.
    il ne me remonte rien.

    As tu une autre solution. car celle la n'est pas génial.


    merci.

  16. #16
    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,
    Il faut bien sûr sélectionner tous les mails souhaités avant !
    Dans quel cas cela ne fonctionne t'il pas ?
    Tu peux suivre le déroulement en mode pas à pas en lançant avec F8 dans VBE.

Discussions similaires

  1. Réponses: 25
    Dernier message: 12/09/2014, 19h51
  2. Fusionner plusieurs PDF en un seul sous vba excel
    Par Kutoh dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 23/08/2013, 17h09
  3. [XL-2003] Fusionner plusieurs PDF en un seul sous vba excel
    Par olivier45fr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2012, 14h51
  4. Réponses: 0
    Dernier message: 21/09/2011, 18h27
  5. [VBA] Fusionner plusieurs colonnes en une seule
    Par brutos2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/01/2006, 14h25

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