Création de lien hypertexte en boucle sur liste d'onglet
Bonjour,
J'ai adapté une macro qui me permet de récupéré les noms des onglets au fur et à mesure de leur création dans mon classeur.
J'aimerai ajouter la mise en lien depuis la liste que j'obtiens vers la feuille avec un lien hypertexte.
Dans le code ci-dessous, j'ai tenté d'adapter ce que l'enregistreur de macro m'a donné, en remplaçant le nom de la feuille par ws.name, mais j'ai un bug de rédaction. Il y a un problème avec l'apostrophe.
Private Sub Worksheet_Activate()
Dim ws As Worksheet, i As Integer
Application.Calculation = xlCalculationManual
i = 6
Sheets("RECAP").Columns("A:B").ClearContents
Sheets("RECAP").Range("A3").FormulaR1C1 = "N° dde"
Sheets("RECAP").Range("B3").FormulaR1C1 = "Structure"
For Each ws In Application.Worksheets
If ws.Name <> "RECAP" And ws.Name <> "Fiche type" Then
Sheets("RECAP").Range("A" & i).FormulaR1C1 = "Ch " & i - 5
Sheets("RECAP").Range("B" & i) = ws.Name
ActiveSheet.Hyperlinks.Add Anchor:=Range("B" & i).Select, Address:="", SubAddress:="""'""&ws.Name&""'!CHOIX""", TextToDisplay:="lien"
i = i + 1
End If
Next ws
Sheets("RECAP").Columns("B:B").EntireColumn.AutoFit
Application.Calculation = xlCalculationAutomaticCalculate
'Calculate
End Sub
'
' Range("B11").Select
' ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
' "'col st joseph Le May s ev'!CHOIX", TextToDisplay:= _
' "col st joseph Le May s ev"
Merci de votre aide.
Cordialement,
Leakim
Re,
Je le sais bien pourtant... un fichier faut mieux que mille mots.
Alors je joints un fichier.
Cordialement,
Leakim
Salut leakim,
Première remarque : pourquoi mettre un select ?
ActiveSheet.Hyperlinks.Add Anchor:=Range("B" & i).Select, Address:="", SubAddress:="""'""&ws.Name&""'!CHOIX""", TextToDisplay:="lien"
Deuxième remarque : à quoi sert le champ CHOIX ? Je ne le vois pas dans ton fichier.
Troisième remarque : pourquoi tant de """""""" ???
Sinon en partant du principe que le champ CHOIX existe dans toutes les feuilles, voici le code corrigé :
ActiveSheet.Hyperlinks.Add Anchor:=Range("B" & i), Address:="", SubAddress:="'" & ws.Name & "'!CHOIX", TextToDisplay:="lien"
Je mettrais même :
ActiveSheet.Hyperlinks.Add Anchor:=Range("B" & i), Address:="", SubAddress:="'" & ws.Name & "'!CHOIX", TextToDisplay:= ws.Name
Avec ça en début de code et ce sera bien
Application.ScreenUpdating = False
Bonjour,
Merci pour cette correction c'est nickel.
Leakim
a toute fin utile
Private Sub Worksheet_Activate()
Dim ws As Worksheet, i As Integer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
i = 6
Sheets("RECAP").Columns("A:B").ClearContents
Sheets("RECAP").Range("A3").FormulaR1C1 = "N° dde"
Sheets("RECAP").Range("A4").FormulaR1C1 = "=COUNTA(R[2]C:R[96]C)"
Sheets("RECAP").Range("B3").FormulaR1C1 = "Structure"
For Each ws In Application.Worksheets
If ws.Name <> "RECAP" And ws.Name <> "Fiche type" Then
Sheets("RECAP").Range("A" & i).FormulaR1C1 = "Ch " & i - 5
'Sheets("RECAP").Range("B" & i) = ws.Name
ActiveSheet.Hyperlinks.Add Anchor:=Range("B" & i), Address:="", SubAddress:= _
"'" & ws.Name & "'!A1", TextToDisplay:=ws.Name
i = i + 1
End If
Next ws
Sheets("RECAP").Columns("B:C").EntireColumn.AutoFit
Application.Calculation = xlCalculationAutomaticCalculate
Calculate
Application.ScreenUpdating = True
End Sub