Création de lien Hypertexte dynamique par Macro

Bonjour,

Après de très nombreuse consultations de ce forum qui m'ont permis à mainte reprises de résoudre des problèmes pour l'ignorante VBA que je suis, je me lance enfin et pose mon premier sujet.

J'espère par avance être claire dans mon explication si ce n'ai pas le cas n'hésitez pas à me le dire.

J'ai crée un tableau de suivi administratif.

Une première feuille tableau de bord qui récap les dossiers et une feuille par dossier.

Pour le moment, j'ai crée une macro qui fait que lorsqu'on saisi Ref Dossier, Nom Prénom (bref les premières colonnes) dans le tableau de bord, il est possible de lancer la macro, un input box s'ouvre demande le numéro de dossier et crée automatiquement la feuille de suivi dont le nom est la ref dossier avec les infos déjà entré et les infos à compléter.

Sub dupliquer()Dim RefDossier As StringRefDossier = InputBox("Numéro de référence du dossier?")If RefDossier = "" ThenExit SubEnd IfSheets("Suivi Vierge").Copy after:=Sheets(Sheets.Count)ActiveSheet.Name = RefDossierActiveSheet.Range("B5") = RefDossier

Ce que je souhaiterais, c'est que simultanément, la première colonne du tableau de bord avec la ref dossier soit un lien hypertexte qui mène vers la feuille concerné.

Mon soucis c'est que la cellule ou je doit mettre le lien hypertexte dépend de ce qui est entré dans la input box et la feuille de destination en dépend aussi.

Milles mercis par avance pour votre aide.

Ci-joint mon fichier anonymisé.

J'ai crée une

Bonjour,

Plutôt que d'utiliser le lien hypertexte (si vous perdez la feuille ou changez son nom le lien sera perdu et vous renverra un erreur), je vous suggère de passer par code comme ceci :
- Click droite sur l'onglet Tableau de bord
- Choisissez l'option "Visualiser le code"
- Coller le code ci-dessous dans la fenêtre

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, ListObjects("TableaudebordBC").DataBodyRange) Is Nothing Then
    Cancel = False
    On Error Resume Next
    Sheets(Range("A" & Target.Row).Value).Select
End If
Cancel = True
End Sub

Une fois effectué, le double click dans la cellule de la colonne A, vous sélectionnera la feuille choisie (si elle existe bien entendu)

Cordialement

Bonjour à tous,

Pour répondre uniquement à la demande :

Sub dupliquer()
Dim REF As Range
Dim RefDossier As String
RefDossier = InputBox("Numéro de référence du dossier?")
If RefDossier = "" Then
    Exit Sub
    Else
    Set REF = Worksheets("Tableau de Bord BC").Columns(1).Find(RefDossier)
End If
If Not REF Is Nothing Then
    With Worksheets("Tableau de Bord BC")
        .Cells(REF.Row, 1).Hyperlinks.Add .Cells(REF.Row, 1), "", "'" & .Cells(REF.Row, 1) & "'!B5"
    End With
    Worksheets("Suivi Vierge").Copy after:=Worksheets(Worksheets.Count)
    ActiveSheet.Name = RefDossier
    ActiveSheet.Range("B5") = RefDossier
End If
End Sub

Cependant je suis totalement d'accord avec la méthode de Dan (que je salut au passage) qui est bien plus légère. De plus, si on souhaite aller plus loin, je doute que votre fichier tienne longtemps ... Pour rappel le nombre de feuille est limité a 255 je crois. Ici on dirait une structure BDD avec un formulaire. Ne vaudrait-il mieux pas créer un lien entre la BDD et le formulaire par VBA qui vous permet :
- Dans un sens charger Tableau de Bord BC à partir du formulaire unique (donc un import formulaire > BDD)
- Dans l'autre sens charger le formulaire à partir du Tableau de Bord BC (donc export BDD > Formulaire pour modification avant passage dans l'autre sens).

Cdlt,

WHAOUUUUUUU Vous êtes EXTRAORDINAIREMENT efficaces, rapides, aimables Bref mille mercis.

Cela fonctionne du feu de dieu.

Rechercher des sujets similaires à "creation lien hypertexte dynamique macro"