Activation des onglets cachés

Résolu/Fermé
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013 - 8 avril 2013 à 19:29
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 - 9 avril 2013 à 19:33
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
A voir également:

26 réponses

Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
8 avril 2013 à 22:48
Salut,

Tu as masqué tes feuilles, le lien hypertexte ne peut les ouvrir, il faut passer par du VBA
1
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013
8 avril 2013 à 23:00
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
8 avril 2013 à 23:19
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
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013
8 avril 2013 à 23:24
Voici Mike, un sample de mon fichier:

https://www.cjoint.com/?CDixxjKrsAd
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
8 avril 2013 à 23:36
Re,

allez je vais te faire un code vite fait, sais tu faire des listes déroulantes (liste de validation)
0
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013
8 avril 2013 à 23:38
Fantastique Mike, merci. Oui les listes de validation je connais!
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
8 avril 2013 à 23:53
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
8 avril 2013 à 23:58
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
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013
8 avril 2013 à 23:59
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
9 avril 2013 à 00:00
Je ne sais pas si tu as vu j'ai rajouté une ligne en fin de code pour activer la feuille en question
0
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013
9 avril 2013 à 08:56
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
9 avril 2013 à 12:47
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
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013
9 avril 2013 à 12:58
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
9 avril 2013 à 13:22
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
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013
9 avril 2013 à 13:34
Il manque ton lien Mike
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
9 avril 2013 à 13:37
0
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013
9 avril 2013 à 13:54
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
9 avril 2013 à 14:22
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
Gilles888 Messages postés 13 Date d'inscription lundi 8 avril 2013 Statut Membre Dernière intervention 9 avril 2013
9 avril 2013 à 15:17
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
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
9 avril 2013 à 16:26
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