Montrer une feuille selon la valeur d'une cellule

mchart911

XLDnaute Nouveau
Bonjour,

Mon problème semble simple au départ mais toutes les solutions proposées sur les différents forums n'arrivent pas à faire exactement ce que je désire faire et n'étant pas un expert VBA ni Excel, je me tourne vers vous pour espérer trouver "LA" solution que je cherche depuis si longtemps. :D

Je vous mets en contexte:

Dans la Feuille1, j'ai un liste déroulante qui, selon la sélection choisie, donne une valeur entre 1 et 19 à la cellule D50 de cette même feuille.

Je désire simplement faire afficher une feuille (masquée par défaut) selon la valeur retourné par la cellule D50.

Exemple, si la personne sélectionne Janvier dans la liste déroulante, je veux que la Feuille "Janvier" s'affiche automatiquement.

Avez-vous des suggestions pour faire ça simplement ?

Vous pouvez utiliser le fichier attaché pour sauver un peu de temps.

Merci à l'avance pour le temps que vous m'accorderez. :)
 

Pièces jointes

  • MChart911.xlsx
    16.4 KB · Affichages: 65
Dernière édition:

Grand Chaman Excel

XLDnaute Impliqué
Re : Montrer une feuille selon la valeur d'une cellule

Bonjour mchart911 et bienvenue sur le forum,

Une proposition alternative à celle de fanfan38.

Dans le code du module 1 :
VB:
Sub Zonecombinée1_QuandChangement()
    Dim NomsFeuilles As Variant
    Dim Choix As Integer
    
    'Variable qui contient le noms des feuilles cachées dans l'ordre
    'Note : attention à l'orthographe doit être la même que le nom de l'onglet
    'Index du premier élément = 0
    NomsFeuilles = Array("Janvier", "Fevrier", "Mars")  'À compléter avec tous tes onglets
    Choix = Sheets("Feuille 1").Range("D50").Value

    'Affiche la feuille et sélectionner, -2 requis à cause de la différence
    'entre le combolist (Janvier = 2) et le vecteur (janvier = 0)
    Sheets(NomsFeuilles(Choix - 2)).Visible = True
    Sheets(NomsFeuilles(Choix - 2)).Select

End Sub

Dans le code de la feuille 1:
VB:
Private Sub Worksheet_Activate()
    Dim ws As Worksheet
    
    For Each ws In ThisWorkbook.Sheets
        If ws.Name <> "Feuille 1" Then ws.Visible = False
    Next
End Sub

Cette seconde macro est optionnel et permet de cacher les feuilles.

Tu devras sûrement adapter selon ton fichier final...
A+
 

Pièces jointes

  • MChart911.xlsm
    25.1 KB · Affichages: 68
  • MChart911.xlsm
    25.1 KB · Affichages: 71
  • MChart911.xlsm
    25.1 KB · Affichages: 66

mchart911

XLDnaute Nouveau
Re : Montrer une feuille selon la valeur d'une cellule

Ah non, une solution offerte par un Nordiques... JAMAIS je ne prendrais ta solution mon cher Grand Chaman Excel !!!!

Mais non c'est une farce bien sûr (d'ailleurs, j'ai tellement hâte d'apprendre leur retour pour faire revivre cette belle rivalité !!! :))

Non sans farce, merci à toi et François. J'ai tenté d'appliquer vos 2 solutions à mon fichier et je ne comprend pas pourquoi mais il ne se passe rien quand j'applique l'une ou l'autre de vos solutions.

J'aime bien celle de Grand Chaman puisque les feuilles se remettraient en mode "masqué" après les avoir affichée mais je n'arrive pas à comprendre pourquoi ça ne fonctionne pas de mon côté.

J'ai pourtant ajusté vos propositions selon les noms de feuilles de mon fichier et vérifier à de multiple reprise pour m'assurer que ce n'était pas une faute de frappe ou quelque chose du genre mais non, je ne comprend pas.

De plus Grand Chaman, si je voulais afficher 3 feuilles en permanance au lieu d'une seule, comment je pourrais m'y prendre. Ta macro cache toutes les feuilles ne se nomant pas "Feuille 1" alors je devrais l'ajuster.

Un gros merci pour vos suggestions !

Martin
 

Grand Chaman Excel

XLDnaute Impliqué
Re : Montrer une feuille selon la valeur d'une cellule

Bonjour mchart911,

Bien content que tu acceptes la solution d'un Nordiques :)

Alors, voici une 2e version de ton fichier qui permet d'afficher 3 feuilles en permanence. Voir le code modifié dans la feuille1, que tu devras recopier dans TOUTES les feuilles que tu veux garder actives. Le code pour masquer les feuilles est déplacé dans le module 1, ainsi la maintenance de ton code est plus facile (1 seul endroit où changer le noms des feuilles à garder actives).

Non sans farce, merci à toi et François. J'ai tenté d'appliquer vos 2 solutions à mon fichier et je ne comprend pas pourquoi mais il ne se passe rien quand j'applique l'une ou l'autre de vos solutions.

As-tu vérifié que ton contrôle s'appelle bien "Zone combinée 1" ou bien as tu renommé ta macro en conséquence?

Sinon, peux-tu nous joindre ton fichier sans données confidentielles?

A+
 

Pièces jointes

  • MChart911a.xlsm
    28.3 KB · Affichages: 68

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 765
Messages
2 091 892
Membres
105 084
dernier inscrit
lca.pertus