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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
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

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
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
345
Réponses
3
Affichages
358
Réponses
4
Affichages
439
Réponses
5
Affichages
584
Retour