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 :

Mail automatique changer le format d'écriture [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 25
    Par défaut Mail automatique changer le format d'écriture
    Bonjour,

    Je possède un programme qui envoi automatiquement des mails lorsque une date butoir est atteinte. Les informations de mes mails sont stockées dans des cellules qu'il s'agit du contenu ou des destinataires. J'aimerai donc savoir s'il est possible de mettre du texte en gras ou en couleur dans mes mails sachant que je tire mes informations de mes feuilles excels (je ne vois pas comment utiliser des balises comme </b> dans mon cas).

    Voici la partie de mon programme qui envoi le mail si ma date butoir est atteinte et le constituant le mail :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For Each oCell In Worksheets("Commandes urgentes").UsedRange.Columns(cColJoursRestants).Cells
                      If oCell.Value <= cNbJoursRelance2 Then
     
                        If oCell.Offset(, cColMailEnvoi - cColJoursRestants).Value <> "Oui" Then
                          SendFollowUpMail Worksheets("Commandes urgentes"), oCell.Row
    Cette partie envoie un mail s'il ne reste que 3 jours pour traiter la commande ( cNbJoursRelance2 = 15)


    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    Sub SendFollowUpMail(zSheet As Excel.Worksheet, zRow As Long)
        Const cColMailList = 19
        Const cColMailBody = 20
        Const cSep = vbLf
        Const cMailItem = 0
        Dim oOL As Object
        Dim oMail As Object
        Dim oCell As Excel.Range
     
        Dim sRecipients As String
        Dim aRecipients() As String
        Dim sBody As String
        Dim i As Integer
     
        Set oCell = zSheet.Cells(zRow, cColMailList)
        sRecipients = oCell.Value
        Set oCell = zSheet.Cells(zRow, cColMailBody)
        sBody = oCell.Value
     
     
        If Len(sRecipients) > 0 And Len(sBody) > 0 Then
            On Error GoTo ErrorHandling
            Set oOL = CreateObject("Outlook.Application")
            Set oMail = oOL.CreateItem(cMailItem)
            With oMail
     
                aRecipients() = Split(Replace(sRecipients, cSep, ";"), ";")
                For i = 0 To UBound(aRecipients)
                    .Recipients.Add aRecipients(i)
                Next
                .Subject = cSubject
                .Body = sBody
                .Send
            End With
     
            Set oCell = zSheet.Cells(zRow, cColMailEnvoi)
            oCell.Value = "Oui"
            oCell.Font.Bold = True
        End If
        GoTo Cleaning
    ErrorHandling:
        Dim sMess As String
        sMess = "Erreur " & Err.Number & vbCrLf & vbCrLf _
            & Err.Description & vbCrLf & vbCrLf _
            & "Veuillez vérifier les adresses mails!"
     
        MsgBox sMess, vbCritical, "ERREUR MAIL"
        If Not oMail Is Nothing Then
            oMail.Display
        End If
    Cleaning:
     
        Set oCell = Nothing
        Set oOL = Nothing
        Set oMail = Nothing
     
    End Sub
    Les colonnes 19 et 20 contiennent les adresses et le messages de mes mails.

    Pensez-vous qu'il est possible de mettre des balises pour rendre mon texte gras et en couleur ?
    J'ai également essayé de rédiger complètement mon mail sur ma macro mais sans succès...
    Hio62

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 25
    Par défaut RE: envoi de mail
    J'ai consulté les autres sujets parlant de cela, mais je n'ai rien trouvé appart : https://www.developpez.net/forums/d1...ur-gras-corps/

    J'ai du mal à adapter mon programme à partir de cet exemple, faut-il que j'applique mes balises au niveau de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Set oCell = zSheet.Cells(zRow, cColMailBody)
        sBody = oCell.Value
    Car c'est ici qu'est le contenu du mail ?

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je n'ai jamais fait ce type d'opération mais l'explication dans l'autre sujet semble claire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        sBody = "<b>" & oCell.Value & "</b>"

  4. #4
    Membre expérimenté
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2007
    Messages : 267
    Par défaut
    Bonjour,

    Ci dessous ma macro utilise ce bout de code pour envoyer les mails :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    strbody = "<font face=arial> Bonjour,<br><br>" & _
        "Nous faisons suite à votre dernier e-mail.<br>" & _
        "<br>" & _
        "Nous contrôlons .......<br><br>" & _
        "En cas de besoin....<br>" & _
        "<br>Bien cordialement.</font>"
    Tu dois normalement pouvoir rajouter la balise Color dans le font..

    Pour l'envoi j'ai un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    With OutMail
        .SentOnBehalfOfName = SentOnBehalfOfName_NOM 'boite d'envoi car j'en ai plusieurs possible
        .Display
        .To = Expediteur 'C'est une variable chez moi
        .CC = SentOnBehalfOfName_NOM 'variable chez moi
        .BCC = ""
        .Subject = "Retour" 'sujet du mail
        .HTMLBody = strbody & "<br>" & .HTMLBody 'ici je colle ma variable de texte pour le corps du mail
        .Send
    End With
    Je pense que tu peux adapter ça à ton besoin


    Edit : je viens de tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Message = "<font face=arial color=RED> Bonjour,<br><br></font>"
    strbody1 = "<font face=arial color=BLACK> Nous faisons suite à votre dernier e-mail.<br>" & _
        "<br>" & _
        "Nous contrôlons ....<br><br>" & _
        "En cas de besoin ....<br>" & _
        "<br>Bien cordialement.</font>"
     
    strbody = Message & strbody1
    Ici le bonjour est bien en rouge, le reste du message en noir

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 25
    Par défaut RE: envoi de mail
    Bonjour,

    Merci à vous deux pour vos réponses !

    Je suis parvenu à mettre mon texte en gras, mais il n'est plus sur plusieurs lignes :

    Nom : Capture.PNG
Affichages : 1182
Taille : 5,1 Ko

    J'ai compris que la balise <br> permettait de faire un retour à la ligne, mais comme l'intégralité de mon texte provient d'une cellule de ma fiche excel je ne vois pas comment séparer cela. J'ai fouillé un peu et j'ai trouvé une fonction d'offset, pensez-vous que je puisse utiliser cela dans mon cas ? (ou ai-je mal compris l'utilité de cette fonction)

    J'ai rajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sBody = "<b>" & oCell.Value & "</b>"
    ce qui m'a donc mis tout le texte en gras.

    Pensez-vous qu'il serait possible d'écrire le texte directement sur la macro comme tu as fait Axel, mais en rajoutant des dates de différentes cellules pour le contenu de chaque ligne car je ne vois pas comment mettre une seule partie en gras sachant que je tire tout d'un coup . L’entièreté de mon message provient de la formule de cette cellule : (colonne 20)

    Nom : Capturef.PNG
Affichages : 1200
Taille : 7,4 Ko


    Hio62

  6. #6
    Membre expérimenté
    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2007
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2007
    Messages : 267
    Par défaut
    La question est : Pourquoi tu as mis tout ton texte dans une cellule ? Il va changer dans le temps ?
    Ma macro est faite pour envoyer 8 mails différents, j'ai adapté le texte selon certain cas (des indications dans une colonne m'indique si je prends le mail 1,2,3,....)

    Si le corps du mail est toujours identique pour toi pourquoi ne pas faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Ligne1 = "<font color = blackl> Bonjour,<br> </font>"
    Ligne2 = "<font color = black> Le délais de la commande,</font>"
    Ligne2NumCde = "<font color = RED>" & var_Num_Cde & "</font>"
    Ligne2Fin = "<font color = black> est bientôt atteint : </font>"
     
    sBody= Ligne1 & Ligne2 & Ligne2NumCde & Ligne2Fin
    Ceci est un exemple

    Je t'ai laissé les balises <font> pour que tu comprennes l'idée, après tu peux très bien si tu gères les balises tout écrire d'un bloc en incluant les cellules Numéro de Cde, Date, etc...

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 25
    Par défaut RE: envoi de mail
    Salut Alex !

    Enfaite le problème est que j'envoi des mails si une date butoir sur une commande est dépassée (j'ai plusieurs milliers de commande dans ma fiche excel), le contenu change donc à chaque ligne de ma feuille excel !

  8. #8
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par Hio62 Voir le message
    Je suis parvenu à mettre mon texte en gras, mais il n'est plus sur plusieurs lignes :
    Déjà, il est logique qu'un texte en gras soit plus long qu'un texte normal.

    Ensuite, à ma connaissance, il n'est pas possible d'inclure une largeur de page dans une mail (à moins de mettre des codes HTML correspondant).
    Donc, même en texte normal, le retour ou non à la ligne à la réception sera dépendant de la largeur de fenêtre du gestionnaire de mails de ton correspondant.

    J'ai compris que la balise <br> permettait de faire un retour à la ligne, mais comme l'intégralité de mon texte provient d'une cellule de ma fiche excel je ne vois pas comment séparer cela.
    Pourquoi se compliquer la vie à essayer de mettre tout ça dans le code VBA ?
    Il serait bien plus simple d'ajouter tous ces éléments directement dans le contenu de la cellule qui contient le message.

    J'ai fouillé un peu et j'ai trouvé une fonction d'offset, pensez-vous que je puisse utiliser cela dans mon cas ? (ou ai-je mal compris l'utilité de cette fonction)
    Si tu parle de la propriété Offset de l'objet Range, elle est sans rapport puisqu'elle permet de cibler une cellule avec un décalage par rapport à la référence.

    Pensez-vous qu'il serait possible d'écrire le texte directement sur la macro comme tu as fait Axel, mais en rajoutant des dates de différentes cellules pour le contenu de chaque ligne car je ne vois pas comment mettre une seule partie en gras sachant que je tire tout d'un coup . L’entièreté de mon message provient de la formule de cette cellule : (colonne 20)
    Il serait plus simple et plus souple de faire le contraire : mettre tous ces code dans le contenu de la cellule.

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 25
    Par défaut RE: envoi de mail
    Merci à vous deux, enfaîte j'extrais les dates d'autres cellules sur ma feuille excel et je les regroupe dans une seule cellule, celle qui contient le message que j'envoie. Les dates sont donc déjà toutes récupérées au préalable dans une seule cellule.
    Concernant l'envoi de mail il se fait par rapport à une date butoir. Si cette dernière est atteinte je fais appel à mon Sub qui envoi le mail.

    Concernant ton idée Menhir, je ne vois pas trop comment faire :

    Pourquoi se compliquer la vie à essayer de mettre tout ça dans le code VBA ?
    Il serait bien plus simple d'ajouter tous ces éléments directement dans le contenu de la cellule qui contient le message.
    Si j'ai bien compris tu me conseilles de mettre directement les balises de mise en forme dans ma case excel qui regroupe les dates ? Il faudrait pouvoir mettre le format de la cellule en HTML dans ce cas, non ?

    EDIT: Effectivement, il m'a suffit de mettre les balises HTML directement dans ma cellule sur ma page !

    Un grand merci à vous tous pour votre aide !

    Cordialement,
    Hio62

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

Discussions similaires

  1. Changer le format d'écriture de la date
    Par MADA BLACK dans le forum VB.NET
    Réponses: 14
    Dernier message: 18/11/2018, 19h47
  2. changer le format d'un mail en html pour l'insertion d'un lien "cliquable"
    Par jerrypeeren dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 29/07/2008, 00h11
  3. Envoi de mail automatique avec Visual C++
    Par cza dans le forum MFC
    Réponses: 2
    Dernier message: 22/02/2005, 15h59
  4. Envoi d'un mail automatiquement
    Par batmat86 dans le forum C++Builder
    Réponses: 10
    Dernier message: 16/06/2004, 09h20

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