Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Accéder à un onglet à partir d'un menu

Chrystel01

XLDnaute Occasionnel
Bonjour,

J'ai un calendrier annuel avec tous les mois qui fait office de menu et un onglet par mois.
Je souhaiterais que lorsqu'on clique/ double clique sur un mois du calendrier, on accède directement à l'onglet correspondant.
Ex on clique sur le mois de janvier dans le menu (cellule B3) => on accède à l'onglet janvier.

Merci d'avance pour votre aide !
 

Pièces jointes

  • model calendrier.xlsx
    102.9 KB · Affichages: 20
Solution
PourrIez_vous svp m'expliquer ?

Dans le passage de paramètres, j'ai appelé Target la cellule cliquée qui déclenche la macro.
VB:
Application.Intersect(Target, [3:3])
On regarde si la cellule cliquée en en ligne 3.

Comme vous avez des cellules fusionnées, Target revient sous forme de tableau de 3 valeurs et target(1,1) est la cellule contenant le nom du mois.

Code:
Cells(Target.Row - 1, Target.Column).Select
Je sélectionne simplement la cellule qui est une ligne au dessus du mois. Si une cellule est sélectionnée, on ne peut pas déclencher la macro par un second clic sur la même cellule donc je décale d'une ligne, ainsi on peut recliquer une seconde fois sur le même mois.

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Chrystel,
Un essai en PJ avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Mois$
    On Error GoTo Fin
    If Not Application.Intersect(Target, [3:3]) Is Nothing Then
          Mois = LCase(Target(1, 1))                ' Mois cliqué
          For Each sh In Worksheets                 ' Recherche de la feuille
            If Trim(LCase(sh.Name)) = Mois Then     ' Si nom feuille = mois cliqué
                Cells(Target.Row - 1, Target.Column).Select
                sh.Activate                         ' Aller sur la feuille
                Exit Sub                            ' Sortir de la macro
            End If
          Next
    End If
Fin:
End Sub
 

Pièces jointes

  • model calendrier.xlsm
    90.3 KB · Affichages: 8

Chrystel01

XLDnaute Occasionnel
Bonsoir Sylvanu,

Merci beaucoup ! Cela fonctionne parfaitement !
J'essaye de comprendre pour pouvoir le refaire ultérieurement et j'ai du mal avec les 3 lignes ci-dessous.

Application.Intersect(Target, [3:3]) => target, [3:3]) ?
Mois = LCase(Target(1, 1)) => targer(1,1) ?
Cells(Target.Row - 1, Target.Column).Select ?

PourrIez_vous svp m'expliquer ?
Merci beaucoup

Je vous souhaite une très belle soirée

Chrystel
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
PourrIez_vous svp m'expliquer ?

Dans le passage de paramètres, j'ai appelé Target la cellule cliquée qui déclenche la macro.
VB:
Application.Intersect(Target, [3:3])
On regarde si la cellule cliquée en en ligne 3.

Comme vous avez des cellules fusionnées, Target revient sous forme de tableau de 3 valeurs et target(1,1) est la cellule contenant le nom du mois.

Code:
Cells(Target.Row - 1, Target.Column).Select
Je sélectionne simplement la cellule qui est une ligne au dessus du mois. Si une cellule est sélectionnée, on ne peut pas déclencher la macro par un second clic sur la même cellule donc je décale d'une ligne, ainsi on peut recliquer une seconde fois sur le même mois.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…