[Résolu]Macro onglet visible sur critères

Annette

XLDnaute Occasionnel
Bonsoir le forum,

Je recherche une solution par macro à ma problématique:
Par exemple, pour un classeur contenant 3 feuilles, je souhaite une macro qui m'affiche la feuille 1 et cache les deux autres (celle-ci je l'ai dans ma musette). La complication pour moi est la suivante:
Feuille 2 et 3 cachées (en fait toute les autres feuilles)
Lorsque 2 conditions sont réunies, je souhaite que la feuille 1 soit cachée et que la feuille 2 soit visible et ainsi de suite.
Est-ce possible et si oui quelqu'un pourrait-il me proposer une solution ?

Merci pour vos réponses

Cordialement
 

Pièces jointes

  • Test macro onglet.xlsm
    9.7 KB · Affichages: 41
Dernière édition:

Annette

XLDnaute Occasionnel
Re : Macro onglet visible sur critères

Staple1600,

Je teste l'autre code un peu plus tard.
Votre premier code se comporte bizarrement car lorsque je mets les cellules J14 et J16 "OK", les feuilles 2 et 3 disparaissent et seule la feuille 1 reste visible alors que je souhaite lorsque les deux cellules sont "OK", que la feuille 2 prenne la place de la feuille 1 (par conséquent que la feuille 1 et 3 soient masquées.
J'ai manqué quelque chose :confused: ?

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : Macro onglet visible sur critères

Re

Annette
Et comme ceci, c'est mieux ?
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Range("J14") = "OK" And Sh.Range("J16") = "OK" Then
Select Case Sh.Name
Case "Feuil1"
Sh.Next.Visible = -1: Sh.Next.Next.Visible = 0
Sh.Visible = 0
Case "Feuil2"
Sh.Next.Visible = -1: Sh.Previous.Visible = 0
Sh.Visible = 0
Case "Feuil3"
Sh.Previous.Visible = 0: Sh.Previous.Previous.Visible = 0
End Select
End If
End Sub

Sinon, adoptez le code de Si... en le mettant à la place de mon code mais dans la procédure que j'utilise dans ThisWorkBook.
 

Staple1600

XLDnaute Barbatruc
Re : Macro onglet visible sur critères

Re

Annette
Une variante de syntaxe pour la route (vers les bras de Morphée)
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Range("J14") = "OK" And Sh.Range("J16") = "OK" Then
Select Case Sh.Index
Case 1
Sh.Visible = Switch(Sh.Index = 1, 0, Sh.Index = 2, -1)
Case 2
Sh.Visible = Switch(Sh.Index = 2, 0, Sh.Index = 3, -1)
End Select
End If
End Sub

Si Si... a la paupière alerte plus tard dans la nuit, il reviendra peut-être proposer du bel ouvrage.

Bonne nuit à tous.
 

Annette

XLDnaute Occasionnel
Re : Macro onglet visible sur critères

Staple1600,

C'est parfait :) :D ;), les codes fonctionnent.
Je n'ai pas testé votre code du post 20.
Plus tard, vous serait-il possible de me commenter les codes pour une adaptation ultérieure ?

Si..., je garde votre code dans ma musette car je n'ai pas tout à fait réussi à le faire tourner correctement.

P.S: Staple1600, vous serait-il possible d'incorporer un RAZ automatique des feuilles 1 et 2 lorsque je veux enregistrer et/ou quitter excel ?

Merci beaucoup à vous deux et merci au forum.
Bonne nuit.

Cordialement
 

Staple1600

XLDnaute Barbatruc
Re : Macro onglet visible sur critères

Re

Annette
P.S: Staple1600, vous serait-il possible d'incorporer un RAZ automatique des feuilles 1 et 2 lorsque je veux enregistrer et/ou quitter excel ?
Avant que cela me soit possible, il est vous est possible d'utiliser le moteur de recherche du forum ;) et ou les ressources relatives à VBA disponibles sur la toile pour tenter de faire cette macro de RAZ ;)
NB: J'espère que votre but c'est d'apprendre le VBA petit à petit et pas de consommer du code VBA prêt à l'emploi par simple copier/coller.

Ce sera tout pour ce soir ;)
Je finis de me brosser les dents et zou dodo.

PS: Une lecture attentive de mes messages dans ce fil devrait vous mener à une macro dont le nom contient qu'une seule lettre et qui ressemble si je ne m'abuse à une macro de RAZ, non ...:rolleyes:
 
Dernière édition:

Annette

XLDnaute Occasionnel
Re : Macro onglet visible sur critères

Staple1600,

Re

NB: J'espère que votre but c'est d'apprendre le VBA petit à petit et pas de consommer du code VBA prêt à l'emploi par simple copier/coller.

D'où ma question précédente pour mon édification personnelle:
Plus tard, vous serait-il possible de me commenter les codes pour une adaptation ultérieure ?

Je vous précise que dès que cela m'est possible, il m'arrive de faire les choses toute seule comme une grande ...:rolleyes:
Pour ce qui est du RAZ, je pense que le .clearcontents devrait être de mise mais pour les deux feuilles ... je testerais.

Bonne nuit.

Cordialement
 

Si...

XLDnaute Barbatruc
Re : Macro onglet visible sur critères

salut

désolé de m’être arrêté en cours de route ... voilà encore des provisions pour ta musette :D.
Comme le propose judicieusement Staple*, dans ThisWorbook du fichier joint (provisions de bouche réclamées à corps et à cri),
Code:
Option Explicit
'à l'ouverture du classeur
Private Sub Workbook_Open()
  Feuil1.Visible = 1: Feuil2.Visible = 2: Feuil3.Visible = 2
End Sub
'au changement d'une cellule
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Dim Si As Boolean
   Si = Sh.[J14] = "OK" And Sh.[J16] = "OK"
   If Sh.Name = "Feuil1" Then Feuil2.Visible = Si
   If Sh.Name = "Feuil2" Then Feuil3.Visible = Si
   Sh.Visible = 2
End Sub
'à la fermeture du classeur
Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Feuil1.Range("J14,J16") = ""
  Feuil2.Range("J14,J16") = ""
End Sub

Remarque : pour cacher des onglets il faut s'assurer que l'un au moins est affiché !

* s'il va dans les bras de Morphée, je vais dans ceux de sa copine Morphine (joke trouvé dans ce site) ;)
 

Pièces jointes

  • VuPasVu.xlsm
    24 KB · Affichages: 26
  • VuPasVu.xlsm
    24 KB · Affichages: 24
  • VuPasVu.xlsm
    24 KB · Affichages: 24

Annette

XLDnaute Occasionnel
Re : Macro onglet visible sur critères

Bonjour Si..., bonjour le forum,

Merci pour votre retour et pour les commentaires de votre macro :).
Le code commenté me parait être d'une logique implacable sauf que le fichier ne fait pas ce qu'il devrait faire à savoir:

Quoique l'on rentre dans n'importe quelle cellule de la feuille1, la feuille1 disparait mais la feuille2 n'apparait pas :confused:.
J'ai tenté énormément de combinaisons mais n'arrive pas à le faire fonctionner correctement.
Un coup de pouce ?

Merci pour vos suggestions.

Cordialement
 

Si...

XLDnaute Barbatruc
Re : Macro onglet visible sur critères

Bonjour

A cette heure de la nuit (du jour ?), Morphine m’avait troublé les sens, donc je corrige un peu :
Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  Dim Si As Boolean
  Si = Sh.[J14] = "OK" And Sh.[J16] = "OK"
  If Sh.Name = "Feuil1" Then Feuil2.Visible = Si: Sh.Visible = Not Si '<--
  If Sh.Name = "Feuil2" Then Feuil3.Visible = Si: Sh.Visible = Not Si '<--
End Sub

Pour initialiser les données à l’ouverture (et non à la fermeture)
Code:
Private Sub Workbook_Open()
  Feuil1.Range("J14,J16") = "": Feuil2.Range("J14,J16") = ""
  Feuil1.Visible = 1: Feuil2.Visible = 0: Feuil3.Visible = 0
End Sub
Suis-je bien réveillé cette fois ?

Staple :D dit :"plus on est de fous plus on rit", je rajoute "plus il faut de gardes-fou"
 

Pièces jointes

  • VuPasVu.xlsm
    22.4 KB · Affichages: 22
  • VuPasVu.xlsm
    22.4 KB · Affichages: 26
  • VuPasVu.xlsm
    22.4 KB · Affichages: 23

Annette

XLDnaute Occasionnel
Re : Macro onglet visible sur critères

Bonjour Si...,

Merci pour votre retour, tout fonctionne :).
Je me doutais avec mes essais que NOT SI devait être pour quelque chose mais n'avais pas "percuté" que c'était avec Sh.Visible (je me bornais à essayer avec Feuil1, Feuil2, Feuil3.
Après coup cela parait tellement logique ...

Merci à vous deux et au forum,

Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 282
Messages
2 086 768
Membres
103 391
dernier inscrit
lrol