Microsoft 365 Créer des liens hypertextes "mailto:" à partir de plusieurs emails

yanntop1

XLDnaute Nouveau
Bonjour les experts Excel;

J'ai un fichier excel avec des centaines d'email en version texte sur une colonne. Je souhaite les convertir en lien hypertexte (avec mailto: )

J'ai vu des solutions, =LIEN_HYPERTEXTE("mailto:"&A1) ; cependant la suggestion donne la solution dans une autre colonne.

Est-il possible svp d'avoir les liens (directement dans les cellules concernées) et non dans une autre cellule. J'ai essayé de multiples manipulations en vain.

**Sans bien sûr passer par les macros.

Merci par avance
Cordialement
 

fanch55

XLDnaute Barbatruc
Bonjour,
Si j'ai bien compris, vous avez un classeur avec de nombreuses adresses mails dont certaines n'ont pas ou plus le lien hypertexte .
Et vous ne voulez pas de Macro pour réactiver les liens sur les cellules concernées .

Mauvaise nouvelle :
Il ne vous reste plus qu'à cliquer sur la cellule en question,
entrer en modification dans celle-ci
vous positionner en fin de chaine et faire "entrée" ou "Valider".
Et ceci pour toutes les cellules sans lien .... la galère
yanntop.gif
Une formule ne peut pas modifier la cellule où elle est, il faut oublier tout Lien_Hypertexte automatique.
Ou se taper la saisie complète pour chaque cellule concernée ... la galère
yanntop2.gif
Avec une macro jetable :
VB:
Sub SetLink()
Dim Cell As Range
    For Each Cell In Selection
        If Cell.Hyperlinks.Count = 0 And InStr(Cell, "@") > 0 Then
            ActiveSheet.Hyperlinks.Add Anchor:=Cell, _
                TextToDisplay:=Cell.Text, Address:="mailto:" & Cell.Text
        End If
    Next
End Sub
yanntop3.gif
 
Dernière édition:

yanntop1

XLDnaute Nouveau
Bonjour,
Si j'ai bien compris, vous avez un classeur avec de nombreuses adresses mails dont certaines n'ont pas ou plus le lien hypertexte .
Et vous ne voulez pas de Macro pour réactiver les liens sur les cellules concernées .

Mauvaise nouvelle :
Il ne vous reste plus qu'à cliquer sur la cellule en question,
entrer en modification dans celle-ci
vous positionner en fin de chaine et faire "entrée" ou "Valider".
Et ceci pour toutes les cellules sans lien .... la galère
Regarde la pièce jointe 1161856
Une formule ne peut pas modifier la cellule où elle est, il faut oublier tout Lien_Hypertexte automatique.
Ou se taper la saisie complète pour chaque cellule concernée ... la galère
Regarde la pièce jointe 1161858
Avec une macro jetable :
VB:
Sub SetLink()
Dim Cell As Range
    For Each Cell In Selection
        If Cell.Hyperlinks.Count = 0 And InStr(Cell, "@") > 0 Then
            ActiveSheet.Hyperlinks.Add Anchor:=Cell, _
                TextToDisplay:=Cell.Text, Address:="mailto:" & Cell.Text
        End If
    Next
End Sub
Regarde la pièce jointe 1161869
Bonjour @fanch55

Merci d'avoir pris la peine de répondre à ma preoccupation avec ces 3 solutions ; c'est très aimable de ta part.

*J'ai essayé ta 3è solution qui a bien marché cependant il faudrait réenregistrer les fichiers en tenant compte des macros , j'ai plus d'une vingtaine de fichier ---> Fastidieux mais Faisable

Toutefois en cliquant "droit" sur plusieurs cellules, on a bien ---> Lien --> et Les champs ci-dessous (capture). Ne serait-il pas stp possible de modifier ces champs afin de convertir les cellules sélectionnées directement en lien ?
*Texte à afficher
*Adresse de courrier
*Objet

Merci par avance
Cordialement
 

Pièces jointes

  • Fanch55.png
    Fanch55.png
    23.1 KB · Affichages: 15

fanch55

XLDnaute Barbatruc
*J'ai essayé ta 3è solution qui a bien marché cependant il faudrait réenregistrer les fichiers en tenant compte des macros , j'ai plus d'une vingtaine de fichier ---> Fastidieux mais Faisable
  • Ouvrir un nouveau classeur
  • Ouvrir le Vbe
  • Insérer un module
  • Coller le code SetLink
  • conserver le classeur ouvert

  • Pour chaque classeur à modifier :
    • Ouvrir le classeur à modifier
    • Sélectionner les cellules à modifier
    • Executer la macro SetLink
    • Fermer le classeur modifié
  • Fermer le nouveau classeur sans enregistrer ..
Ne serait-il pas stp possible de modifier ces champs afin de convertir les cellules sélectionnées directement en lien ?
Modifiez ce que vous voulez en sujet
VB:
Sub SetLink()
Dim Cell As Range
    For Each Cell In Selection
        If InStr(Cell, "@") > 0 Then
            If Cell.Hyperlinks.Count = 0 Then Cell.Hyperlinks.Delete
            ActiveSheet.Hyperlinks.Add Anchor:=Cell, _
                TextToDisplay:=Cell.Text, _
                Address:="mailto:" & Cell.Text & "?subject=ceci est un sujet"
        End If
    Next
End Sub
 

yanntop1

XLDnaute Nouveau
  • Ouvrir un nouveau classeur
  • Ouvrir le Vbe
  • Insérer un module
  • Coller le code SetLink
  • conserver le classeur ouvert

  • Pour chaque classeur à modifier :
    • Ouvrir le classeur à modifier
    • Sélectionner les cellules à modifier
    • Executer la macro SetLink
    • Fermer le classeur modifié
  • Fermer le nouveau classeur sans enregistrer ..

Modifiez ce que vous voulez en sujet
VB:
Sub SetLink()
Dim Cell As Range
    For Each Cell In Selection
        If InStr(Cell, "@") > 0 Then
            If Cell.Hyperlinks.Count = 0 Then Cell.Hyperlinks.Delete
            ActiveSheet.Hyperlinks.Add Anchor:=Cell, _
                TextToDisplay:=Cell.Text, _
                Address:="mailto:" & Cell.Text & "?subject=ceci est un sujet"
        End If
    Next
End Sub
RE

Merci Fanch55.

Merci pour ta réponse, pour l'astuce VBA j'ai pu le faire.

Ma question portait plutôt sur la boite de dialogue qui s'affiche après avoir sélectionné plusieurs cellules puis cliqué sur --> lien :

(1) Selection des cellules
(2) "lien" => Insérer un lien
(3) [Texte à afficher] [Adresse de courrier] [Objet]

Je te renvoie les captures ci-dessous ; n'est-il pas possible stp de "modifier les champs" afin d'avoir le meme resultat?

1675101464524.png

1675101481420.png


Merci par avance
Cordialement
 

fanch55

XLDnaute Barbatruc
Sélectionner plusieurs cellules et modifier le lien par le menu contextuel ne le fera que sur la première cellule.
On pourrait modifier ce menu contextuel pour y mettre le Setlink, mais le résultat serait le même que de lancer la macro, le jeu n'en vaut pas la chandelle ...
 

yanntop1

XLDnaute Nouveau
Ok, j'avais tout essayé moi-même à ce niveau en vain

Je tiens vraiment à te dire un "Grand Merci" @fanch55. J'avais galéré pendant longtemps

La solution de la macro me parait la meilleure, je vais l'appliquer sur tous les classeurs et les enregistrer un par un.

*Je ne peux pas m'aventurer, je ne sais pas s'il est possible de s'échanger les contacts via message privé sur le forum ! J'aimerais bien garder ton contact courriel. Je suis partenaire dans un cabinet conseil en Analyse de données client et nous travaillons énormément avec les données, notamment excel. Besoin d'un expert surement sur un de nos projets.

A bientôt.
 

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 193
Membres
112 679
dernier inscrit
Yupanki