Formatage certains mots d'une chaine de caractère

Bonjour

A la recherche d'un petit coup de main ....

Dans un classeur, les feuilles correspondent aux fiches clients pour prendre des rendez-vous.

En simplifiant,

- en A1 j'ai la date sous la forme ' vendredi 11 janvier 2019'

- en A2 j'ai l'heure sous la forme ' 12:03'

- en A3 j'ai le lieu sous la forme ' à mon cabinet'

- en A4 j'ai le début du texte du mail 'Bonjour, Je vous confirme notre rendez-vous du'

Je monte une macro, pour confirmer la prise de rendez-vous en envoyant un mail au client.

Le texte du mail correspond à une concaténation de différents éléments, ce qui me donne:

Textbody = A4 & " " & A1 & "à" & A2 & " " & A3

J'obtiens: 'Bonjour, Je vous confirme notre rendez-vous du 11/01/2019 à 12H03 à mon cabinet.

Ca fonctionne bien.... mais l'exigence pousse toujours à vouloir plus !!!

- La date est intégrée dans la chaine sous la forme '11/01/2019' et je voudrais conserver le format d'origine 'vendredi 11 janvier 2019': COMMENT FAIRE?

- Pour l'heure, je formate avec ' Format A3, "H\Hmm" et j'ai bien 12H03 au lieu du 0.50208333333333

- Pour le lieu, pas de problème de format..... sauf, que dans ma chaine je souhaiterais que les 3 informations récupérées dans les cellules soient en gras, et là ça coince !

C'est peut être une évidence, mais que mes premiers pas en VBA ne m'ont pas fait découvrir.

Quelqu'un pourrait-il me dépanner, SVP?

D'avance merci

Bonne soirée

bonsoir,

essaie ceci

Textbody = A4 & " " & Format(A1, "ddd dd mmm yyyy") & "à" & Format(A2, "hh:mm") & " " & A3

pour la mise en gras il faut passer par un format HTML, si tu veux l'envoyer par e-mail.

A4 = "bonjour"
A1 = Now()
A2 = A1
A3 = "à mon cabinet"
textbody = A4 & "<BR><BR><B>" & Format(A1, "dddd dd mmmm yyyy") & "</B> à <B>" & Format(A2, "hh:mm") & " " & A3 & "</B>"

Bonjour,

et merci h2so4 de ta réponse.

Pour la première partie, pas de problème....

Pour la mise en gras des parties de texte, j'ai comme un souci !

Dans le mail reçu, j'ai les balises <BR> et <B> qui s'affiche en clair et pas de texte en gras. Je dois rater quelque chose, quelque part !

N'y a t-il rien à déclarer au préalable de l'utilisation du HTLM ? ou autre?

Pour ça, je continue à chercher....

Sinon, le texte reçu est dans un style de police ressemblant à Courrier. Est-il possible d'imposer une autre police (du Sans Sérif, par exemple) ?

Bonne journée

Cordialement

Bonjour,

pour l'envoi de message en HTML, il faut probablement l'indiquer. mais comme tu ne donnes que très peu d'information (pas de fichier, code limité à une instruction, quel outil de messagerie, ....), difficile d'en dire plus.

Bonjour,

Pour ma simple question de formatage, je ne pensai pas que ce fut si complexe. je te joins le code utilisé pour l'envoi du mail (par CDO)

' La ligne suivante doit être au tout début du module
Public Declare Function ConnexionInternetDsponible Lib "wininet.dll" Alias "InternetGetConnectedStateExA" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, _
ByVal dwNameLen As Long, ByVal dwReserved As Long) As Long

    Public Function InternetDisponible()
        ' Vérifier qu'il y a bien une connexion internet

690   On Error GoTo ErreurFonction

700   InternetDisponible = CBool(ConnexionInternetDsponible(0, vbNullString, 512, 0&))

710   Exit Function

ErreurFonction:
720       InternetDisponible = CVErr(xlErrNA)
End Function

    Sub EnvoiMailCDO()

730   If InternetDisponible = False Then
        'code à exécuter si la connexion Internet n'est pas disponible
740       MsgBox "Votre ordinateur n'est pas connecté à Internet": Exit Sub
750       End If

        ' Vérification de l'existence d'un prochain RDV pour ce client
760   If Cells(3, 8) = 0 Then MsgBox "Il n'y a pas de rendez-vous prochain pour ce client": Exit Sub
      Dim I As Integer
770   I = 7
780   For I = I + 1 To 80

        ' Vérification s'il y a une date sur la première ligne de la colonne date de RDV
790   If Cells(I, 7) = "" Then MsgBox "Il n'y a pas encore de rendez-vous de pris pour ce client !": Exit Sub
        ' s'il y en a un, on continue
800   If Cells(I, 7) = Cells(3, 8) Then GoTo EnvoiMail
810   Next I

EnvoiMail:

      Dim mMessage As Object
      Dim mConfig As Object
      Dim mChps
      Dim Rep As String
        ' Vérification d'une adresse mail pour le destinataire
820        If [c20].Value = "" Then MsgBox "Il n'y a pas d'adresse mail pour le destinataire": Exit Sub
        ' Vérification que l'objet du RDV est bien l'hypnose, sinon, pour autre, pas d'envoi de questionnaire
830        If [m3] <> "Hypnose" Then MsgBox "Si c'est pour de l'hypnose, la cellule n'est pas renseignée, ou ce n'est pas de l'hypnose !": Exit Sub
        ' Vérifier que le formulaire n'a pas déjà été envoyé
840        If Cells(I, 19) = "O" Then MsgBox "Le formulaire a déjà été envoyé.": Exit Sub

850       Set mConfig = CreateObject("CDO.Configuration")

860       mConfig.Load -1
870       Set mChps = mConfig.Fields
880       With mChps
890           .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'Adapter suivant votre serveur de mail. (exemple pour Gmail.)=> Hotmail "smtp.live.com"
900           .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = Sheets("zz8param").Range("c10").Value
        'En principe, 25 fonctionne avec tout les serveurs, mais pour orange.fr, il faut une authentification et le port 465.
910           .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = Sheets("zz8param").Range("c11").Value

920           If Sheets("zz8Param").Range("c9").Value <> "" Then
930               .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = "1"
940               .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = Sheets("zz8param").Range("c9").Value
950               .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Sheets("zz8param").Range("c13").Value

960                   End If

        'Si votre serveur demande une connexion sûre (SSL)
970               .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = "true"
980           .Update
990       End With

1000      Set mMessage = CreateObject("CDO.Message")
1010      With mMessage

        ' Vérifier qu'une heure de RDV a bien été fixée
1020        If Cells(3, 10).Value = "" Then MsgBox "L'heure du rendez-vos n'a pas été précisée!"
        ' Vérifier que le lieu de RDV a bien été précisé
1030        If Cells(2, 13).Value = "" Then MsgBox " Merci de préciser le lieu du rendez-vous."

1040      Set .Configuration = mConfig
        ' Mail du destinataire
1050          .To = [c20].Value
        ' Mail de l'expéditeur
1060          .From = Sheets("zz8Param").Range("c9").Value
        ' Objet du mail
1070          .Subject = Sheets("zz8Param").Range("c12").Value

        ' Texte du mail (date, heure et lieu sont dans les cellules H3, J3 et M2 de la feuille active - Dans les cellules A15 et A17 de la feuille zz8Param, _
        se trouve le début et la fin du texte du mail)
1080          .textBody = Sheets("zz8Param").Range("a15").Value & "<BR><BR><B>" & Format(Range("h3"), "dddd dd mmmm yyyy") & " " & "</B> à <B>" & _
            " " & Format(Range("j3"), "H \Hmm") & " " & Range("M2") & " " & Sheets("zz8Param").Range("a17").Value

        'Pour ajouter une pièce jointe, un fichier, classeur, image etc.
1090           .Addattachment Sheets("zz8Param").Range("c34").Value
1100           .Addattachment Sheets("zz8Param").Range("c35").Value
1110          .Send
1120      End With

        ' Mettre O dans la cellule pour dire que mail envoyé
1130      ActiveSheet.Unprotect
1140      Cells(I, 19) = "O"
1150      ActiveSheet.Protect ""

1160      Set mMessage = Nothing

        'Libère les ressources
1170      Set mConfig = Nothing
1180      Set mChps = Nothing

End Sub

Pour les puristes, il n'est certainement pas optimisé, mais pour un débutant en VBA, c'est le début de l'espoir d'un futur succès !

Merci de votre indulgence ....

Bonjour,

avec CDO essaie

.HTMLbody=Sheets("zz8Param").Range("a15").Value & "<BR><BR><B>" & Format(Range("h3"), "dddd dd mmmm yyyy") & " " & "</B> à <B>" & _
            " " & Format(Range("j3"), "H \Hmm") & " " & Range("M2") & " " & Sheets("zz8Param").Range("a17").Value

.......

Merci h2so4 de l'astuce !

Merci de ta réponse...

Je vais voir ça !

Il me semblait ne pas avoir envoyé le message, résultat il y a eu un bis et je ne sais pas comment le supprimer: donc il reste en double !!

bonjour,

tu ne pourras supprimer le doublon mais tu peux remplacer son contenu par un sourire.

Après application, il y a un mieux:

La 1ère partie du texte (cellule A15) n'est pas en gras.

Date, heure et lieu sont bien en gras.... mais la fin du texte (cellule A17) est aussi en gras.

Avantage certainement de HTLM body, c'est que la police de caractère n'est plus du type Courrier mais plus proche de Sans Sérif.

Bonjour

en HTML tu utilises des balises pour indiquer le format à utiliser pour un texte. par exemple pour mettre un texte en gras utilise <B> pour commencer le gras et </B> pour le terminer.

de même il existe des balises pour changer la police de caractères, mettre en couleur, etc...

liste des balises (tags) ici (entre autres)

Parfait.... Parfait .... MERCI !!!!!!!!!!!!!

Bien que le site soit en anglais, ça aide déjà.

J'ai modifié pour les parties en gras ou pas.

Rajouté des <BR> pour les sauts de ligne

Donc on peut dire..... MERCI H2SO4 !!!!

Discussion à mettre en résolu

Bonne soirée et bon WE

Cordialement

Une petite question encore, si je puis me permettre:

Je regardai le tableau des balises. j'ai bien le <B> pour la mise en gras mais je ne trouve pas le </B>.

Est ce une convention HTML, que le / mets fin au code qui le suit (en l’occurrence, ici, B) ?

bonsoir,

oui

</...> pour la balise de cloture

Rechercher des sujets similaires à "formatage certains mots chaine caractere"