Changer les liens hypertextes automatiquement en vba excel [Résolu]

hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention - 23 nov. 2017 à 11:40 - Dernière réponse : hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention
- 24 nov. 2017 à 23:43
Bonjour,

Sous excell je cherche à programmer une macro qui génère des liens hypertextes automatiques dans le ^m classeur lors d'une copie et création d'une nouvelle feuille.
je m'explique dans une feuille j'ai 4 ou 5 boutons de lien hypertexte pour aller directement a une adresse voulu par exemple page haut et page bas, a chaque fois en cliquant sur un bouton nouvelle feuille je change manuellement les liens hypertextes au non de la feuille crée.
question: comment est ce que je peu écrire sous vba pour changer automatiquement les liens hypertextes au nom de la feuille crée
merci d'avance.
Afficher la suite 
87Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention

20 réponses

Répondre au sujet
yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 23 nov. 2017 à 11:56
0
Utile
2
bonjour, tu peux t'inspirer de ceci, qui affiche des infos pour tous les hyperliens du classeur:
Sub allhyper()
Dim ws As Worksheet
Dim hp As Hyperlink
For Each ws In ThisWorkbook.Sheets
    For Each hp In ws.Hyperlinks
        Debug.Print ws.Name, hp.Name, hp.SubAddress, hp.TextToDisplay
    Next hp
Next ws
End Sub

si je comprends ce que tu souhaites faire, tu devrais donc simplement modifier l'attribut
SubAddress
des liens présents sur la nouvelle feuille.
hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention - 23 nov. 2017 à 12:09
re
SubAddress : je veux remplacer par le non de la nouvelle feuille (test)
comment est ce que je peu introduire cette écriture dans mon macro ( copie et création de nouvelle feuille):
Sub Groupe59_QuandClic()
ActiveSheet.Copy after:=Sheets(Sheets.Count)
[c7].Value = [c7].Value + 1
[A843].Value = [C843].Value
test = Application.Proper(Format(Range("e779"), "mmm-yyyy"))
ActiveSheet.Name = test
End Sub
yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention > hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention - 23 nov. 2017 à 12:20
Jordane a fait tout le travail pour toi en #2, il ne te reste plus qu'à copier son code.
Commenter la réponse de yg_be
jordane45 19201 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - Modifié par jordane45 le 23/11/2017 à 11:59
0
Utile
13
Bonjour,

Un truc du genre
Sub actualiseLiens()
Dim sh As Worksheet
Dim L As Hyperlink
Dim exclapos  As Integer
Dim strFPrec  As String

'On défini la feuille active
Set sh = ActiveSheet

'On boucle sur chaque lien de la feuille
For Each L In sh.Hyperlinks
    'On trouve l'emplacement du !
    exclapos = InStr(1, L.SubAddress, "!", vbTextCompare)
    'Nom de la feuille précédente
    strFPrec = Mid(L.SubAddress, 1, exclapos - 1)
    'On remplace par le nom de la feuille actuelle
    L.SubAddress = Replace(L.SubAddress, strFPrec, sh.Name)
Next

End Sub



Cordialement, 
Jordane                                                                 
hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention > jordane45 19201 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - 24 nov. 2017 à 09:07
bonjour
j'ai changer ,mais toujours la m^chose j'attire votre attention que j"utilise des boutons comme lien hypertexte.
jordane45 19201 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention > hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention - 24 nov. 2017 à 09:13
Hein ??
Dans ce cas.. pourrais tu partager ton fichier ?
hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention > jordane45 19201 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - 24 nov. 2017 à 10:41
http://www.cjoint.com/doc/17_11/GKyjOsX4RyH_TVA-20-17.xls
a chaque fois que je clique sur mois suivant je change le nom de la feuille manuellement dans les autres boutons en cliquant sur modifié le lien hypertexte et je selectionne la nouvelle feuille crée.
merci et bonne journée
hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention > hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention - 24 nov. 2017 à 14:09
re
au niveau de mon macro (mois prochain) est ce que c'est juste ce que j'ai écrit ou on peu faire autrement(mieu faire) ( le but est de copier la feuille et coller dans une nouvelle feuille mois qui suit et ajouter 1 au cellule c7 et la valeur de a843 prend c843)
j'attend votre intervention
merci d'avance a tous
yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention > hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention - 24 nov. 2017 à 22:33
je n'ai pas de problème avec le fichier envoyé.
deux choses bizarres:
1) le code proposé n'est pas dans le fichier?
2) il n'y a qu'une seule feuille dans le fichier.
Commenter la réponse de jordane45
hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention - 24 nov. 2017 à 23:14
0
Utile
bonsoir
vous avez raison pardon si je m'explique mal, je vous renvoi le fichier avec le code proposé.
http://www.cjoint.com/c/GKywef3Wg21
merci pour votre aide et votre collaboration
Commenter la réponse de hakimr
jordane45 19201 Messages postés mercredi 22 octobre 2003Date d'inscriptionModérateurStatut 10 décembre 2017 Dernière intervention - 24 nov. 2017 à 23:27
0
Utile
1
Bonjour,

Déjà.. il faudrait lancer les codes dans l'ordre....
Ensuite... pourquoi ne pas appliquer le code que l'on t'a donné....
Et enfin.. il aurait été bien que ta première feuille contienne des liens qui marchent... sinon les copies.. ben.. elles ne fonctionnent pas non plus !

Bref...
vu que le nom de tes feuilles contiennent des tirets, il faut en effet légèrement modifié mon code.

Donc voici ton code corrigé et fonctionnel
Sub Groupe59_QuandClic()

ActiveSheet.Copy after:=Sheets(Sheets.Count)
[c7].Value = [c7].Value + 1
[A843].Value = [C843].Value
'test = Application.Proper(Format(Range("e779"), "mmm-yyyy"))
ActiveSheet.Name = "Nov-2017"

Call modifiLink

End Sub

Sub modifiLink()
Dim sh As Worksheet
Dim L As Hyperlink
Dim exclapos  As Integer
Dim strFPrec  As String
'On défini la feuille active
Set sh = ActiveSheet
Debug.Print (sh.Name)
'On boucle sur chaque lien de la feuille
For Each L In sh.Hyperlinks
    'On trouve l'emplacement du !
    exclapos = InStr(1, L.SubAddress, "!", vbTextCompare)
    'Nom de la feuille précédente
    strFPrec = Mid(L.SubAddress, 1, exclapos - 1)
    'On remplace par le nom de la feuille actuelle
    
    L.SubAddress = Replace(L.SubAddress, strFPrec, "'" & sh.Name & "'")
    
Next
End Sub

hakimr 87 Messages postés lundi 1 mai 2017Date d'inscription 24 novembre 2017 Dernière intervention - 24 nov. 2017 à 23:43
merci beaucoup monsieur, enfin mon problème est bien résolu et ça marche très bien
vive le forum et encore merci pour votre aide.
Commenter la réponse de jordane45