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 :

Code macro VBA dans Excel pour mettre un Hyperlien dans le corps du message d'un mail


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 10
    Points : 9
    Points
    9
    Par défaut Code macro VBA dans Excel pour mettre un Hyperlien dans le corps du message d'un mail
    Bonjour à tous,

    Je suis nouveau sur le site et viens de commencer à coder en VBA il y a peu.

    Je m'addresse à vous car je n'ai pas pu trouver de solutions à mon problème sur le net, étant donné que mon problème est très spècifique.

    Voilà le but de ma macro sous Excel est de faire remplir par l'utilisateur sur Excel une adresse mail cible, un sujet, et surtout dans le corps du message: un Hyperlien ( Hyperlink en anglais )

    Ce lien est ajouté de la façon classique : clique droit sur la cellule, Hyperlink ...> etc.

    Ensuite, par le biais d'un bouton relié à ma macro, un mail est envoyé à l'adresse mail cible, et dans le corps du texte figure le fameux hyperlink

    présenté de la façcon suivante : " Veuillez trouver le fichier ici " avec " ici " possédant le lien vers le répertoire précisé dans le feuillet Excel initial.

    Le code d'envoi par mail fonctionne, de même que ma macro mais le problème est qu'elle ne fonctionne que si l'addresse précisée dans le lien ne possède pas d'espaces. J'ai lu sur des forum que la solution consiste à bien mettre les < > pour que le message prennent en compte une adresse mais rien ni fait, j'ai essayé et ça ne fonctionne pas.

    Voici sans plus attendre mon code afin que vous puissiez aborder le problème :

    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
     
    Sub Macro_test()
     
    Dim ol As New Outlook.Application
    Dim olmail As MailItem
    DimStrbody As String
    Dim Lien As String
     
    Set ol = New Outlook.Application
    Set olmail = ol.CreateItem(olMailItem)
     
    Lien = Range("D7")
     
    Strbody = " Bonjour, veuillez trouver le répertoire dans le " & "<a href=" & Lien & "> lien suivant. </a> " & " Merci "
     
     
    With olmail
     
          .To = Range("D5")
          .CC = ""
          .Subject= Range("D6")
          .HTMLBody = Strbody
          .Display
     
    End With
     
     
    End Sub

    Voilà ce code fonctionne mais pas avec des addresses de répertoire contenants un espace. Après avoir essayé beaucoup de choses différentes je ne parviens tourjours pas à le faire fonctionner quelque soit l'adresse, sachant que modifier toutes les addresses n'est pas une option.


    Merci beaucoup pour votre aide

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Bonjour Julien S,

    J'avoue ne pas bien comprendre puisque avec le code ci-dessous, tout fonctionne de mon côté...
    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
    Option Explicit
     
    Sub Macro_test()
    Dim ol As New Outlook.Application
    Dim olmail As MailItem
    Dim Strbody As String
    Dim Lien As String
     
    Set ol = New Outlook.Application
    Set olmail = ol.CreateItem(olMailItem)
     
    With Worksheets("Feuil1")
        Lien = .Range("D7")
     
        Strbody = "Bonjour, veuillez trouver le répertoire dans le " & "<a href=" & Lien & "> lien suivant. </a> " & " Merci "
    End With
     
    With olmail
          .To = Range("D5")
          .CC = ""
          .Subject = Range("D6")
          .HTMLBody = Strbody
          .Display
    End With
     
    End Sub
    Peut-être devrais-tu réessayer ?

    Cordialement,
    Kimy
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Le code fonctionne bel est bien mais uniquement avec des adresses de répertoires ne possèdant pas d'espaces dans les noms. Créer toi un fichier dans tes documents et appelle le d'un nom avec un espace comme " fichier test " et crée dans la cellule cible un hyperlink vers l'interieur de ce fichier et tu verras que ça ne fonctionne pas, il apparait un message d'erreur

    merci de la réponse

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    Essayez de remplacer les espaces par des %20 .... suggestion
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    et un bout de code que j'utilise depuis longtemps, si ça peut servir... J'avais oublié le FullNameURLEncoded

    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
    Sub SEND_WBK(Wbk As Workbook, Signature As String)
        Subname = "SEND_WBK"
     
        Dim Msganswer As String, Msgprompt As String
        Dim Mailsubj As String, Msbd As String, Emailadd As Variant, tolist As String, cclist As String
        Dim Sentwbkfullname       As String, Extrwbkfullname As String, Hlinkaddr As String
        Dim oOApp, oOMail, olMailItem
     
        Emailadd = GET_EMAIL_LIST("T_EMAILLST")
        If UBound(Emailadd) > 0 Then
            tolist = Emailadd(0)
            cclist = Emailadd(1)
        End If
     
        Extrwbkfullname = Wbk.FullName
     
        Mailsubj = "Published: " & Wbk.Name & " (" & Format(DateValue(Now()), "dd-mmm-yy") & ")"
     
    'Building Message head
        Hlinkaddr = Wbk.FullNameURLEncoded
     
        Msbd = "<p> Please, find attached extract generated by " & Application.UserName & "</a> </p>"
    '    Msbd = Msbd & "<p><tr>"
        Msbd = Msbd & " <p>From master file: " & Wbk.Name & "</b> </p>"
        Msbd = Msbd & "<p> Extract File: <a href=" & "'" & Hlinkaddr & "'> " & " " & Wbk.Name & "</a> </p>"
        Msbd = Msbd & "<p> Directory   : <a href=" & "'" & ActiveWorkbook.Path & "'> " & " " & Wbk.Path & "</a> </p>"
        Msbd = Msbd & "<p><tr>"
        Msbd = Msbd & "Thanks and Best Regards. "
        Msbd = Msbd & "<br>"
        If Signature <> "" Then Msbd = Msbd & "<p><tr>" & Signature & "<br>"
        Msbd = Msbd & " (Automatic email notification)"
     
        Msbd = Msbd & "<p> Free comments from sender: "
     
    'Sending Mail
        Set oOApp = CreateObject("Outlook.Application")
        Set oOMail = oOApp.CreateItem(olMailItem)
     
        With oOMail
            .To = tolist
            .CC = cclist
            .Subject = Mailsubj
            .HTMLBody = Msbd
            .Attachments.Add Wbk.FullName
    '        .Save
            .Display
        End With
     
    End Sub
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  6. #6
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    Ou tout simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Strbody = "Bonjour, veuillez trouver le répertoire dans le " & "<a href=""" & Lien & """> lien suivant.</a> " & " Merci "


    Cordialement,
    Kimy

    EDIT : le "%20" suggéré vinc_bilb fonctionne également. Donc Lien = Replace(.Range("D7"), " ", "%20") fonctionne également !
    Par contre, pas les deux ensembles, hein ?
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci à tous et surtout à Kimy_Ire , ta dernière méthode avec les doubles cotes en plus a parfaitement fonctionné

    je ne sais pas pourquoi ces doubles cotes ont pu changer l'interprétation d'Outlook de l'Hyperlien mais je mets le sujet en tant que résolu

  8. #8
    Membre émérite
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Points : 2 657
    Points
    2 657
    Par défaut
    En fait, une balise a href s'écrit comme ceci :
    <a href="Adresse ou URL"> ... </a>

    Or, tu mettais ceci "<a href=" & Lien & ">.

    En bref, tu dis à VBA "Insère dans ma String <a href= puis ce que tu trouves dans Lien et enfin > lien suivant. </a>.
    Donc tu n'as pas de quote (") dans ta string.

    Pour insérer des quotes dans une String, VBA interprète la double quote : "".
    Donc si tu mets une triple quote, tu auras la double signifiant "je veux mettre une quote dans ma String" et une quote signifiant "fin de mon insertion dans ma String".

    Je ne sais pas si c'est clair pour toi, mais oriente toi vers la FAQ.

    Cordialement,
    Kimy

    Et : - -
    La logique :
    • Plus ya de gruyère, moins ya de gruyère.
    • Plus tu pédales moins vite, moins tu avances plus vite.
    Plusoyer les réponses pertinentes et n'oublier pas de résolver en fin de post !

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/04/2015, 22h18
  2. [Débutant] Check Box Dans gridview pour Extraire des lignes dans Excel
    Par harghan dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/01/2013, 09h07
  3. Réponses: 7
    Dernier message: 19/10/2009, 13h48
  4. Envoyer un Soap dans Excel et mettre l'acquittement dans une cellule
    Par akdmks dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/02/2008, 17h35
  5. [excel vba]case à cocher dans excel pour plusieurs lignes
    Par fcoisb dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2005, 11h23

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