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

Macros et VBA Excel Discussion :

Insertion d'une ligne d'entete dans un mail outlook.


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 66
    Par défaut Insertion d'une ligne d'entete dans un mail outlook.
    Bonjour,

    Je me suis fait une macro pour faire mes mailings simple. Et naturellement, je souhaiterait pousser plus loin et personnaliser les intitulés des mails avec un "Mr TOTO,..." au lieu d'un "Bonjour" généraliste.

    Pour faire ces mailing, je me crée un brouillon complet (avec le texte, la signature, les images, etc) dont je me resers en lui appliquant la bonne addresse mail.
    Cependant, si j'essaie de personnaliser la première ligne il m'arrive toujours des erreurs : perte d'image, perte de mise en forme, perte de message.
    Voici mes codes
    Pertes du message (il ne reste que la première ligne) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                Set oEmail = MyNameSpace.GetDefaultFolder(16).items(1).Copy
                        oEmail.to = Recipient 'adresse prédéfinie
                        texte_initiale = oEmail.htmlBody 'recueil du texte initiale
                        oEmail.Body = "Mr Toto" 'sera personnaliser par la suite
                        debut_texte = oEmail.htmlBody
                        oEmail.htmlBody = debut_texte & Chr(13) & texte_initiale
    Perte d'image et de mise en forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                Set oEmail = MyNameSpace.GetDefaultFolder(16).items(1).Copy
                        oEmail.to = Recipient 'adresse prédéfinie
                        texte_initiale = oEmail.Body 'recueil du texte initiale
                        debut_texte = "Mr Toto" 'sera personnaliser par la suite
                        oEmail.Body = debut_texte & Chr(13) & texte_initiale
    Y a t-il moyen d'intervenir directement sur la première ligne du corps de texte et d'éviter ainsi le passage par une copie des information à travers texte_initiale dans mon exemple...
    Ca permettrait de conserver les images et la mise en forme

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    Bonjour,

    Dans ton brouillon, ajoute une chaine de caractères correspondant à l'emplacement du nom que tu souhaites insérer ("ChampNom" dans l'exemple suivant).
    La procédure va remplacer la chaine de caractères initiale par le contenu de la variable 'Cible'.

    Testé avec Office 2007 : les mises en formes du message initial sont conservées suite à la modification.

    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
    Sub Test()
        Dim Ol As Outlook.Application
        Dim olInbox As MAPIFolder
        Dim olSpace As Namespace
        Dim It As MailItem
        Dim Cible As String, Resultat As String
     
        Cible = "Monsieur Toto"
     
        Set Ol = New Outlook.Application
        Set olSpace = Ol.GetNamespace("MAPI")
        'Définit le dossier
        Set olInbox = olSpace.GetDefaultFolder(16)
        'Définit un message du dossier
        Set It = olInbox.Items(1)
     
        'Remplacement du champ initial
        Resultat = Replace(It.HTMLBody, "ChampNom", Cible)
        'Application dans le corps du message
        It.HTMLBody = Resultat
     
        'Essai pour visualiser le résultat
        It.Display
     
        Ol.Quit
     
    End Sub

    ps
    Pour l'instant je n'ai pas eu le temps de donner suite ton autre soucis:
    http://www.developpez.net/forums/d73...nu-contextuel/


    Bon week end
    michel

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 66
    Par défaut
    T'es un dieu !!
    Merci Michel.
    Cette solution ouvre les portes a bien d'autres applications.

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

Discussions similaires

  1. Forçage insertion d'une ligne dans un état
    Par lbrun79 dans le forum IHM
    Réponses: 2
    Dernier message: 12/06/2008, 21h25
  2. insertion d'une ligne dans un StringGrid
    Par ludojojo dans le forum C++Builder
    Réponses: 3
    Dernier message: 04/06/2008, 21h26
  3. Ajax : insertion d'une ligne dans un tableau
    Par Flackou dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 26/05/2008, 13h50
  4. Insertion d'une Ligne dans MSFlexGrid
    Par Bib0ucH dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 13/12/2007, 12h12
  5. Réponses: 2
    Dernier message: 15/11/2007, 17h43

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