XL 2013 [RESOLU] Afficher/masquer onglets selon un menu créé dans un onglet principal

Mulder

XLDnaute Junior
Bonjour à tous,
Ca fait un moment que je n'étais pas venu demander à l'aide...

Je cherche aujourd'hui à créer un "sommaire" qui me permette d'afficher/masquer les autres onglets selon que je les utilise ou non.
En quelques lignes, sachant qu'un exemple est attaché :
- Sur ma feuille "Menu", j'ai listé le nom de mes autres onglets qui sont des outils de calculs que je vais utiliser ou non ;
- Si je les utilise, je mets un "X" dans la colonne B ; si non, elle reste vide ;
- Je pensais utiliser un worksheet_change et sachant que j'applique le critère "X" ou vide sur une zone, utiliser un for each, mais d'une part mon code ne fonctionne pas et d'autre part, je suis pas sûr qu'une boucle, même courte, soit une bonne idée pour un worksheet_change...

Je vous remercie par avance pour vos avis.
 

Pièces jointes

  • Copie de Test menu onglet.xlsm
    16.1 KB · Affichages: 10

vgendron

XLDnaute Barbatruc
Bonjour

essaie plutot avec ce code
VB:
Private Sub Worksheet_Change(ByVal Target As Range)

    Application.EnableEvents = False
    If Not Intersect(Target, Range("B31:B34")) Is Nothing Then
            ActiveWorkbook.Sheets("" & Target.Offset(0, 1) & "").Visible = (UCase(Target) = "X")
    End If
    Application.EnableEvents = True
End Sub
 

Lolote83

XLDnaute Barbatruc
Bonjour MULDER,
Voici ton fichier en retour.
1) A l'ouverture du fichier, tous les onglets exepté MENU sont masqués.
2) Si x ou X dans la case des menus a afficher, affiche l'onglet correspondant

Oups! Pas rafraichi assez tôt. Bonjour VGENDRON.
Cordialement
@+ Lolote83
 

Pièces jointes

  • Copie de MULDER - Test menu onglet.xlsm
    19.5 KB · Affichages: 9

vgendron

XLDnaute Barbatruc
hello @Lolote83

Application.EnableEvents = False
c'est pour désactiver temporrairement les evènements _change de la feuille

dans le cas présent ca ne sert à rien.. juste une habitude que j'ai prise

ca sert lorsque le code qu'on a mis dans l'évènement _change fait une modif sur la feuille ..ce qui déclencherait automatiquement un evènement change=> risque de tourner en rond....

dans mon code, il faudrait ajouter la ligne que toi tu as mise:
If Target.Count > 1 Then Exit Sub

en modifiant par exemple par:
If Target.Count > 1 Then
msgbox "ne modifiez qu'une ligne à la fois"
Exit Sub
end if
 

Lolote83

XLDnaute Barbatruc
Re bonjour Vgendron.
Merci pour cet éclairage, car effectivement, je m'étais aperçu que dès qu'une valeur changeais dans l’évènement change, le code retournais de nouveau et on pouvais vite "tourner en rond".
Je vais donc maintenant essayé de m'en souvenir.
Bonne journée à toi
@+ Lolote83
 

Mulder

XLDnaute Junior
Bonjour vGendron, bonjour Lolote,
Merci pour vos retours rapides.
J'ai intégré vos proposositions dans mon outil hier, j'avais quelques problèmes.
Je reprends à tête reposée : globalement, ça fonctionne.
En revanche, si la macro ou une autre (mon classeur intégrant d'autres macros) plante, le worsheet change ne fonctionne plus et ce même en réinitialisant la macro.
Vous allez me dire "débrouille toi pour que tes macros fonctionnent"... 😁😁😁😁😁
Certes... Mais j'aimerai quand même comprendre pourquoi elle ne se relance pas...
 

vgendron

XLDnaute Barbatruc
hello

si ca plante entre les lignes
application.enableevents=false
et
application.enableevents=true

il faut que tu lances cette macro manuellement
VB:
sub relance()
application.enableevents=true
end sub

le mieux étant de trouver pourquoi tes macros plantent, et comment les modifier pour que ca ne plante plus...
 

Mulder

XLDnaute Junior
Hello,

Merci vgendron, intégrer ce complément me permet de relancer un fonctionnement normal sans entrer/sortir d'Excel.
J'ai déjà repéré des erreurs qui faisaient planter mon worsheet range, des erreurs bêtes (onglet nommés différemment de ce qui est noté dans la colonne qui devait contenir les noms, à cause de "." ou de "_" que je n'avais pas recopié...
Du reste, lui, si les autres macros ne fonctionnement pas, à moi de les faire fonctionner correctement.

Merci à vous deux.
 

Discussions similaires

Statistiques des forums

Discussions
312 199
Messages
2 086 161
Membres
103 148
dernier inscrit
lulu56