[Mail] Envoyer une PJ tiré d'un lien hypertexte situé dans une cellule

Bonjour à tous,

Je maitrise déja l'envoi de mail par VBA via

.Attachments.Add

Cependant, je souhaite pour une question de simplicité d'utilisation envoyer l'objet de ce lien hypertexte en pièce jointe.

Aujourd'hui je maitrise comment "cibler" la cellule du lien hypertexte via une variable définie

oLien = .Range(.CheckBoxes(Application.Caller).LinkedCell).Offset(0, Column - 1)

Ma question est la suivante, est-ce que je fais une erreure de manip lorsque j'associe les deux codes ci dessous de cette façon?

.Attachments.Add oLien

Sachant que lorsque je teste ma variable oLien via une msgBox je selectionne bien le lien dans la cellule.

Mais lorsque je déroule la formule j'ai un soucis car il met chemin introuvable.

Une solution?

Merci par avance

Salut millioss,

Possible d'avoir un fichier Excel anonymisé ? Cela permettrai d'avoir une vue d'ensemble...

Sinon, tu as un bien un lien hypertexte de cette forme : C:\Users\XXXXXX\XXX\XX\XXX\Nom_du_doc.pdf ?

Tu as vérifié à l'aide d'une msgbox que oLien te donne le bon lien hypertexte ?

Baboutz

Re,

Effectivement ton code ne marche pas. Il faut récupérer ton lien dans la cellule. Essaie plutôt une de ces deux méthodes :

oLien = .Range(.CheckBoxes(Application.Caller).Value

ou

oLien = .Range(.CheckBoxes(Application.Caller).Hyperlinks(1).Address

(La manière dont tu appelles ta range est particulière mais en gros e.g. : Range("C3")...)

Bonjour,

Oui, voici mon fichier en anonyme .

J'ai essayé ta méthode et ça ne fonctionne pas toujours le même soucis.

Le problème c'est que je doit utiliser la fonction offset aussi pour aller chercher la bonne cellule ( une cellule à gauche de ma checkbox)

Voici mon fichier en anonyme

Merci par avance ! :)

Et pour info je ne comprends pas vraiment sachant que quand je check ma "cible" avec une msgbox j'ai bien le bon lien hypertexte qui apparait !

Bonjour,

Un lien même vers une page web n'est pas une pèce "jointe"

Pour l'ajouter comme une pièce jointe il faut quel soit converti en page web

modifier la ligne :

oLien = .Range(.CheckBoxes(Application.Caller).LinkedCell).Offset(0, Column - 1).Hyperlinks(1).Address

Ensuite vous pourrez ajouter comme pièce jointe :

.Attachments.Add oLien

Baboutz avait déjà trouvé .

Bonjour Xmenpl & Baboutz

Malheureusement même après avoir mis vos lignes de code j'arrive toujours à la problématique du lien introuvable :/

Adresse originelle du lien ci dessous.

\\xxx-user-2\ENR-PLASMA\RSA\xxx\Affichage\Checklist 5S tente.pdf

Le fait que je sois dans un réseau d'entreprise poserait un soucis?

Bonjour Xmenpl & Baboutz

Malheureusement même après avoir mis vos lignes de code j'arrive toujours à la problématique du lien introuvable :/

Adresse originelle du lien ci dessous.

\\xxx-user-2\ENR-PLASMA\RSA\xxx\Affichage\Checklist 5S tente.pdf

Le fait que je sois dans un réseau d'entreprise poserait un soucis?

Etrange je viens de tester sur un serveur celà fonction pour moi avec un pdf aussi.

Votre réseau d'entreprise n'a-t-il pas de lettre de raccourci comme pour c:\ ? exemple lettre G:\xxx-user-.......

Si non vous pouvez peut être en créer une :

"Poste de travail" ou "Ce PC" comme ils appelles maintenant. option "Connecter un lecteur réseau" choisissez une lettre et l'emplacement correspondant.

Vos liens devraient utiliser cette lettre de raccourci.

Hello,

Bon du coup j'ai regardé pour faire passer le lien directement par un lecteur réseau et tout fonctionne !

Merci pour votre attention !

Re,

millioss tu as peut-être réussi, néanmoins je t'envoie dans le prochain message ce que j'ai fait et je t'explique!

Donc, comme a dit @Xmenpl, le problème vient du fait que par défaut le lien hypertexte que l'on attribue à un mot ne prend pas toute l'adresse exacte mais est du style : "..\xxx-user-2\ENR-PLASMA\RSA\xxx\Affichage\Checklist 5S tente.pdf".

Pour contrer cela, j'y vois trois façons à ma connaissance :

  • Coller en brut dans une cellule l'adresse, par exemple "C:\\Users\xxx-user-2\ENR-PLASMA\RSA\xxx\Affichage\Checklist 5S tente.pdf". On récupère l'adresse en VBA via un .Value. C'est le plus simple mais illisible dans un tableau Excel.
  • Rentrer toute l'adresse lorsqu'on affecte le lien hypertexte au mot. Pas très pratique et redondant.
  • Anticiper et coder en VBA de façon à créer le lien attendu. C'est la solution que je trouve la plus pratique ! Cela donnerai dans ton cas présent : Lien = "C:\Users\zinedine.zidane" & Right(.Cells(Ligne, Col - 1).Hyperlinks(1).Address, Len(.Cells(Ligne, Col - 1).Hyperlinks(1).Address) - 2) ! À adapter le "C:\Users\zinedine.zidane" en fonction de ton réseau évidemment.

C'est cette dernière solution pour laquelle j'ai opté. J'en ai également profité pour aérer ton code, le simplifier et le commenter. Incrémenter et commenter le code est hyper important, on ne se rend pas compte mais ça fait gagner un temps fou !

Voici donc ton fichier.

Avant de tester la macro, il faut que tu affectes le lien à ton mot et que tu corriges le "C:\Users\zinedine.zidane" par le début de ton adresse réseau.

En espérant t'avoir aidé, bon we,

Baboutz

PS: Je n'ai corrigé que la première moitié de ton code, après ton 'Else' tu n'as qu'à copier/coller ce que j'ai fait en faisant les quelques modifs nécessaires

Rechercher des sujets similaires à "mail envoyer tire lien hypertexte situe"