Discussion: Mise en forme et remplacements [OL-2016]

  1. #1
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    août 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 468
    Points : 133
    Points
    133

    Par défaut Mise en forme et remplacements

    Bonjour,

    Quand je veux transférer un mail et que celui d'origine n'étant pas très joli, je souhaite le remettre en forme avant de l'envoyer (remplacer certains champs, police,...)

    Voici mon code, mais cela ne fonctionne pas, si vous avez des idées je suis preneur.

    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
     
    Option Explicit
      Dim Email
      Dim EmailMsg
      Dim olMailItem
      Dim zone_ecran2 As String
      Dim mail_html As String 'pour HTML dans le corps du message
      Dim Rep As Integer ' pour réponse de l'utilisateur
      Dim repmsg As VbMsgBoxResult
      Dim num_ligne As Integer
    Sub Macro_modifie_mail()
     
    Dim App As Outlook.Application
    Dim INSP As Outlook.Inspector
    Dim Expl As Outlook.Explorer
    Dim OITEM As Object
    Dim vntProp As Variant
    Set App = Outlook.Application 'désigne Outlook
    Set Expl = App.ActiveExplorer 'désigne l'exploreur actif càd la fenêtre des dossiers.
    Set INSP = ActiveInspector 'désigne la fenêtre de l'élement actif
     
    Set Email = CreateObject("Outlook.Application")
    Dim EmailMsg As Object
    Set EmailMsg = Email.CreateItem(0)
     
    On Error GoTo errorHandler  'Si une erreur survient, on va à la ligne "errorHandler"
     
    Dim Itm As Object
    Set Itm = ActiveInspector.CurrentItem
    Itm.HTMLBody = Replace(Itm, "________________________________________", " ") ' Remplacer les tirets pas jolis par un espace
     
    Set EmailMsg = Nothing
    Set Email = Nothing
    Exit Sub ' SI TOUT EST OK
    errorHandler:  MsgBox ("Attention !"), vbCritical, "PAS BON !"
     
    End Sub

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 376
    Points : 5 883
    Points
    5 883
    Billets dans le blog
    16

    Par défaut

    Bonjour,

    J'ai fait le ménage,beaucoup de choses qui ne servent à rien

    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
     
    Option Explicit
     
    Sub Macro_modifie_mail()
     
    'On Error GoTo errorHandler  'Si une erreur survient, on va à la ligne "errorHandler"
    'vaut mieux avoir l'erreur lors du développement
     
    Dim Itm As Object
    Set Itm = ActiveInspector.CurrentItem
    Itm.HTMLBody = Replace(Itm.HTMLBody, "________________________________________", " ") ' Remplacer les tirets pas jolis par un espace
     
    Exit Sub ' SI TOUT EST OK
    errorHandler:  MsgBox ("Attention !"), vbCritical, "PAS BON !"
     
    End Sub

  3. #3
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    août 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 468
    Points : 133
    Points
    133

    Par défaut

    Super, cela fonctionne bien pour les remplacements !

    Petite question pour la mise en forme : je voulais remplacer la police existante mais le code ci-dessous efface tout...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Itm.HTMLBody = "<font style='font-family:Arial;font-size:11pt;color:#000000;font-style:normal;'></font>"
    J'ai essayé ainsi mais j'ai un message d'erreur : Argument non facultatif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Itm.HTMLBody = Replace(Itm.HTMLBody, "<font style='font-family:Arial;font-size:11pt;color:#000000;font-style:normal;'></font>")
    Merci

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 3 376
    Points : 5 883
    Points
    5 883
    Billets dans le blog
    16

    Par défaut

    Bonjour,
    JE pense que cela va être très difficile en utilisant la modification du code HTML, il serait préférable d'utiliser l'objet WORDEDITOR , qui permet de traiter la mail comme un document WORD et d'utiliser les "macros" WORD

    https://www.developpez.net/forums/d1...tionnent-word/

  5. #5
    Membre habitué Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    août 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : août 2009
    Messages : 468
    Points : 133
    Points
    133

    Par défaut

    Génial, cela fonctionne bien !

    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
    Sub Macro_modifie_mail()
     
    ' Dimensions
    Dim Itm As Object
    Dim outlookwordeditor
    Dim appOutlook As Outlook.Application
    Dim oMail
    Dim ObjwdSelection
    ' Paramètres
    Set Itm = ActiveInspector.CurrentItem ' mail actif
    Set appOutlook = Application
    Set oMail = appOutlook.ActiveInspector.CurrentItem
    Set outlookwordeditor = oMail.GetInspector.WordEditor
    Set ObjwdSelection = outlookwordeditor.Application.Selection    ' on utilise les intructions WORD précédée de outlookwordeditor
     
     
    ObjwdSelection.WholeStory ' Sélection totale
    With ObjwdSelection.Font ' Format de police
        .Name = "Arial"
        .Size = 12
    End With

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 21/10/2016, 11h05
  2. [PPT-2007] Mise en forme texte remplacé
    Par stroumfette44 dans le forum VBA PowerPoint
    Réponses: 0
    Dernier message: 15/12/2015, 11h43
  3. [WD-2010] Remplacement de mise en forme
    Par Ysae68 dans le forum VBA Word
    Réponses: 1
    Dernier message: 03/12/2013, 16h57
  4. [PHP 5.2] remplacer du texte après mise en forme
    Par mehdi1968 dans le forum Fonctions
    Réponses: 15
    Dernier message: 10/05/2012, 21h40
  5. [XL-2007] code pour remplacer mise en forme conditionnelle
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/04/2012, 11h15

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