Lien hypertexte selon choix

Bonjour les amis,

Je souhaiterais savoir si quelqu'un aurait une solution pour qu'un lien hypertexte aille chercher une feuille différente selon un choix donné.

Par exemple j'ai un lien hypertexte en B7. Si je mets la valeur 1 dans une case B5, le lien appelle la Feuille 2. Si je mets la valeur 2 dans la même case B5, alors le lien appelle la Feuille 3 (exemple du fichier joint).

Merci d'avance si cela vous parle et bonne soirée

Bonsoir,

Pourquoi mettre 1 pour appeler Feuil2 et 2 pour appeler Feuil3 ? Plutôt que tout simplement 2 pour Feuil2 et 3 pour Feuil3 !

Et pourquoi un lien hypertexte qui ne s'activera pas tout seul au lieu d'afficher la feuille voulue à la validation de la valeur saisie dans la cellule ?

Et, tant qu'on y est, pourquoi taper (d'autant que Feuil2 et Feuil3 n'existant pas dans ton classeur, elles n'ont aucune chance de s'afficher ! ) alors qu'une liste déroulante des noms de feuilles permettrait de sélectionner une feuille existante à coup sûr !

Cordialement.

Bonjour les amis,

Je souhaiterais savoir si quelqu'un aurait une solution pour qu'un lien hypertexte aille chercher une feuille différente selon un choix donné.

Par exemple j'ai un lien hypertexte en B7. Si je mets la valeur 1 dans une case B5, le lien appelle la Feuille 2. Si je mets la valeur 2 dans la même case B5, alors le lien appelle la Feuille 3 (exemple du fichier joint).

Merci d'avance si cela vous parle et bonne soirée

Bonsoir,

MFerrand a eu la gentillesse de me répondre cela.

Pourquoi mettre 1 pour appeler Feuil2 et 2 pour appeler Feuil3 ? Plutôt que tout simplement 2 pour Feuil2 et 3 pour Feuil3 !

Malheureusement au lieu de cliquer sur répondre j'ai validé !!! Pas très futé le mec. Bref toutes mes excuses à Mferrand s'il me lit.

J'ai refait le tableau avec plus d'explications et en tenant compte des observations de Mferrand, car je n'étais pas clair. J'espère que l'un d'entre vous pourra me donner une solution

Bonne journée à vous tous.

Bonjour Marctango, MFerrand, le forum,

Un essai :

Private Sub Worksheet_Change(ByVal Target As Range)

    If Sheets("Feuil1").Range("B5") = "2" Then
       Sheets("Feuil1").Range("B13").Select
       ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "Feuil2!A1", TextToDisplay:="Feuil2!A1"
Else

    If Sheets("Feuil1").Range("B5") = "3" Then
       Sheets("Feuil1").Range("B13").Select
       ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        "Feuil3!A1", TextToDisplay:="Feuil3!A1"
    End If
    End If

End Sub

Code généré à partir de l'enregistreur de macro....peut certainement être amélioré

Cordialement,

Merci pour cette rapidité.

Cela fonctionne super bien.

Je vais travailler cette codification

Merci encore et bonne journée

Bonjour,

Illustration de mon propos ! Illustratration complétée par tes indications complémentaires !

1) Suppression des liens hypertextes (ceux existants ! les autres on ne les créera pas !)

2) Procédure de mise en place d'une validation en Feuil1!B5 :

Sub ListerFeuilles()
    Dim Lst, ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "Feuil1" Then
            Lst = Lst & "," & ws.Name
        End If
    Next ws
    Lst = Replace(Lst, ",", "", 1, 1)
    With Worksheets("Feuil1").Range("B5").Validation
        .Delete
        .Add xlValidateList, , , Lst
    End With
End Sub

3) Appel de cette procédure (figurant en Module1) à l'ouverture du classeur :

Private Sub Workbook_Open()
    If ActiveSheet.Name = "Feuil1" Then
        ListerFeuilles
    Else
        Worksheets("Feuil1").Activate
    End If
End Sub

[dans le module ThisWorkbook]

et à l'activation de la feuille :

Private Sub Worksheet_Activate()
    ListerFeuilles
End Sub

[dans le module Feuil1]

4) Formules (en Feuil1) :

en B10 :

=SI($B$5<>"";DECALER(INDIRECT(ADRESSE(EQUIV($A$10;INDIRECT("'"&$B$5&"'!A:A");0);1;;;$B$5));;COLONNE()-1);"")

étendue sur la ligne jusqu'en E10

en B13 :

=T(B5)

5) En sélection d'un nom de feuille en B5, la ligne 10 affiche la ligne Total de la feuille indiquée. B13 affiche également le nom de la feuille.

Si l'utilisateur clique en B13 (sélectionne la cellule) : déclenchement d'un procédure SelectionChange (en module Feuil1) :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim nF$
    If Target.Address = "$B$13" Then
        nF = Target
        If nF <> "" Then
            With Worksheets(nF)
                .Visible = xlSheetVisible
                .Activate
                .Range("A1").Select
            End With
        End If
    End If
End Sub

La feuille est rendue visible et activée.

6) Lorsque l'utilisateur clique sur B1 d'une feuille (sauf Feuil1), cellule portant la mention "retour" : déclenchement d'une procédure SheetSelectionChange (dans module ThisWorkbook) :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Select Case Sh.Name
        Case "Feuil1"
        Case Else
            If Target.Address = "$B$1" Then
                With Worksheets("Feuil1")
                    .Activate
                    .Range("B5").Select
                End With
                Sh.Visible = xlSheetVeryHidden
            End If
    End Select
End Sub

La feuille concernée est masquée et Feuil1 activée...

7) Il resterait, pour le cas où l'utilisateur n'utilise pas le "retour", à programmer une proc. classeur BeforeSave, pour masquer les feuilles qui ne l'auraient pas été avant enregistrement.

Et éventuellement si d'autre particularités sont introduites...

Cordialement.

Rechercher des sujets similaires à "lien hypertexte choix"