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 :

Double retour à ligne dans le corps du mail html généré dans Outlook


Sujet :

VBA Outlook

  1. #1
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut Double retour à ligne dans le corps du mail html généré dans Outlook
    Bonjour,

    Ce code fonctionne à merveille, le seul gros problème est lorsque je veux modifier le texte dans le corps de texte du mail, lorsque j'appuie sur la touche ENTER l'espace entre les lignes est doublé.
    Pour remédier à ce problème je dois maintenir la touche SHIFT + ENTER pour avoir un espace correct entre les lignes. Impossible d'expliquer cela à mes collègues.

    Comment corriger ce problème ?

    Je vous remercie pour votre aide
    A+ Philippe

    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
    Sub Envoi_Mail_Client()
    Dim Destinataire_A As Variant
    Dim Destinataire_CC As Variant
    Dim Objet_mail As Variant
    Dim Message As Variant
    Dim messagerie As Object
    Dim Email As Object
        'Destinataire_A
        Destinataire_A = f.Cells(Ligne_Data_LOOK, 18)
        'Destinataire_CC
        Destinataire_CC = ""
        'Objet du mail
        Objet_mail = f.Cells(Ligne_Data_LOOK, 5) & "." & f.Cells(Ligne_Data_LOOK, 6) & " " & f.Cells(Ligne_Data_LOOK, 8) & " " & f.Cells(Ligne_Data_LOOK, 11)
        If MsgBox("Envoyer un mail à " & Destinataire_A & " ?", vbYesNo, "Mail") = vbYes Then
            'Corps du mail
            Message = "Bonjour,<br><br><br>Je reste volontiers à votre disposition pour tout complément d’information.<br>Meilleures salutations"
            'Création du mail avec Outlook
            Set messagerie = CreateObject("Outlook.Application")
            Set Email = messagerie.CreateItem(0) '0=Mail, 1=RDV, 2=Contact, 3=Tache, 6=Objet outlook
            Boutons_Fonctions.Signature_Mail_externe 'Lancer la macro pour renseigner la variable Signature
            With Email
                .To = Destinataire_A
                .CC = Destinataire_CC
                .BCC = "archi-dt@zurbuchensa.ch"
                .Subject = Objet_mail
                .htmlbody = "<p style='font-family:Calibri Light;font-size:11pt;'>" & Message & Signature & "</p>"
                .Display
            End With
            Set Email = Nothing
            Set messagerie = Nothing
            Unload USF_Details_Commande
            Unload Me
        End If
    End Sub

  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,

    Effectivement c'est pas évident à corriger sans une multitude de lignes HTML

    essaye cette alternative

    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
            Const wdCharacter = 1
            Const wdMove = 0
     
            With Email
                .To = Destinataire_A
                .CC = Destinataire_CC
                .Bcc = "archi-dt@zurbuchensa.ch"
                .Subject = Objet_mail
                .HTMLBody = "<p style='font-family:Calibri Light;font-size:11pt;'>" & Message & Signature & "</p>"
                .Display
     
                Set wdeditor = Email.GetInspector.WordEditor
                Set wordSelection = wdeditor.Application.Selection
                wordSelection.WholeStory
                wordSelection.Style = wdeditor.Styles("Normal")
                wordSelection.MoveLeft unit:=wdCharacter, count:=1, Extend:=wdMove
     
     
            End With

  3. #3
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    Merci pour cette astuce, elle fonctionne pour supprimer les double retour à la ligne, mais elle me supprime ma police "Calibri 11" et la remplace par "Times New Roman 12", par contre la police en gras est respectée. Étrange

    Une proposition pour contourner ce problème ?

    Je vous remercie
    Meilleures salutations
    Philippe

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Sub Confirmation_Date_Pose()
    Dim Destinataire_A As Variant
    Dim Destinataire_CC As Variant
    Dim Objet_mail As Variant
    Dim messagerie As Object
    Dim Email As Object
    Dim Message As Variant
    Dim Date_de_pose As Variant
    Dim Duree_de_pose As Variant
        'Destinataire_A
        Destinataire_A = f.Cells(Ligne_Data_LOOK, 18)
        'Destinataire_CC
        Destinataire_CC = "af.rey@zurbuchensa.ch"
        'Objet du mail
        Objet_mail = "Confirmation de la date de pose " & f.Cells(Ligne_Data_LOOK, 5) & "." & f.Cells(Ligne_Data_LOOK, 6) & " " & f.Cells(Ligne_Data_LOOK, 8) & " " & f.Cells(Ligne_Data_LOOK, 11)
        If MsgBox("Envoyer le à " & Destinataire_A & " ?", vbYesNo, "Mail") = vbYes Then
        Date_de_pose = f.Cells(Ligne_Data_LOOK, 29)
        Duree_de_pose = f.Cells(Ligne_Data_LOOK, 30)
        'Corps du mail
        Message = "<p style='font-family:calibri;font-size:11pt;'>" & _
                    "<I>" & _
                    "Vérifier les destinataires du mail" & _
                    "<br>Vérifier la signature du mail" & _
                    "<br>_________________________________________________________" & _
                    "<br>Effacer tout le texte ci-dessus avant d'envoyer ce mail" & _
                    "<br></I>" & _
                    "Bonjour," & _
                    "<br><br>Pourriez-vous nous confirmer la date de pose du " & Date_de_pose & " pour une durée de " & Duree_de_pose & " jours ouvrables ?" & _
                    "<br><br>Pour pouvoir réaliser la pose à la date convenue, les points suivants doivent être réalisés : " & _
                    "<br><B>" & _
                    "<br> - Mise au hors d'eau du bâtiment réalisée." & _
                    "<br> - Une référence à + 1 mètre du sol doit être tracée à tous les étages." & _
                    "<br> - Les échafaudages et tous les gardes corps en place." & _
                    "<br> - Plateforme de déchargement en place." & _
                    "<br> - Accès et zone de stockage à disposition." & _
                    "<br> - Grue de chantier à disposition pour la distribution des éléments et des verres." & _
                    "</B>" & _
                    "<br><br>Dans l’attente de votre confirmation, je vous souhaite une bonne fin de journée" & _
                    "<br>Meilleures salutations"
            'Création du mail avec Outlook
            Const wdCharacter = 1 'Pour supprimer le double retour ligne dans le mail
            Const wdMove = 0 'Pour supprimer le double retour ligne dans le mail
            Set messagerie = CreateObject("Outlook.Application")
            Set Email = messagerie.CreateItem(0) '0=Mail, 1=RDV, 2=Contact, 3=Tache, 6=Objet outlook
            Boutons_Fonctions.Signature_Mail_externe 'Lancer la macro pour renseigner la variable Signature
            With Email
                .To = Destinataire_A
                .CC = Destinataire_CC
                .Bcc = "archi-dt@zurbuchensa.ch"
                .Subject = Objet_mail
                .HTMLBody = "<p style='font-family:Calibri Light;font-size:11pt;'>" & Message ' & Signature & "</p>"
                .Display
                Set wdeditor = Email.GetInspector.WordEditor 'Pour supprimer le double retour ligne dans le mail
                Set wordSelection = wdeditor.Application.Selection 'Pour supprimer le double retour ligne dans le mail
                wordSelection.WholeStory 'Pour supprimer le double retour ligne dans le mail
                wordSelection.Style = wdeditor.Styles("Normal") 'Pour supprimer le double retour ligne dans le mail
                wordSelection.MoveLeft unit:=wdCharacter, Count:=1, Extend:=wdMove 'Pour supprimer le double retour ligne dans le mail
            End With
            Set Email = Nothing
            Set messagerie = Nothing
            Unload USF_Details_Commande
            Unload Me
        End If
    End Sub

  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
    En fait l'application du style "normal" , reprend la police qui est définie pour ce style.


    essaye 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
       Set wdeditor = Email.GetInspector.WordEditor
            Set wordSelection = wdeditor.Application.Selection
            wordSelection.WholeStory
     
            With wordSelection.ParagraphFormat
                .SpaceBefore = 0
                .SpaceBeforeAuto = False
                .SpaceAfter = 0
                .SpaceAfterAuto = False
                .CharacterUnitLeftIndent = 0
                .CharacterUnitRightIndent = 0
                .CharacterUnitFirstLineIndent = 0
                .LineUnitBefore = 0
                .LineUnitAfter = 0
            End With
            '            wordSelection.Style = wdeditor.Styles("Normal")
            wordSelection.MoveLeft unit:=wdCharacter, count:=1, Extend:=wdMove

  5. #5
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Bonjour,

    Pas encore pu tester, mais j'ai beaucoup de macro pour ce genre de mail.

    Est-il possible de faire une fonction avec cette macro ou autre, en fait l'écrive qu'une seule fois pour toutes les macros ?

    Où faut-il la placer dans ma macro ?

    Je vous remercie
    Meilleures salutations
    Philippe

  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
    Oui bien sûr


    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
     
    Sub SetInterligne(Email as object)
            Const wdCharacter = 1
            Const wdMove = 0
            Set wdeditor = Email.GetInspector.WordEditor
            Set wordSelection = wdeditor.Application.Selection
            wordSelection.WholeStory
     
            With wordSelection.ParagraphFormat
                .SpaceBefore = 0
                .SpaceBeforeAuto = False
                .SpaceAfter = 0
                .SpaceAfterAuto = False
                .CharacterUnitLeftIndent = 0
                .CharacterUnitRightIndent = 0
                .CharacterUnitFirstLineIndent = 0
                .LineUnitBefore = 0
                .LineUnitAfter = 0
            End With
            '            wordSelection.Style = wdeditor.Styles("Normal")
            wordSelection.MoveLeft unit:=wdCharacter, count:=1, Extend:=wdMove
    end sub

    et tu l'appelles comme cela

    call SetInterligne(Email)

  7. #7
    Membre habitué Avatar de goninph
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2013
    Messages : 725
    Points : 184
    Points
    184
    Par défaut
    Un grand merci, cette macro fonctionne à merveille.

    Il est tout de même incroyable de devoir écrire toutes ces lignes de code pour un banal retour à la ligne.

    Encore mille mercis
    Bon weekend
    Philippe

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

Discussions similaires

  1. [PHP 5.3] Retour à ligne dans un e-mail
    Par hanitax dans le forum Langage
    Réponses: 2
    Dernier message: 06/02/2013, 11h27
  2. retour ligne dans mail sous lotus
    Par fomy dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/07/2008, 15h19
  3. Retour ligne dans une date
    Par Sofute dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/12/2007, 14h06
  4. Réponses: 9
    Dernier message: 21/02/2007, 13h20
  5. [Mail] Double saut ligne dans envois de mails
    Par Oberown dans le forum Langage
    Réponses: 1
    Dernier message: 30/03/2006, 12h47

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