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