'La macro se déclenche lorsque la feuille "calendrier des dates" est activée
Private Sub Worksheet_Activate()
'Avec le classeur actif
With ActiveWorkbook
'Après une instruction "with", tous les mots commençant par un "." se réfèrent au mot suivant "With"
'Par exemple, ici, ".Sheets" signifie "ActiveWorkbook.Sheets"
'Effacement de la plage B8:B30
.Sheets("calendrier des dates").Range("B8:B30").ClearContents
'Boucle sur les feuilles de l'index 3 au nombre de feuilles (ici 24)
'l'index est le numéro d'ordre des feuilles
For n = 3 To .Sheets.Count
'On remplit chaque cellule de la plage avec le nom de la feuille correspondante
Cells(n, 1).Range("b6") = .Sheets(n).Name
Next
End With
'On exécute la macro "CreeHyperlien"
CreeHyperlien
End Sub
Sub CreeHyperlien()
Dim C As Range, I As Long
With Sheets("calendrier des dates")
'Gestion des erreurs. On saute les lignes en erreur
On Error Resume Next
'Effacement de tous les liens hypertexte de la feuille (code fourni par Staple1600)
.Hyperlinks.Delete
'Fin de la gestion des erreurs
On Error GoTo 0
'Boucle sur les cellules de la plage B8:B32
For Each C In .[B8:B32]
'si la cellule n'est pas vide
If C.Value <> "" Then
'Ajout d'un lien hypertexte. Le premier paramètre est l'adresse qui ne sert pas
'quand le lien pointe à l'intérieur du classeur, le deuxième, la sous-adresse
'Indique le nom de la feuille encadré d'apostrophes et la cellule (adresse Excel classique)
'Le dernier est le texte à afficher, ici le texte préexistant dans la cellule, c'est à dire
'le mois
.Hyperlinks.Add C, "", "'" & C.Value & "'!A1", C.Value
End If
Next C
End With
End Sub