contenu de cellules avec liens mailto invisibles...

Masck

XLDnaute Nouveau
Bonjour le forum,

Tout d'abord j'utilise Excel 2003 sous Windows XP SP2.
Je sollicite votre aide pour une "bizarrerie" rencontrée sur un fichier.
Ce fichier est une extraction faite en automatique, mais là n'est pas la question.

Dans ce fichier d'environ 1500 lignes, il y a une colonne "eMail".
Le contenu des cellules de cette colonne est de type mailto:prenom.nom@societe.fr
Le lien est actif, fonctionnel mais le contenu de la cellule invisible...Ce n'est pas un problème de format de cellule ou de police.

Par contre si je fais, clic droit > Modifier le lien hypertexte et que je clic sur OK, le contenu de la cellule réapparait...Il en va de même si je fais clic droit > Modifier le lien hypertexte et que j'enlève mailto: dans la partie "Texte à afficher"

D'où ma question, est-il possible de modifier les liens hypertexte par lot pour enlever le mailto: au début de chaque cellule de la colonne ou plus simplement faire une macro qui fera "pour moi", clic droit, Modifier le lien hypertexte, OK sur les 1500 lignes de la colonne ?

En espérant avoir été assez clair, je vous remercie d'avance de vos réponses.
 

SergiO

XLDnaute Accro
Re : contenu de cellules avec liens mailto invisibles...

Bonjour Masck,

Essaie ce code, j'ai considéré que tes mails sont en colonne D, adapte donc ce qui est en rouge en fonction de ton fichier:

Code:
Sub Texte()
Derlig = Range("[COLOR=Red]D[/COLOR]65536").End(xlUp).Row
For L = 2 To Derlig
Cells(L, [COLOR=Red]4[/COLOR]) = Replace(Cells(L, [COLOR=Red]4[/COLOR]), "mailto:", "")
Next L
End Sub
@+
 

Masck

XLDnaute Nouveau
Re : contenu de cellules avec liens mailto invisibles...

Bonjour Sergio et merci pour ta réponse.

Malheureusement, ton code n'a pas fait réapparaître mes adresses email dans leurs cellules...Mes adresses étant en colonne C, j'ai adapté ton code en remplaçant le D par un C et le 4 par un 3, mais sans succès. J'ai essayé de rajouter une colonne pour que mes adresses passent en colonne D sans modifier ton code mais même chose.

Il n'y a aucun message d'erreur mais rien n'y fait.

Est ce qu'il n'y aurait pas moyen d'adapter une macro "enregistrée" en automatique ?
J'ai bien essayé de faire une nouvelle macro en enregistrant les actions Clic droit sur la cellule > Modifier le lien hypertexte > OK, mais il m'affiche un code du type :

Selection.Hyperlinks(1).TextToDisplay = "mailto:prenom.nom@societe.fr

Je ne peux donc pas adapter à toute une colonne je pense...Si vous avez des idées, merci d'avance.
 

Masck

XLDnaute Nouveau
Re : contenu de cellules avec liens mailto invisibles...

Malheureusement non, étant donné que ce sont des noms de personnes, cela doit rester confidentiel...j'en suis désolé.

Je ne peux pas modifier les noms des personnes car cela résout mon problème...

Je ne suis même pas capable de reproduire l'erreur, ce qui me fait penser que cela vient de l'extraction...Je vais chercher de ce côté.

Sergio, désolé d'avoir abusé de ton temps et je te remercie sincèrement d'avoir planché sur mon problème

à plus sur le forum.
 

STephane

XLDnaute Occasionnel
Re : contenu de cellules avec liens mailto invisibles...

à partir de la version d'excel 2000, tu pourrais - après fait uen copie de sauvegarde de ton fichier -faire cela

For Each hl In Columns("d").Hyperlinks
hl.Parent.Value = Split(hl.Address, "mailto:")(1)
Next hl
 

STephane

XLDnaute Occasionnel
Re : contenu de cellules avec liens mailto invisibles...

Le bloc d'instruction -- FOR EACH -- permet de boucler sur chaque objet d'une collection.
L'expression -- Columns("d").Hyperlinks -- retourne la collection des hyperliens dans la colonne D de la feuille active.
L'expresion hl.parent fait référence à l'objet parent d'un objet HYPERLIEN -- hl -- en cours de lecture, soit en l'occurence une cellule.
L'expression hl.parent.value permet donc de mettre à jour la valeur de la cellule contenant l'hyperlien.

La valeur passée dans cette cellule est le résultat de l'expression -- Split(hl.Address, "mailto:")(1). Cette expression utilise la méthode Split (fonction VBA disponible depuis Office 2000) qui permet le découpage d'une chaîne en fonction d'un délimiteur et donc le résultat est un tableau des différentes chaînes découpées.
La fonction SPLIT retourne donc un tableau résultat de 2 valeurs.
LA première est la chaine "vide" (car il n'y a que du vide avant le délimiteur "mailto").
La seconde est l'adresse email spécifiée après
 

Masck

XLDnaute Nouveau
Re : contenu de cellules avec liens mailto invisibles...

J'avais demandé "brièvement" !!! :D

Plus sérieusement,merci pour ces éclaircissements STephane, c'est très appréciable de mieux comprendre le déroulement de cette macro

À plus et merci encore!
 

Discussions similaires

Réponses
2
Affichages
315

Statistiques des forums

Discussions
312 490
Messages
2 088 881
Membres
103 981
dernier inscrit
vinsalcatraz