Liens Hypertextes modifiés par Excel
Bonjour
J'ai cherché sur les questions de liens hypertexte mais je n'ai pas trouvé de réponse à mon problème.
Je précise que je ne connais quasiment rien à excel et je m'en sert pour différents tableaux basiques.
Donc voilà mon soucis (excel 2016)
J'ai un tableau excel qui répertorie toutes mes partitions par genre etc...et j'ai fait un lien hypertexte sur chaque titre de partition qui m'envoie sur le dossier du même nom.
Je me sert de ce tableau depuis des années et je n'ai jamais aucun soucis sauf que depuis hier mes liens ne fonctionnent plus. .......nooooooon.....des centaines de liens........
J'ai recréé un lien sur une partition et ça fonctionne...!!! mais je ne me vois pas refaire cela pour plusieurs centaines d'autres.
Je me suis rendu compte en passant la souris sur les titres qu'ils n'avaient pas le même chemin que celui que je venais de refaire.
Le nouveau m'indique file:///C\Users\Michael\Desktop\Categories\Titre.......ce qui parait normal puisque mon dossier principal est sur le bureau.
Tous les liens qui ne fonctionnent plus indiquent file:///C\Users\Michael\AppData\Roaming\Microsoft\Excel\Categories\Titre
Donc rien à voir...
J’espère avoir été assez clair dans mon descriptif et j’espère que vous pourrez trouver la raison à ce problème.
Merci d'avance
Michael
Hello !
Donc il faut remplacer AppData\Roaming\Microsoft\Excel par Desktop, soit par Rechercher/remplacer, soit par une fonction plus complexe ! mets nous un bout de fichier ...
Bonjour,
À tester (Pour le point 6, ne sélectionne pas toute la feuille mais bien les cellules contenant les liens) :
1) Copier ce code ;
Sub Modifier_lien()
Dim Doc As Workbook
Dim Cell As Range
Dim OldStr As String
Dim NewStr As String
Dim OldHp As String
Dim NewHp As String
'Chemin à modifier
OldStr = "AppData\Roaming\Microsoft\Excel"
NewStr = "Desktop"
Application.Calculation = xlManual
Set Doc = Application.ActiveWorkbook
For Each Cell In Selection
'Verifie si la cellule contient des liens hypertexte
If Cell.Hyperlinks.Count > 0 Then
'Recupère l'adresse du lien sous forme de chaine
OldHp = Cell.Hyperlinks(1).Address
'Remplace l'ancienne chaine par la nouvelle
NewHp = Replace(OldHp, OldStr, NewStr)
'Supprime tous les liens hypertexte de la cellule
Cell.Hyperlinks.Delete
'Affecte le nouveau lien hypertexte
Doc.ActiveSheet.Hyperlinks.Add Anchor:=Cell, Address:=NewHp
End If
Next Cell
Application.Calculation = xlAutomatic
End Sub2) Ouvrir l'éditeur VBA (Alt-F11) dans une copie du fichier Excel ;
3) Menu Insertion>Module ;
4) Coller ;
5) Fermer la fenêtre de l'éditeur VBA ;
6) Sélectionner la plage contenant uniquement les liens hypertexte ;
7) Afficher les macros (Alt-F8) et cliquer sur Exécuter.
Pas la peine d’enregistrer la macro, trouvée sur le net après une petite recherche.
merci Oyobrans mais cela ne fonctionne pas
Je vous joint un morceau du tableau.
A noter que les liens hypertextes des chiffres sur les lignes de titres ne fonctionnent plus également.
J'ai refait le 1er lien (20 regards sur 6 cordes).
Merci d'avance
Bon, j'avoue ne pas être un spécialiste des liens, c'est pour cela que j'avais jeté un œil d'ailleurs.
Petite question : Quand je survole les liens "morts", j'ai file:///C\Users\AppData\Roaming\Microsoft\Excel\Categories\Titre, et non pas file:///C\Users\Michael\AppData\Roaming\Microsoft\Excel\Categories\Titre, le dossier de ton profil est bien présent chez toi ?
Il me place le bon lien dans mon dossier de téléchargement, alors je pensais désactiver la mise à jour automatique des liens pour ce classeur (J'utilise la version 2007) :
Menu Fichier > Options > Options avancées puis décocher dans la section Lors du calcul de ce classeur > Mettre à jour les liaisons vers d'autres documents.
Peux-tu faire cela puis envoyer à nouveau ton fichier ?
Si il y a bien Michael avant AppData.
Donc voilà c'est décoché
Avec un peu de retard... Tu peux peut-être réessayer la procédure initiale avec ce code, j'ai juste changé les "\" en "/", ça passe chez moi :
Sub Modifier_lien()
Dim Doc As Workbook
Dim Cell As Range
Dim OldStr As String
Dim NewStr As String
Dim OldHp As String
Dim NewHp As String
'Chemin à modifier
OldStr = "AppData/Roaming/Microsoft/Excel"
NewStr = "Desktop"
Application.Calculation = xlManual
Set Doc = Application.ActiveWorkbook
For Each Cell In Selection
'Verifie si la cellule contient des liens hypertexte
If Cell.Hyperlinks.Count > 0 Then
'Recupère l'adresse du lien sous forme de chaine
OldHp = Cell.Hyperlinks(1).Address
Debug.Print OldHp
'Remplace l'ancienne chaine par la nouvelle
NewHp = Replace(OldHp, OldStr, NewStr)
Debug.Print NewHp
'Supprime tous les liens hypertexte de la cellule
Cell.Hyperlinks.Delete
'Affecte le nouveau lien hypertexte
Doc.ActiveSheet.Hyperlinks.Add Anchor:=Cell, Address:=NewHp
End If
Next Cell
Application.Calculation = xlAutomatic
End Submerci de passer du temps pour moi Oyobrans
Alors cela fonctionne presque , il manque juste un slash que je n'arrive pas à rajouter sur la formule.
file:///C:\Users\Michael\Desktop\BOOKS\1 guitare\Adrian Andrei\ 20 regards....
file:///C:\Users\Michael\Desktop\BOOKS\1 guitare\Adrian Andrei - 20 regards....
Le premier c'est celui qui fonctionne et le 2e celui avec votre modif, il manque donc juste un slash après Andrei
Nota j'ai rajouté "BOOKS" dans la formule que j'avais zappé au départ.
en fait c'est DOSSIER/CATÉGORIE/AUTEUR/TITRE
en espérant ne pas abuser de votre temps
Merci
Bonsoir,
En fait, le code se contente de modifier "AppData/Roaming/Microsoft/Excel" en "Desktop" dans les liens :
'
Chemin à modifier
OldStr = "AppData/Roaming/Microsoft/Excel"
NewStr = "Desktop"Apparemment, il faut remplacer les \ par des / dans la recherche, ce doit être dû aux paramètres régionaux ou je ne sais quoi (les voies de l'informatique...)
La macro n'est pas censée toucher à autre chose, elle ne transforme rien en tiret du moins. Es-tu (Êtes-vous) sûr que le tiret n'est pas présent au départ ? Il faut bien évidemment une situation générique pour appliquer un traitement, le remplacement de file:///C\Users\Michael\AppData\Roaming\Microsoft\Excel\Categories\Titre en file:///C\Users\Desktop\Microsoft\Excel\Categories\Titre en est une. Ce tiret pose-t-il problème partout ? Merci d'apporter des précisions.
Bonjour
non il n'y a pas de tiret
file:///C:\Users\Michael\Desktop\BOOKS\1 guitare\Adrian Andrei\ 20 regards....(pour que cela fonctionne)
file:///C:\Users\Michael\Desktop\BOOKS\1 guitare\Adrian Andrei - 20 regards....(avec votre modif)
ce qui fait
file:///C:\Users\Michael\Desktop\Dossier\Dossier\Dossier\Dossier
j’espère être assez clair
Merci d'avance
j'ai oublié une précision
La formule avec le tiret fonctionne quand il n'y a pas de sous dossiers dans le dossier "auteur"