3 votes

Faire en sorte que la liste déroulante affiche des hyperliens

Je dispose d'une collection de tous les numéros de pièces différents pour différentes versions d'une même pièce, et chacun d'entre eux est relié par un lien hypertexte à son dessin spécifique sous forme de fichier pdf. J'aimerais les placer dans une liste de validation des données afin que quelqu'un puisse sélectionner la version qu'il souhaite, mais les hyperliens ne sont pas intégrés aux cellules lorsqu'ils sont sélectionnés (ils ne font que du texte brut). Comment puis-je faire en sorte que les liens hypertextes soient repris pour chaque élément différent de la liste ?

J'ai créé un petit tableau avec chaque numéro de pièce et le lien correspondant vers l'emplacement du serveur de fichiers en texte clair. Je peux ensuite avoir une liste déroulante qui sélectionne n'importe quelle pièce, et une deuxième cellule qui utilise cette sélection pour générer le lien hypertexte correct à partir du tableau. Le problème est que cette solution nécessite 2 cellules différentes, alors que je n'ai de la place que pour une seule. Existe-t-il un moyen de faire en sorte que ma liste déroulante modifie également les hyperliens dans la cellule ?

0voto

Eric F Points 3273

J'ai essayé quelque chose de similaire à ce que vous recherchez. Il n'existe malheureusement pas de formule Excel permettant de renvoyer l'URL intégrée d'une cellule. Le seul moyen de le faire est d'utiliser VBA.

  1. Vous devrez créer un événement pour capturer chaque fois qu'une cellule change et qu'elle se trouve dans une certaine plage. Cette plage doit couvrir les cellules de validation des données.

Voici un exemple pour vous aider à capturer les changements de cellule :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A1:C10")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
       Is Nothing Then

    ' Display a message when one of the designated cells has been 
    ' changed.
    ' Place your code here.
    MsgBox "Cell " & Target.Address & " has changed."

End If
End Sub

Adaptez la fourchette indiquée ici à votre propre fourchette.

Veillez à placer ce code à l'intérieur de "ThisWorkbook" :

enter image description here

  1. À l'intérieur de cet événement, il est possible de savoir de quelle cellule il s'agit et à quelle cellule elle est connectée pour l'hyperlien.
  2. Utilisez VBA pour savoir quel lien hypertexte se trouve dans cette cellule en utilisant une fonction similaire à celle-ci :

Échantillon :

Option Explicit
Function HyperLinkText(rg As Range)
    Dim sFormula As String, S As String
    Dim L As Long
    Dim H As Hyperlink, HS As Hyperlinks

sFormula = rg.Formula
L = InStr(1, sFormula, "HYPERLINK(""", vbBinaryCompare)

If L > 0 Then
    S = Mid(sFormula, L + 11)
    S = Left(S, InStr(S, """") - 1)
Else
    Set HS = rg.Worksheet.Hyperlinks
    For Each H In HS
        If H.Range = rg Then
            S = H.Address
        End If
    Next H
End If

HyperLinkText = S

End Function

Je ne sais pas si vous êtes familier avec VBA. Si vous avez besoin d'une aide supplémentaire pour les premières parties, faites-le moi savoir.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X