Lien hypertexte trop long avec =LIEN_HYPERTEXTE

gregory2710

XLDnaute Nouveau
Bonjour à tous ! ;)

Je me suis remis à Excel depuis quelques temps, et j'aurais besoin de votre aide.

Je dois créer un lien hypertexte avec énoooooormément de caractères et récupération de données dans une cellule :

mailto:[A2]?subject=[A3]&body=[A4]&[A5]&[A6]

Le souci, c'est que le lien contient beaucoup trop de caractères récupérés, j'ai ainsi une erreur Excel #VALEUR .

Je me suis dis, qu'étant donné que la fonction =LIEN_HYPERTEXTE ne fonctionnait pas avec autant de caractères (il doit y en avoir plusieurs centaines dans mon lien mailto), vous pourriez peut-être m'aider à trouver une autre fonction ?

J'ai entendu parlé du VBA, mais je ne m'y connais pas du tout. J'ai cherché pendant bientôt deux heures sur des forums des informations, mais je n'ai pas trop compris où aller pour entrer les codes VBA, ni même quel code serait approprié à ma situation.

- La solution VBA est-elle utile dans mon cas ?
- Si oui, quel code devrais-je utiliser pour un si long lien (qui utilise une récupération de données dans les cellules dans mon classeur) ?
- Où devrais-je entrer ce code pour le faire fonctionner en hypertexte en cellule J7 par exemple ?

Merci beaucoup pour votre aide! Bonne nuit à tous :)
 

gregory2710

XLDnaute Nouveau
Re : Lien hypertexte trop long avec =LIEN_HYPERTEXTE

Bonjour Paritec! Tu étais de bonheur sur le forum ce matin. Je te remercie pour ta réponse!

Je viens d'attacher à ce message une pièce jointe expliquant le lien hypertexte que je souhaiterais faire; bien trop long pour la fonction =LIEN_HYPERTEXTE.

Quelqu'un connaîtrait-il une autre solution ?

Merci à tous pour votre aide!
 

Pièces jointes

  • Test_EMail.xlsx
    9.6 KB · Affichages: 73

Paritec

XLDnaute Barbatruc
Re : Lien hypertexte trop long avec =LIEN_HYPERTEXTE

Re bonjour Gregory le forum
oui mais ton lien va servir à quoi?? tu vas l'utiliser comment? par qui? ou? pourquoi?
Tu n'as rien expliqué dans le fichier alors impossible à comprendre
Mais si tu nous dis ce que tu veux faire de ce lien, le coller je ne sais ou, là on va te faire la macro qui va le faire
a+
Papou:eek:
 

gregory2710

XLDnaute Nouveau
Re : Lien hypertexte trop long avec =LIEN_HYPERTEXTE

Re bonjour Gregory le forum
oui mais ton lien va servir à quoi?? tu vas l'utiliser comment? par qui? ou? pourquoi?
Tu n'as rien expliqué dans le fichier alors impossible à comprendre
Mais si tu nous dis ce que tu veux faire de ce lien, le coller je ne sais ou, là on va te faire la macro qui va le faire
a+
Papou:eek:

Au temps pour moi ; à vrai dire, je voudrais juste que ce lien mailto: (d'une longueur impressionnante) soit affiché dans la cellule I1. Qu'il soit écrit dans la cellule I1 "Cliquez ici pour envoyer" et donne le lien hypertexte "mailto:"&B1&"?subject="&C1&"?body="&E1&D1&"%0d%0a%0d%0a"&F1&"%0d%0a%0d%0a"&G1&"%0d%0a%0d%0a"&H1.

Tu comprends ? Juste un simple lien mailto: qui reprend des données dans des cellules et qui est trèèèèès long (parce qu'il y a beaucoup de texte après le ?body=.

Le lien sera utilisé par les utilisateurs du fichier, tout simplement pour éviter de devoir écrire un e-mail complet; le e-mail sera pré-écrit, par des textes dans des cellules :)

Merci beaucoup! :)
 

mromain

XLDnaute Barbatruc
Re : Lien hypertexte trop long avec =LIEN_HYPERTEXTE

Bonjour Gregory, Papou

Voici un essai en VBA.
Le mail est créé lorsqu’on double-clique sur la cellule.

Le code est sur la feuille (clic-droit sur l’onglet, puis Visualiser le code).

A+
 

Pièces jointes

  • Test_EMail.xlsm
    17.2 KB · Affichages: 147

gregory2710

XLDnaute Nouveau
Re : Lien hypertexte trop long avec =LIEN_HYPERTEXTE

Coucou mromain, merci beaucoup pour ton fichier! :) Ça a vraiment l'air d'être pas mal.

Par contre, quand je fais un double-clic sur la cellule, j'obtiens une erreur de Microsoft Visual Basic :

Erreur d'exécution '5' :
Argument ou appel de procédure incorrect

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim numLigne As Long, lienH As String

'si la cellule sur laquelle on vient de double-cliquer contient le texte "Double-clic pour envoyer un mail"
If Target(1, 1).Text = "Double-clic pour envoyer un mail" Then

'créer le lien hypertexte
numLigne = Target(1, 1).Row
lienH = "mailto:" & Me.Range("B" & numLigne).Text & _
"?subject=" & Me.Range("C" & numLigne).Text & _
"&body=" & Me.Range("E" & numLigne).Text & _
Me.Range("D" & numLigne).Text & "%0d%0a%0d%0a" & _
Me.Range("F" & numLigne).Text & "%0d%0a%0d%0a" & _
Me.Range("G" & numLigne).Text & "%0d%0a%0d%0a" & _
Me.Range("H" & numLigne).Text

'suivre le lien hypertexte
ThisWorkbook.FollowHyperlink lienH

Debug.Print lienH

'annuler l'édition de la cellule
Cancel = True
End If

End Sub

Est-ce qu'il y a quelque chose d'incorrect ? :-S
 

mromain

XLDnaute Barbatruc
Re : Lien hypertexte trop long avec =LIEN_HYPERTEXTE

Re-bonjour,

C'est étrange...
Je viens de tester en téléchargeant le fichier que je t'ai envoyé et je n'ai pas réussi à reproduire l'erreur (avec Excel 2013).
Une autre piste serait de créer le mail en "VBA Outlook" sans utiliser la méthode de lien hypertexte mailto.

Qu'en penses-tu ?

A+
 

mromain

XLDnaute Barbatruc
Re : Lien hypertexte trop long avec =LIEN_HYPERTEXTE

Bonjour Gregory, Papou, le forum

Essaye en replaçant le code de l’ancien fichier par celui-ci :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim numLigne As Long, lienH As String
Dim olApp As Object, olMail As Object
    
    'si la cellule sur laquelle on vient de double-cliquer contient le texte "Double-clic pour envoyer un mail"
     If Target(1, 1).Text = "Double-clic pour envoyer un mail" Then
        
        'récupérer / ouvrir Outlook
         On Error Resume Next
         Set olApp = GetObject(, "Outlook.Application")
         If olApp Is Nothing Then Set olApp = CreateObject("Outlook.Application")
        On Error GoTo 0
        If olApp Is Nothing Then Stop       'si arrêt ici, on n'a pas réussi à ouvrir Outlook
         
        numLigne = Target(1, 1).Row
        
        'créer et afficher le mail
         Set olMail = olApp.CreateItem(0)
        olMail.To = Me.Range("B" & numLigne).Text
        olMail.Subject = Me.Range("C" & numLigne).Text
        olMail.HTMLBody = Me.Range("E" & numLigne).Text & _
                           Me.Range("D" & numLigne).Text & "<BR><BR>" & _
                           Me.Range("F" & numLigne).Text & "<BR><BR>" & _
                           Me.Range("G" & numLigne).Text & "<BR><BR>" & _
                           Me.Range("H" & numLigne).Text
        olMail.Display
        
        'annuler l'édition de la cellule
         Cancel = True
    End If
    
End Sub

Le "VBA Outlook" contient toutes les instructions pour piloter Outlook (les mails, les contacts, les tâches, …), contrairement au "VBA Excel" qui permet lui de piloter Excel (classeurs, feuilles, formules, …).

A+
 

Discussions similaires

Réponses
5
Affichages
192
Réponses
21
Affichages
1 K

Statistiques des forums

Discussions
312 047
Messages
2 084 864
Membres
102 690
dernier inscrit
souleymaane