Lien hypertexte sous excel en partage

Contenu du snippet

Création de liens hypertextes sous excel lorsque le classeur est en partage.
En effet, lorsque le classeur excel est en partage, la creation de liens hypertextes n'est plus possible. Voici une petite série de code qui permet de créer des liens hypertextes sans devoir basculer en mode protégé.
On utilise pour ce faire, la fonction "=LIEN_HYPRTEXTE()". L'intérêt du code présenté est qu'il ne nécessite aucune autre manoeuvre que celles utilisées normalement. En effet, un simple clic droit sur la cellule sélectionnée fait apparaitre dans le menu déroulant un nouveau tag "Lien hypertexte" non grisé.
Il faudra toutefois créer une feuille supplémentaire que l'on peut cachée et qui reprendra les références pointés par la fonction "LIEN_HYPERTEXTE()".

Source / Exemple :


'Création d'un module
Module 1 :
'Appel de l'explorateur de fichier par API directement sur "comdlg32.dll"
Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

'Dans "ThisWorkbook"

Private Sub Workbook_Open()
 ' A l'ouverture du fichier, création dans le menu excel clic droit d'un 
 'nouveau  libellé "Lien Hypertexte" avec son icone associée.
    With Application.CommandBars("Cell").Controls.Add(msoControlButton)
        .Caption = "Lien hypertexte"
        .BeginGroup = True
        .FaceId = 1576
        .OnAction = "Feuil7.CommandButton1_Click"
    End With

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
 'A la fermeture du fichier, on élimine les libellés crées auparavants.

    Application.CommandBars("Cell").Reset

End Sub

Dans la feuille 
Sub C_Lien()

    Dim q_Tot As String
    Dim q_chem As String
    Dim q_Fich As String
    
    q_Tot = Application.GetOpenFileName()
    If q_Tot = "Faux" Then Exit Sub
    q_chem = CurDir(q_Tot)
    q_Fich = Dir(q_Tot)

    Sheets("Suivi général liens cachés").Cells(ActiveCell.Row, ActiveCell.Column) = q_Tot
    Sheets("Suivi général liens cachés").Cells(ActiveCell.Row, ActiveCell.Column + 150) = q_Fich
    
    ActiveCell.Formula = "=HYPERLINK('Suivi général lien'!RC,'Suivi général lien'!RC[150])"

End Sub

Conclusion :


Il est bien entendu possible d'améliorer les macros, le but ici étant simplement de donner un petit apperçu d'une solution acceptable pour la création de ces Liens Hypertextes lorsque le classeur est en partage, et sourtout de ne pas incommoder le profanne qui ne verra au final aucun changement par rapport a son utilisation habituelle de création de ces liens en classeur non partagés.

Bon amusement.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.