Lien hypertexte
Fermé
mounish0
Messages postés
5
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
23 août 2013
-
21 août 2013 à 18:50
mounish0 - 30 août 2013 à 12:13
mounish0 - 30 août 2013 à 12:13
A voir également:
- Lien hypertexte
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Verifier un lien - Guide
- Renommer un lien hypertexte ✓ - Forum Bureautique
- Renommer un lien ✓ - Forum Windows
6 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
Modifié par pijaku le 22/08/2013 à 09:28
Modifié par pijaku le 22/08/2013 à 09:28
Salut,
Pas de grosses erreurs, tu étais plutôt bien parti.
1- Address prends deux d, et deux s (à la place de adress)
2- Dans ton test If, il y a deux syntaxe différentes. Si tu va à la ligne après le "Then", il faut un "End If", sinon il n'en faut pas :
Donc ton code devient :
Cordialement,
Franck
Pas de grosses erreurs, tu étais plutôt bien parti.
1- Address prends deux d, et deux s (à la place de adress)
2- Dans ton test If, il y a deux syntaxe différentes. Si tu va à la ligne après le "Then", il faut un "End If", sinon il n'en faut pas :
If Machin = Bidule Then Truc = Machin Ou : If Machin = Bidule Then Truc = Machin End If
Donc ton code devient :
Sub Modif_lien() ' Modif_lien Macro dans la colonne numéro 15 Dim machaine As String Dim i As Integer machaine = "" i = 0 For i = 5 To 3000 machaine = Cells(i, 15).Hyperlinks(1).Address If machaine <> "" And Left(machaine, 41) = "../../../AppData/Roaming/Microsoft/Excel/" Then Cells(i, 15).Hyperlinks(1).Address = Right(machaine, Len(machaine) - 41) Next i End Sub
Cordialement,
Franck
mounish0
Messages postés
5
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
23 août 2013
22 août 2013 à 19:16
22 août 2013 à 19:16
Merci pour cette correction et les informations.
J'ai copié/collé ton code et à l'exécution de la macro et malheureusement j'ai le message d'erreur suivant :
"L'indice n'appartient pas à la sélection"
La ligne de code suivante est surlignée :
machaine = Cells(i, 15).Hyperlinks(1).Address
Est-ce que tu aurais encore un petit coup de pouce à me donner?!!
Merci d'avance.
Mounish
J'ai copié/collé ton code et à l'exécution de la macro et malheureusement j'ai le message d'erreur suivant :
"L'indice n'appartient pas à la sélection"
La ligne de code suivante est surlignée :
machaine = Cells(i, 15).Hyperlinks(1).Address
Est-ce que tu aurais encore un petit coup de pouce à me donner?!!
Merci d'avance.
Mounish
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
23 août 2013 à 08:38
23 août 2013 à 08:38
Bonjour,
De rien!
Effectivement, je suis parti du principe que chacune des cellules sur lesquelles tu effectues ta boucle contient un lien. S'il n'y en a pas, ça buggue.
Pour éviter ce bug, tu peux utiliser cette fonction (trouvée ICI) qui renvoie l'adresse du lien, s'il y en a un...
Ce qui change le code donné précédemment en :
!!! ADAPTE le nom de ta feuille, en gras dans le code
De rien!
Effectivement, je suis parti du principe que chacune des cellules sur lesquelles tu effectues ta boucle contient un lien. S'il n'y en a pas, ça buggue.
Pour éviter ce bug, tu peux utiliser cette fonction (trouvée ICI) qui renvoie l'adresse du lien, s'il y en a un...
Function AdresseHyperLien(ARange As Range, Feuille As Worksheet) As String Dim h AdresseHyperLien = "" For Each h In Feuille.Hyperlinks If h.Range = ARange Then AdresseHyperLien = h.Address Exit For End If Next End Function
Ce qui change le code donné précédemment en :
Sub Modif_lien() ' Modif_lien Macro dans la colonne numéro 15 Dim machaine As String Dim i As Integer machaine = "" For i = 5 To 3000 machaine = AdresseHyperLien(Sheets("Feuil2").Range("O" & i), Sheets("Feuil2")) If machaine <> "" And Left(machaine, 41) = "../../../AppData/Roaming/Microsoft/Excel/" Then Cells(i, 15).Hyperlinks(1).Address = Right(machaine, Len(machaine) - 41) Next i End Sub
!!! ADAPTE le nom de ta feuille, en gras dans le code
mounish0
Messages postés
5
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
23 août 2013
23 août 2013 à 09:25
23 août 2013 à 09:25
Bonjour,
Quand un problème s'enlève, un autre arrive;
J'ai bien mis le code en remplaçant aux deux endroits le nom de ma feuille qui s'appelle "tous" et voilà la nouvelle erreur...
Sub ou Function non définie avec : "AdresseHyperLien" de surligné dans la ligne de code :
machaine = AdresseHyperLien(Sheets("tous").Range("O" & i), Sheets("tous"))
Aurais-tu encore une solution Franck??
Merci.
Mounish
Quand un problème s'enlève, un autre arrive;
J'ai bien mis le code en remplaçant aux deux endroits le nom de ma feuille qui s'appelle "tous" et voilà la nouvelle erreur...
Sub ou Function non définie avec : "AdresseHyperLien" de surligné dans la ligne de code :
machaine = AdresseHyperLien(Sheets("tous").Range("O" & i), Sheets("tous"))
Aurais-tu encore une solution Franck??
Merci.
Mounish
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
23 août 2013 à 09:32
23 août 2013 à 09:32
As tu ajouté, sous ton code, après End Sub, la fonction :
Function AdresseHyperLien(ARange As Range, Feuille As Worksheet) As String Dim h AdresseHyperLien = "" For Each h In Feuille.Hyperlinks If h.Range = ARange Then AdresseHyperLien = h.Address Exit For End If Next End Function
mounish0
Messages postés
5
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
23 août 2013
23 août 2013 à 14:23
23 août 2013 à 14:23
Je n'avais pas ajouté de fonction sous end sub. Du coup, après ajout de ton code sous end sub.
Voilà la nouvelle erreur : incompatibilité de type pour la ligne de code
If h.Range = ARange Then
Est-ce normal que le derrière le "Dim h", il n'y ait rien??
Voilà la nouvelle erreur : incompatibilité de type pour la ligne de code
If h.Range = ARange Then
Est-ce normal que le derrière le "Dim h", il n'y ait rien??
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
23 août 2013 à 14:52
23 août 2013 à 14:52
Sans voir ton fichier, on peut jouer aux devinettes longtemps...
Peux tu nous passer une copie, sans données confidentielles, en utilisant https://www.cjoint.com/
Peux tu nous passer une copie, sans données confidentielles, en utilisant https://www.cjoint.com/
mounish0
Messages postés
5
Date d'inscription
mercredi 21 août 2013
Statut
Membre
Dernière intervention
23 août 2013
23 août 2013 à 15:01
23 août 2013 à 15:01
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
23 août 2013 à 16:01
23 août 2013 à 16:01
chez moi, avec ton fichier, aucun bug à déplorer...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
26 août 2013 à 14:23
26 août 2013 à 14:23
Salut,
On va donc changer de fonction, pour une plus simple :
On va donc changer de fonction, pour une plus simple :
Sub Modif_lien() ' Modif_lien Macro dans la colonne numéro 15 dans la feuille "tous" Dim machaine As String Dim i As Integer machaine = "" For i = 5 To 3000 machaine = EstHyperLien(Sheets("tous").Range("O" & i)) If machaine <> "" And Left(machaine, 41) = "../../../AppData/Roaming/Microsoft/Excel/" Then Cells(i, 15).Hyperlinks(1).Address = Right(machaine, Len(machaine) - 41) Next i End Sub Function EstHyperLien(ARange As Range) As Boolean EstHyperLien = False If ARange.Hyperlinks.Count = 1 Then EstHyperLien = True End Function
Merci pour le temps que tu passes à m'aider Franck.
Je viens de mettre le nouveau code, pas e bug mais les liens ne changent toujours pas...
Je viens de mettre le nouveau code, pas e bug mais les liens ne changent toujours pas...
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
27 août 2013 à 08:42
27 août 2013 à 08:42
Oui, stupide erreur de ma part. J'ai omis de modifier le code de la Sub;..
Essaie ceci :
Essaie ceci :
Sub Modif_lien() ' Modif_lien Macro dans la colonne numéro 15 dans la feuille "tous" Dim machaine As String Dim i As Integer machaine = "" For i = 5 To 3000 If EstHyperLien(Sheets("tous").Range("O" & i)) = True Then machaine = Cells(i, 15).Hyperlinks(1).Address If machaine <> "" And Left(machaine, 41) = "../../../AppData/Roaming/Microsoft/Excel/" Then Cells(i, 15).Hyperlinks(1).Address = Right(machaine, Len(machaine) - 41) Next i End Sub Function EstHyperLien(ARange As Range) As Boolean EstHyperLien = False If ARange.Hyperlinks.Count = 1 Then EstHyperLien = True End Function
Rebonjour,
Je viens de me repencher sur le code et je n'avais pas fait attention que je n'avais pas écrit tout le lien hypertexte en entier.
Au lieu des ..\..\, il y avait en fait une adresse plus complexe :
///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\
Du coup, j'ai modifier la ligne ci dessous :
If machaine <> "" And Left(machaine, 52) = "///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\" Then Cells(i, 15).Hyperlinks(1).Address = Replace(machaine, "///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\", "///C:\Users\Clement\Documents\réglementation\veille\")
De ce fait, je n'ai plus de bug mais mes liens ne changent toujours pas...
Voici le code à jour
Sub Modif_lien()
' Modif_lien Macro dans la colonne numéro 15 dans la feuille "tous"
Dim machaine As String
Dim i As Integer
machaine = ""
machaine2 = ""
For i = 5 To 3000
If EstHyperLien(Sheets("tous").Range("O" & i)) = True Then machaine = Cells(i, 15).Hyperlinks(1).Address
If machaine <> "" And Left(machaine, 52) = "///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\" Then Cells(i, 15).Hyperlinks(1).Address = Replace(machaine, "///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\", "///C:\Users\Clement\Documents\réglementation\veille\")
' C:\Users\ClementDocuments\réglementation\veille\fiches_de_lecture\D...
Next i
End Sub
Function EstHyperLien(ARange As Range) As Boolean
EstHyperLien = False
If ARange.Hyperlinks.Count = 1 Then EstHyperLien = True
End Function
Mounish
Je viens de me repencher sur le code et je n'avais pas fait attention que je n'avais pas écrit tout le lien hypertexte en entier.
Au lieu des ..\..\, il y avait en fait une adresse plus complexe :
///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\
Du coup, j'ai modifier la ligne ci dessous :
If machaine <> "" And Left(machaine, 52) = "///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\" Then Cells(i, 15).Hyperlinks(1).Address = Replace(machaine, "///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\", "///C:\Users\Clement\Documents\réglementation\veille\")
De ce fait, je n'ai plus de bug mais mes liens ne changent toujours pas...
Voici le code à jour
Sub Modif_lien()
' Modif_lien Macro dans la colonne numéro 15 dans la feuille "tous"
Dim machaine As String
Dim i As Integer
machaine = ""
machaine2 = ""
For i = 5 To 3000
If EstHyperLien(Sheets("tous").Range("O" & i)) = True Then machaine = Cells(i, 15).Hyperlinks(1).Address
If machaine <> "" And Left(machaine, 52) = "///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\" Then Cells(i, 15).Hyperlinks(1).Address = Replace(machaine, "///C:\Users\Clement\AppData\Roaming\Microsoft\Excel\", "///C:\Users\Clement\Documents\réglementation\veille\")
' C:\Users\ClementDocuments\réglementation\veille\fiches_de_lecture\D...
Next i
End Sub
Function EstHyperLien(ARange As Range) As Boolean
EstHyperLien = False
If ARange.Hyperlinks.Count = 1 Then EstHyperLien = True
End Function
Mounish
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
28 août 2013 à 12:45
28 août 2013 à 12:45
Salut,
Le code fonctionne, est valide, et fait ce qui est demandé. Maintenant, il te faut vérifier si les liens écrits dans ta colonne O correspondent bien "textuellement parlant"...
Le code fonctionne, est valide, et fait ce qui est demandé. Maintenant, il te faut vérifier si les liens écrits dans ta colonne O correspondent bien "textuellement parlant"...