Mailing VBA avec un lien vers un fichier sur serveur

Bonjour à tous,

Besoin de vous pour modifier le code ci-dessus pour que la référence dans le corps du message prise dans la colonne (ah) soit mise en forme (Lien hypertext).

Bout du code concerné : vbCrLf & vbCrLf & "Voici l'adresse du fichier : " & Range("ah" & i) & " " & _

Ce code fonctionne bien, mais l'adresse du fichier devrait être un (Lien hypertext)

D'avance, merci pour le coup de main.

Salutations

Andreas

'Il faut activer la référence "Microsoft Outlook Library" Avant de lancer cette macro,
' Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
Sub Envoyer_Mail_Rappel_SSE()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim adresse As String
Dim message As String
Dim sujet As String
Dim objLink As String

sujet = "Tâches SSE pour le client de  ta région" 'Définition du sujet de l'email
For i = 3 To Range("ab" & Rows.Count).End(xlUp).Row 'Définition de la plage de test (de la 3ème ligne jusqu'à première cellule vide de la colonne ac
If Range("ac" & i) = "x" Then  ' si la cellule Ab est vide, elle passe à la suivante

If Range("ae" & i) <> "" Then ' Si la cellule de l'adresse n'est pas vide alors envoyer le mail (avec condition de la ligne d'avant)

adresse = Range("ae" & i) 'Recherche l'adresse mail du destinataire
' Définition du message
message = "Bonjour " & Range("af" & i) & "," & vbCrLf & vbCrLf & "Lors du dernier contrôle du fichier (" & Range("ag" & i) & ") " & _
 "nous avons remarqué que certaines dates arrivent à échéance dans les 30 jours ou sont manquantes (Cellule vide). " & _
 vbCrLf & vbCrLf & "Voici l'adresse du fichier : " & Range("ah" & i) & " " & _
 vbCrLf & vbCrLf & "Merci de mettre à jour ce fichier ainsi que les documents correspondants. " & _
 vbCrLf & vbCrLf & "Si une cellule n'est pas concernée, merci d'y apposer (S.o.) il ne doit pas y avoir de cellule vide. " & _
vbCrLf & vbCrLf & "Merci d'avance pour ta collaboration et je reste à ta disposition en cas de besoin" & vbCrLf & _
vbCrLf & "Cordiales salutations," & vbCrLf & _
vbCrLf & "Prénom Nom" & vbCrLf
' vbCrLf & vbCrLf & "Voici l'adresse du fichier : " & Range("ah" & i) & " " & _L adresse du fichier ah doit être un lien pour cliquer

'Paramètres de l'application mail
Set OutlookApp = CreateObject("outlook.application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Subject = sujet
.To = adresse
.Body = message
.Display 'affiche tous les mail à envoyer
'.Send 'envoi du mail direct

Range("ad" & i).Value = Now 'lorsqu'un mail a été enovyé, la cellule en i est remplie avec la date d'envoi du mail afin d'éviter l'envoi de plusieurs mails

End With

End If
End If
Next i

End Sub

Bonjour,

Pour mettre un lien il faut donc passer body en htmlbody

Cela implique de changer tous tes vbcrlf et "<br>" qui est la balise html de retour à la ligne

et pour le lien, essaie ceci

"<a href=""" & Range("ah" & i) & """>lien vers le document</a>." 

à intégrer dans ton message

Ce qui fait

Message = "Bonjour " & Range("af" & i) & ",<br><br>Lors du dernier contrôle du fichier (" & Range("ag" & i) & ") " & _
"nous avons remarqué que certaines dates arrivent à échéance dans les 30 jours ou sont manquantes (Cellule vide). " & _
"<br><br>Voici l'adresse du fichier : " & Range("ah" & i) & " " & _
"<br><br>Merci de mettre à jour ce fichier ainsi que les documents correspondants. " & _
"<br><br>Si une cellule n'est pas concernée, merci d'y apposer (S.o.) il ne doit pas y avoir de cellule vide. " & _
"<br><br>Merci d'avance pour ta collaboration et je reste à ta disposition en cas de besoin<br>" & _
"<br>Cordiales salutations,<br>" & _
"<br>Prénom Nom<br>" & _
"<br><br><a href=""" & Range("ah" & i) & """>lien vers le document</a>."

ensuite, au lieu de

.Body = message

fais

.htmlBody = message & htmlBody 

et tu auras en plus ta signature au bas du mail

Bonjour Steelson, le Forum,

Miles Mercis, c'est parfait pour la mise en forme mais la signature n'apparait pas en bas du message (signature imposée par notre system).

With OutlookMail
.Subject = sujet
.To = adresse
.HTMLBody = message & HTMLBody
.Display 'affiche tous les mail à envoyer
'.Send 'envoi du mail direct

Range("ad" & i).Value = Now 'lorsqu'un mail a été enovyé, la cellule en i est remplie avec la date d'envoi du mail afin d'éviter l'envoi de plusieurs mails

End With

Merci d'avance.

Cordialement

Andreas

Il manque le . devant HTMLBody

.HTMLBody = message & .HTMLBody

en effet, j'avais fait la faute sans m'en apercevoir, désolé !

Re-merci,

ça n'a rien changé, mais il me demande autorisation pour l'accès au mailing.

Andreas

Je suis étonné ... comme je ne travaille plus avec outlook, j'avais surtout répondu à l'intégration du lien.

Question :

  • Si tu ne mets que .HTMLBody = message , est-ce que le message est affiché (sans ta signature) ? avec le lien (c'était surtout ma valeur ajoutée) ?
  • Est-ce que auparavant tu avais déjà ta signature ? ou est-ce un nouveau sujet ?
  • Est-ce que tu utilises bien XL2016 ou 365 ?

Re,

Oui, c'est pareil, c'est pas grave en sois, je te remercie déjà pour ton aide très appréciée.

Si tu ne désire pas poursuivre, je clos ce sujet qui selon la demande initiale a été complété avec BRIO!

Sur ce, encore merci et te souhaite de belles fêtes de fin d'année.

Cordialement

Andreas

Comme je ne travaille plus avec outlook, je ne pourrais pas résoudre les autres points, ouvre un nouveau post !

Euréka!

Voici le code final qui va chercher la signature automatique.

Il faut inséré la ligne suivante avant la ligne Sujet : .Display False 'insertion de la signature automatique avant le message

Enjoy!

Joyeuses fêtes a tous

Andreas

'Il faut activer la référence "Microsoft Outlook Library" Avant de lancer cette macro,
' Dans l'éditeur VBA: Faire Menu / Tools / Reference / Cocher "Microsoft Outlook Library"
Sub Envoyer_Mail_Rappel_SSE()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim adresse As String
Dim message As String
Dim sujet As String

sujet = "Tâches SSE pour le client de  ta région" 'Définition du sujet de l'email
For i = 3 To Range("ac" & Rows.Count).End(xlUp).Row 'Définition de la plage de test (de la 3ème ligne jusqu'à première cellule vide de la colonne ac
If Range("ac" & i) <> "" Then  ' si la cellule AC est vide, elle passe à la suivante

If Range("ae" & i) <> "" Then ' Si la cellule de l'adresse n'est pas vide alors envoyer le mail (avec condition de la ligne d'avant)

adresse = Range("ae" & i) 'Recherche l'adresse mail du destinataire
' Définition du message
message = "Bonjour " & Range("af" & i) & ",<br><br>Lors du dernier contrôle du fichier (" & Range("ag" & i) & ") " & _
"nous avons remarqué que certaines dates arrivent à échéance dans les 30 jours ou sont manquantes (Cellule vide). " & _
"<br><br>Voici l'adresse du fichier :  " & Range("ah" & i) & "  " & _
"<a href=""" & Range("ah" & i) & """>lien direct</a>" & _
"<br><br>Merci de mettre à jour ce fichier ainsi que les documents correspondants. " & _
"<br><br>Si une cellule n'est pas concernée, merci d'y apposer (S.o.) il ne doit pas y avoir de cellule vide. " & _
"<br><br>Merci d'avance pour ta collaboration et je reste à ta disposition en cas de besoin<br>" & _
"<br>Cordiales salutations,<br>" & _
"<br>Prénom Nom<br>"

'Paramètres de l'application mail
Set OutlookApp = CreateObject("outlook.application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.Display False 'insertion de la signature automatique avant le message
.Subject = sujet
.To = adresse
.HTMLBody = message & .HTMLBody
'.Display 'affiche tous les mail à envoyer pour confirmation
.Send 'envoi du mails direct sans contrôle

Range("ad" & i).Value = Now 'lorsqu'un mail a été envoyé, la cellule en i est remplie avec la date d'envoi du mail afin d'éviter l'envoi de plusieurs mails

End With

End If
End If
Next i

End Sub

Bien vu ...je pense qu'il suffit de mettre le .display false avant le .htmlbody

C'est exactement ça!

Merci encore

A+

Andreas

Rechercher des sujets similaires à "mailing vba lien fichier serveur"