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 :

Mettre en gras une partie du texte dans un code VBA - [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut Mettre en gras une partie du texte dans un code VBA -
    Bonjour tout le monde,

    J'ai un peu honte... J'ai fait des recherches sur le forum et j'ai trouvé des questions similaires à la mienne mais comme je n'ai pas une compréhension parfaite, ni même avancée, du code VBA je n'arrive pas à adapter les solutions proposées à mon cas.

    Voilà : j'envoie un mail directement depuis Excel, avec le corps du message inscrit dans le code VBA (que j'ai recopié d'un site internet et qui fonctionne très bien). Le hic, c'est que je dois mettre en gras certains groupes de mots placés entre " ". J'ai essayé les balises (?) <B> de chaque côté de mon groupe de mots mais lesdites balises apparaissent dans le mail et rien n'est en gras... Ça fait pas très beau comme résultat !

    Voici mon code :

    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
    Sub SendEMailHypo()
        Dim Email As String, Subj As String
        Dim Msg As String, URL As String
        Email = Cells(ActiveCell.Row, 25)
     
        Subj = "Votre Lorem ipsum"
     
        Msg = ""
        Msg = Msg & "Bonjour " & Cells(ActiveCell.Row, 4) & "," & vbCrLf & vbCrLf _
        & "Déjà 5 ans et voilà que Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. " _
        & vbCrLf & vbCrLf _
        & "Vous désirez obtenir Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat." _
        & vbCrLf & vbCrLf _
        & "Dans l'attente blablablabla" _
        & vbCrLf & vbCrLf _
     
        'Replace spaces with %20 (hex)
        Subj = Application.WorksheetFunction.Substitute(Subj, " ", "%20")
        Msg = Application.WorksheetFunction.Substitute(Msg, " ", "%20")
     
        'Replace carriage returns with %0D%0A (hex)
        Msg = Application.WorksheetFunction.Substitute(Msg, vbCrLf, "%0D%0A")
     
        'Create the URL
        URL = "mailto:" & Email & "?subject=" & Subj & "&body=" & Msg
     
        'Execute the URL (start the email client)
        ShellExecute 0&, vbNullString, URL, vbNullString, vbNullString, vbNormalFocus
     
        'Wait two seconds before sending keystrokes
        'Application.Wait (Now + TimeValue("0:00:02"))
        'Application.SendKeys "%s"
    End Sub
    Je voudrais mettre en gras, par exemple, "sed diam nonummy nibh euismod tincidunt" dans le premier paragraphe, et "Ut wisi enim ad minim veniam" dans le deuxième.

    Que dois-je faire ? Est-ce qu'il faut couper les phrases là où on veut formater en gras et les reprendre ensuite avec des & et je ne sais quel autre signe magique ou mystérieuse "balise" ?

    J'ai vu aussi qu'il y a une question de format HTML... Mais encore là je nage : dans mon code, je ne vois rien qui indique ce format ou un autre ?

    Merci à l'avance de votre aide.

  2. #2
    Membre expérimenté
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2013
    Messages
    885
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 885
    Points : 1 499
    Points
    1 499
    Par défaut mettre en gras
    Bonsoir,

    Et si tu écrivais ton message sous word avec la mise en forme souhaitée pour :

    - Soit le copier dans le corps de ton VBA comme actuellement (ce qui n'est pas très heureux selon moi)
    - Soit le mettre en pièce jointe

    cordialement,

  3. #3
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut
    Bonjour Nibledispo,

    Merci tout d'abord de m'avoir consacré un peu de votre temps.

    Malheureusement, les deux solutions que vous proposez ne sont pas satisfaisantes : la première ne fonctionne pas et la seconde n'est pas envisageable.
    Je sais pour avoir parcouru le forum que ce que je demande est possible, mais je ne sais tout simplement pas adapter les pistes que j'ai trouvées à mon cas...

  4. #4
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut Autre code... Autre problème...
    Re-bonjour à tous,

    J'ai fini par trouver un autre code qui me permet d'utiliser les balises pour mettre mon texte en gras. Yé !

    Cependant, au lieu d'utiliser le Times New Roman 11 qui est la police par défaut de mes messages Outlook, il utilise Calibri 10... ??? Je ne vois pourtant nulle part dans ce code une déclaration de Font... ?

    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
    Sub EnvoiMail()
    ' Working in Office 2000-2013
        Dim OutApp As Object
        Dim OutMail As Object
        Dim strbody As String
     
        Set OutApp = CreateObject("Outlook.Application")
        Set OutMail = OutApp.CreateItem(0)
     
        strbody = "Bonjour," & _
                  "<br><br>Blalalala ldjf slfjslfj slfjs;alfjs;aldsa;ldasldfjas;d.<br>" & _
                  "<br>Blablalbalblablalala <b>en gras en gras en gras</b> blablalbalblalalalalala." & _
                  "<br><br>blablablablablabla" & _
                  "<br><br><b>PS. Blalalalalalalalalalalala</b>."
     
     
        On Error Resume Next
     
        With OutMail
            .Display
            .To = Cells(ActiveCell.Row, 25)
            '.CC = ""
            '.BCC = ""
            .Subject = "Test mail"
            .HTMLBody = strbody & "<br>" & .HTMLBody
            .Display
        End With
     
        On Error GoTo 0
        Set OutMail = Nothing
        Set OutApp = Nothing
    End Sub
    Auriez-vous une solution ? Merci à l'avance !

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Bonjour,

    Quelque chose comme ce qui suit (à tester)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      strbody = "<FONT face=" & chr(34) & "Times New Roman" & chr(34) & "size=" & chr(34) & "3" & chr(34) & ">" & _
                  "Bonjour," & _
                  "<br><br>Blalalala ldjf slfjslfj slfjs;alfjs;aldsa;ldasldfjas;d.<br>" & _
                  "<br>Blablalbalblablalala <b>en gras en gras en gras</b> blablalbalblalalalalala." & _
                  "<br><br>blablablablablabla" & _
                  "<br><br><b>PS. Blalalalalalalalalalalala</b>." & _
                  "</FONT>"

  6. #6
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut
    Bonsoir PMO2017,

    Hélas !

    Avant de coller votre code, mon "Bonjour" est en Times New Roman, mais c'est le reste qui est en Calibri 10... Avec votre code, c'est tout le message qui est formaté en Calibri 10...

    Je suis allée vérifier les options d'Outlook, et j'ai bien du TNR 11 par défaut pour les trois options : composition, transfert, réponse... Même dans la rédaction en texte brut.

    C'est étrange n'est-ce pas ?

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    Salut,

    et la super routine SendRangeByMail avec la mise en forme toute prise en compte ?
    http://outlook.developpez.com/faq/?p...VBA_Send_Range

  8. #8
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut
    Bonjour JPCheck,

    Je n'envoie pas une plage de cellules. J'ai un tableau avec des clients et leur adresse mail dans une colonne. Selon certains critères, l'utilisateur doit envoyer un courriel aux clients sélectionnés, mais le texte est déjà inscrit dans le code et je n'ai pas besoin de plages de cellules.

    En plus, j'aime bien mon code car il inclut la signature, contrairement à certains autres.

    Je voudrais juste que le message Outlook garde ma police de caractère par défaut au lieu d'utiliser du Calibri 10.

    C'est un vrai mystère...

  9. #9
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut EUREKA !
    À force de chercher, fouiller, tester aveuglément sans trop savoir ce que je fais... j'ai fini par me dépêtrer comme une grande !

    J'ai changé une partie de mon code (.HTMLBody) pour ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     .HTMLBody = "<font face=""Calibri"" size=""3"">" & strbody & "<br>" & .HTMLBody
    Et ça me donne un message Outlook en Calibri taille 13,5.

    Je vais cependant poster une autre discussion car je voudrais avoir l'équivalence des tailles entre VBA et Outlook : pourquoi 3 (VBA) = 13,5 (Outlook) et 2 (VBA) = 10 (Outlook) ???

  10. #10
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Je vais cependant poster une autre discussion car je voudrais avoir l'équivalence des tailles entre VBA et Outlook : pourquoi 3 (VBA) = 13,5 (Outlook) et 2 (VBA) = 10 (Outlook) ???
    Bonjour,

    Peut être un éclaircissement avec
    Taille

    Pour faire varier la taille d'un texte, il faut utiliser l'attribut size de l'élément FONT. La valeur de cet attribut est un chiffre compris entre 1 et 7 pour avoir un texte allant d'une petite taille (1) vers une grande taille (7). Le tableau suivant reprend la conversion en terme de points, mieux connu pour certain.

    Taille 1 2 3 4 5 6 7
    Points 8 10 12 14 18 24 36
    Conversion de la taille du texte en points.

  11. #11
    Membre régulier
    Femme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    220
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 220
    Points : 98
    Points
    98
    Par défaut
    Haaaaaaa... c'était donc ça !

    Bonjour PM, merci pour la précision. Cependant, ça doit dépendre des polices car chez moi, un Calibri taille 3 en VBA me donne un Calibri taille 13.5 en Outlook... C'est à la tête du client !

    Petite question : elle vient d'où la citation ? Est-ce qu'il y a une autre discussion traitant du sujet ??

    Merci !

  12. #12
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Points : 1 219
    Points
    1 219
    Par défaut
    Petite question : elle vient d'où la citation ? Est-ce qu'il y a une autre discussion traitant du sujet ??
    http://www.ukonline.be/programmation...tre2/page4.php

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

Discussions similaires

  1. Mettre en gras une partie d'un mail généré via vba excel
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 09/01/2013, 16h08
  2. Mettre en gras une partie de texte
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 30/01/2012, 16h09
  3. Réponses: 4
    Dernier message: 20/06/2008, 15h19
  4. Réponses: 8
    Dernier message: 04/05/2007, 11h41
  5. [VBA-E] Mettre en gras une partie du texte d'une cellule
    Par clochardevobsy dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 05/05/2006, 16h25

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