XL 2019 Lien Cliquable VBA Email

LuanaDDC

XLDnaute Junior
Bonjour à tous,

J'espère que vous allez bien.

Suite à l'aide d'un membre de la communauté (encore merci), j'ai pu réussir à mettre en place ma macro afin pour envoyer des mails de façon automatique. Cependant je rencontre un problème.. En effet j'ai mis mon fichier en format Path, lorsque je reçois mon mail, le chemin d'accès n'est pas cliquable, je dois faire un copier/coller dans l'Explorateur de Fichier. Il y a t-il une solution afin que je puisse rendre ce chemin d'accès cliquable svp ? J'ai essayé de voir avec A Href mais ça ne semble pas marcher...

1605692625598.png


Le code ci-dessous :

Sub Test() 'var& =long, var% =entier, var$ alphanum

'test si c'est une feuil "KM 0000"
If Left(LCase(ActiveSheet.Name), 2) <> "km" Then MsgBox "Cette feuille n'est pas une Feuille Kilometrage !": Exit Sub
'------------------------------------------
Dim Message As String
Dim NoColAdres%, NoColDesNoms%, NoPremColMois%, NoPremLig%, NoDernLig&, MoisEnCours%
NoColAdres = 1 'Col(A)
NoColDesNoms = 2 'Col(B)
NoPremColMois = 5 'Col(E)
NoPremLig = 11 ' 1'lig du tableau
NoDernLig = Range("A" & Rows.Count).End(xlUp).Row
'mois en cours
MoisEnCours = Month(Date)
NoColMoisEnCours = NoPremColMois + MoisEnCours - 1
Moi$ = Cells(NoPremLig - 1, NoColMoisEnCours)

'si ligne inférieure tableau, exit
If NoDernLig < NoPremLig Then MsgBox "Aucune donnée en cours !?": Exit Sub

'boucle sur le tableau
For I = NoPremLig To NoDernLig

Nom$ = Cells(I, NoColDesNoms) 'nom
Adres$ = Cells(I, NoColAdres) 'adres
M$ = Cells(I, NoColMoisEnCours) 'contenu lig/col du mois

'si mois en cours vide envoi mail
If M$ = "" Then
Message = "Le fichier à compléter pour le mois " & Moi$ & " est le suivant: " & vbLf & _
ThisWorkbook.Path & "\" & ThisWorkbook.Name & vbLf & vbLf & _
"<p>Merci par avance.</p>"
'MsgBox Message
EnvoyerEmail Nom$, Adres$, Message
End If
Next

End Sub

Sub EnvoyerEmail(ByVal NomContact As String, ByVal Destinataire As String, ByVal Message As String)

'On désactive les messages d'alertes d'excel et on désactive le défilement des macros
Application.ScreenUpdating = False
Application.DisplayAlerts = False

'On déclare les variables
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim strRelance As String

'On ouvre un nouvel email
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

'On indique le corps du mail avec du HTML
strbody = "<HTML><BODY><H4>Bonjour " & NomContact & ",</H4><p>L'échéance arrivant à termes, merci de remplir le document approprié par la suite.</p>" & _
Message

'Si erreur pas au code suivant
On Error Resume Next

'Ce code permet l'ajout de la signature dans le corps du texte
With OutMail
.Importance = 2
.Display 'Affiche la fenêtre du mail | Obligatoire pour ajouter la signature, à masquer si pas nécessaire
.To = Destinataire 'Le ou les destinataire(s) du mail
.CC = "" 'La ou les personne(s) en copie du mail
.Subject = "Rappel échéance kilométrage véhicule" 'L'objet du mail
.HTMLBody = strbody & .HTMLBody 'Le corps du mail + signature
.ReadReceiptRequested = True
' .Send 'Envoie du mail automatique
End With

Application.DisplayAlerts = True

On Error GoTo 0

'on vide les variables objet
Set OutMail = Nothing
Set OutApp = Nothing

End Sub

En vous remerciant par avance et bonne journée :)



Bien à vous.
 

Pièces jointes

  • 1605692576014.png
    1605692576014.png
    31.2 KB · Affichages: 39
Solution
Re...

VB:
        .Subject = "Rappel échéance kilométrage véhicule" 'L'objet du mail
        .HTMLBody = strbody & .HTMLBody 'Le corps du mail + signature

'Essaye 1 ==> Si par exemple l'adresse de ton fichier est dans la cellule A1
       .Attachments.Add ActiveSheet.Range("A1").Value

'Essaye 2 ==> adresse en dur de ton fichier
       .Attachments= "C:\Monchemin\Surmondisquedur\montruc\monmachin.xlsm"

'Essaye 3 ==> 'MonFichier est déclaré avec son chemin un peu plus haut
       .Attachments.Add (MonFichier)

'......... le reste de ton code

@Phil69970

Phil69970

XLDnaute Barbatruc
Bonjour LuanaDDC, le forum

Une piste ....
Remplacer :
Message = "Le fichier à compléter pour le mois " & Moi$ & " est le suivant: " & vbLf & _
ThisWorkbook.Path & "\" & ThisWorkbook.Name & vbLf & vbLf & _
"<p>Merci par avance.</p>"

Par :
VB:
MonFichier=ThisWorkbook.Path & "\" & ThisWorkbook.Name
Message = "Le fichier à compléter pour le mois " & Moi$ & " est le suivant: " & vbLf & MonFichier & vbLf & vbLf & " Merci par avance."

Et remplacer :
'On indique le corps du mail avec du HTML
strbody = "<HTML><BODY><H4>Bonjour " & NomContact & ",</H4><p>L'échéance arrivant à termes, merci de remplir le document approprié par la suite.</p>" & _
Message

Par :
Code:
On indique le corps du mail avec du HTML
strbody = "Bonjour " & NomContact & "L'échéance arrivant à termes, merci de remplir le document approprié par la suite."  & vbLf "Le fichier à compléter pour le mois " & Moi$ & " est le suivant: " &"<a href="MonFichier"> ici</a>" & " Merci par avance."

@Phil69970
 

LuanaDDC

XLDnaute Junior
Bonjour Phil,

Merci pour ta réponse !

Alors j'ai fait que tu m'as dit mais il me met "Erreur de Compilation: Attendu : fin d'instruction" et il me sélectionne " Le Fichier à compléter pour le mois " ou parfois "Erreur de Syntaxe" et là il me sélectionne tout le code.

Pourtant j'ai bien copié ton code.. J'ai essayé de changer mais ça me met la même erreur.

Merci encore !
 

Roland_M

XLDnaute Barbatruc
bonjour,

salut à toi Phil69970
Il y a une erreur là, j'ai rectifié, ce n'est rien qu'un oubli, mais ça marche j'ai fais un essai !

'On indique le corps du mail avec du HTML
strbody = "Bonjour " & NomContact & " L'échéance arrivant à termes, merci de remplir le document approprié par la suite." & vbLf & _
"Le fichier à compléter pour le mois " & Moi$ & " est le suivant: <a href=" & MonFichier & "> ici</a> Merci par avance."

Il faudra aussi que notre ami LuanaDDc pense à passer les var MonFichier et Moi , ICI:
Sub EnvoyerEmail(ByVal NomContact As String, ByVal Destinataire As String, ByVal Message As String, Moi as string, MonFichier as string)

REPRENDRE LE CODE CAR J'AI FAIS UN EDIT !!
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
aïe aïe !

d'une, c'est la macro dans le thisworkbook qui Open... il faut la supprimer !
car l'appel EnvoyerEmail Nom$, Adres$, Message ne fonctionne plus vu qu'on a rajouter des var !

ensuite, il faut aussi mettre les variables à l'appel ICI:
EnvoyerEmail Nom$, Adres$, Message, Moi, MonFichier
 

LuanaDDC

XLDnaute Junior
Bon désolée...

J'ai honte... J'ai encore besoin une dernière fois de votre gentillesse...! Mais sans rancune si je n'ai pas de réponse ou que vous m'envoyez bouler... je comprendrais ^^'

En fait, je viens de m'apercevoir que je ne peux pas mettre de lien hypertext (problème de serveur interne).
Je souhaite donc sélectionner directement mon fichier et l'envoyer en PJ.

J'ai donc changé la macro sauf que j'ai bien ma fenêtre qui s'affiche pour que je sélectionne mon fichier et lorsque je l'envoi, je ne reçois la PJ...

Encore merci...
 

Pièces jointes

  • Suivi kilométrage véhicule VLR.xlsm
    47.4 KB · Affichages: 11

Phil69970

XLDnaute Barbatruc
Re...

VB:
        .Subject = "Rappel échéance kilométrage véhicule" 'L'objet du mail
        .HTMLBody = strbody & .HTMLBody 'Le corps du mail + signature

'Essaye 1 ==> Si par exemple l'adresse de ton fichier est dans la cellule A1
       .Attachments.Add ActiveSheet.Range("A1").Value

'Essaye 2 ==> adresse en dur de ton fichier
       .Attachments= "C:\Monchemin\Surmondisquedur\montruc\monmachin.xlsm"

'Essaye 3 ==> 'MonFichier est déclaré avec son chemin un peu plus haut
       .Attachments.Add (MonFichier)

'......... le reste de ton code

@Phil69970
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 814
dernier inscrit
JLGalley