Activation des onglets cachés

Résolu
Gilles888 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour chère communauté,

J'ai construit un petit modèle excel qui reprend un ensemble d'outils, un par onglet. Tous les outils sont regroupés dans un onglet d'accueil, qui pointe alors vers le bon outil dans le même classeur via un hyperlien. Pour gagner en visibilité j'ai masqué ces onglets, mais alors ils ne s'ouvrent plus lorsque l'hyperlien est activé?

Avez-vous une solution pour moi, càd un moyen pour que un onglet caché s'affiche lorsque je clique sur un hyperlien qui pointe vers l'onglet?

Merci! Gilles

26 réponses

  • 1
  • 2
  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Tu as masqué tes feuilles, le lien hypertexte ne peut les ouvrir, il faut passer par du VBA
    1
  2. Gilles888 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci Mike,

    Oui je m'en doutais et je le redoutais car je suis au niveau 0,5 en VBA ...

    Qqu'un peut m'aider avec les étapes à suivre en VBA?

    Gilles
    0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    il faudrait voir un exemple de ton fichier pour écrire un bout de code adapté.
    pour joindre ton fichier, clic sur ce lien/parcourir pour sélectionner le fichier/créer le lien et coller dans un post le lien généré

    https://www.cjoint.com/

    pour ce soir je ne vais pas tarder décrocher
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    allez je vais te faire un code vite fait, sais tu faire des listes déroulantes (liste de validation)
    0
  6. Gilles888 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
     
    Fantastique Mike, merci. Oui les listes de validation je connais!
    0
  7. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Alors en C3 tu crée une liste de validation avec les noms de tes feuilles Onglet1;Onglet2 etc ...

    fait un clic droit sur l'onglet de ta feuille Accueil et colle ce code. reviens sur ta feuille Accueil t fait joujou avec ta liste de validation en C3

    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Ongl As Byte
    If Not Intersect(Target, Range("C3")) Is Nothing Then
    For Ongl = 1 To ThisWorkbook.Sheets.Count
    If Sheets(Ongl).Name <> "Accueil" Then
    Sheets(Ongl).Visible = 0
    End If
    Next
    End If
    If [C3] > 0 Then Worksheets([C3].Value).Visible = True
    End Sub

    J'attends un dizaine de minutes avant de fermer mon ordi
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    ah dans la précipitation j'ai oublié de mettre une ligne pour activer la feuille

    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Ongl As Byte
    If Not Intersect(Target, Range("C3")) Is Nothing Then
    For Ongl = 1 To ThisWorkbook.Sheets.Count
    If Sheets(Ongl).Name <> "Accueil" Then
    Sheets(Ongl).Visible = 0
    End If
    Next
    End If
    If [C3] > 0 Then Worksheets([C3].Value).Visible = True
    Worksheets([C3].Value).Activate
    End Sub
    0
  9. Gilles888 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci bcp Mike cela fonctionne; je dois faire qques adaptations pour le vrai fichier mais je crois pouvoir m'en sortir, et au pire, Une période d'échec est un moment rêvé pour semer les graines du savoir. Un tt grand merci encore!
    0
  10. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Je ne sais pas si tu as vu j'ai rajouté une ligne en fin de code pour activer la feuille en question
    0
  11. Gilles888 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
     
    Re-bonjour Mike,

    En fait dans mon 'vrai' fichier, j'ai 85 lignes remplies d'hyperliens en colonne B; cela fait bcp pour passer via des listes de valeur. Qui plus est, les cellules portent des noms très différents les unes des autres (pas outil1, outil2, etc).

    Est-ce que le code peut être adapté en fonction? J'imagine que je dois changer le range - target ou qque chose du genre et que le reste peut fonctionner?

    Belle journée, Gilles
    0
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    Je rentre à l'instant, peu importe la liste, il suffit de créer une liste de validation avec tous les noms des onglets. Pour cela il suffit de saisir le nom exact de chaque onglet dans une colonne, la plage contenant cette liste peut être nommée exemple list
    la formule pour afficher ta liste de validation est =list

    ensuite le code reste inchangé si ta cellule cible reste la C3
    0
  13. Gilles888 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci Mike.

    Encore 3 (petites j'espère) choses:

    1) Pour la liste de validation, je créé 'list' (ok) et puis je l'intègre dans ton code mais comment?
    2) Ma cellule cible peut être n'importe où sur la colonne B, donc j'imagine qu'il suffit de remplacer C3 par B dans ton code.
    3) En utilisant ton code tel qu'il est actuellement, si je double click sur une cellule (ex N27) dans l'onglet accueil, je tombe direct sur outil1, étrange non?

    Bàt, Gilles

    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Ongl As Byte
    If Not Intersect(Target, Range("C3")) Is Nothing Then
    For Ongl = 1 To ThisWorkbook.Sheets.Count
    If Sheets(Ongl).Name <> "Accueil" Then
    Sheets(Ongl).Visible = 0
    End If
    Next
    End If
    If [C3] > 0 Then Worksheets([C3].Value).Visible = True
    Worksheets([C3].Value).Activate
    End Sub
    0
  14. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Un exemple avec le lien ci dessous lien

    Feuille Accueil colonne A en jaune j'ai créé une liste avec les noms de tes feuilles que j'ai nommé simplement list
    cette plage jaune peut être sur une feuille différente éventuellement masquée tout comme la colonne A actuelle d'ailleurs
    en H5 j'ai créé la liste de validation avec la formule =list

    et j'ai copié le code que je t'ai donné hier soir en modifiant simplement l'adresse de la cellule cible C3 par la nouvelle H5

    Option Explicit

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Ongl As Byte
    If Not Intersect(Target, Range("H5")) Is Nothing Then
    For Ongl = 1 To ThisWorkbook.Sheets.Count
    If Sheets(Ongl).Name <> "Accueil" Then
    Sheets(Ongl).Visible = 0
    End If
    Next
    End If
    If [H5] > 0 Then Worksheets([H5].Value).Visible = True
    Worksheets([H5].Value).Activate
    End Sub

    Si tu utilises le double clic pour sélectionner ton onglet il faut remplacer
    Private Sub Worksheet_Change(ByVal Target As Range)
    par
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    sinon le double clic aura pour effet de sélectionner l'onglet affiché en H5 ou il faut ajouter un bout de code pour gérer le double clic et rester sur la feuille Accueil par exemple
    0
  15. Gilles888 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
     
    Il manque ton lien Mike
    0
  16. Gilles888 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
     
    J'ai adapté ton code pour mon fichier sample ci-dessous (mot de passe: CAP). Cela ne marche pas car plutôt qu'une seule target cell (H5) j'ai une colonne entière (B). Possible?

    http://cjoint.com/13av/CDjn0IE0z75.htm
    0
  17. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    teste ce fichier, j'ai supprimé les liens hypertextes
    par contre pour que les feuilles s'ouvrent il faut que le nom de l'onglet et le contenu de la cellule soit rigoureusement identique

    https://www.cjoint.com/?CDjotWYfSwE
    0
  18. Gilles888 Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
     
    Tt gd merci, Voilà tout marche nickel à part ce petit détail: j'ai une autre page que Accueil ou Outil P9 où la même fonctionnalité doit fonctionner.

    J'ai donc repris ton code et j'ai changé le range (je fais référence à celui déjà défini) et le nom de la feuille ... Mais ca bug!

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim Ongl As Byte
    If Not Intersect(Selection, Range ("'Outils P9'!B6:B86") Is Nothing Then
    For Ongl = 1 To ThisWorkbook.Sheets.Count
    If Sheets(Ongl).Name <> "Définition Offre" Then
    Sheets(Ongl).Visible = 0
    End If
    Next
    If Target > 0 Then Worksheets(Target.Value).Visible = True
    Worksheets(Target.Value).Activate
    End If
    End Sub
    0
  19. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    tu as une erreur sur cette ligne
    If Not Intersect(Selection, Range ("'Outils P9'!B6:B86") Is Nothing Then
    remplace par
    If Not Intersect(Selection, Range ("Outils P9") Is Nothing Then
    0
  • 1
  • 2