Cacher des feuilles problème?

  • Initiateur de la discussion Initiateur de la discussion Sylvain
  • Date de début Date de début

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 !

S

Sylvain

Guest
Bonjour,

J'ai un petit souci avec le thisworkbook, j'aimerais cacher des feuilles si la personne clique sur désactiver les macros sinon elles apparaissent. Aujourd'hui, avec le code ci dessous, que l'on clique sur activer ou désactivier les macros elles disparaissent tout le temps, je ne comprends pas : le message d'erreur est le suivant : "erreur d'éxécution 1004 la méthode select de la classe worksheet a échoué".

Merci pour l'astuce si il y en a une.

Sylvain


Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Application.DisplayFullScreen = False


'si les macros ont été autorisées à l'ouverture, la feuille menu
'est visible et message est cachée
'il faut re-préparer le classeur pour l'éventuelle mauvaise ouverture suivante
'si elles n'ont pas été autorisées de toutes façons cette macro ne
'se lance pas ...

'Application.ScreenUpdating = False

ThisWorkbook.Windows(1).Visible = False
Sheets("message").Visible = True

ThisWorkbook.Saved = True

'Sheets(Array("menu", "MargeBrute", "chargestructure", "prixequilibre", "TVM", "calculprixaliment", "critèrestech", "charges", "entree", "uth", "emprunts", "Stock", "Courbe", "Trésorerie", "produits")).Select
'ActiveWindow.SelectedSheets.Visible = False
'ActiveWorkbook.Save
End Sub




Private Sub Workbook_Open()
ThisWorkbook.Windows(1).Visible = True
Sheets("message").Visible = False
'Sheets(Array("menu", "MargeBrute", "chargestructure", "prixequilibre", "TVM", "calculprixaliment", "critèrestech", "charges", "entree", "uth", "emprunts", "Stock", "Courbe", "Trésorerie", "produits")).Visible = True



Avertissement.Show
Sheets("menu").Select

'Application.DisplayFullScreen = True



End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
ThisWorkbook.Windows(1).Visible = False
End Sub
 
Bonsoir,


Je en comprends pas ça ne marche toujours pas ??

Voici le code modifié :

Merci

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Application.DisplayFullScreen = False


'si les macros ont été autorisées à l'ouverture, la feuille menu
'est visible et message est cachée
'il faut re-préparer le classeur pour l'éventuelle mauvaise ouverture suivante
'si elles n'ont pas été autorisées de toutes façons cette macro ne
'se lance pas ...

'Application.ScreenUpdating = False

ThisWorkbook.Windows(1).Visible = False
Sheets("message").Visible = True

ThisWorkbook.Saved = True

'Sheets(Array("menu", "MargeBrute", "chargestructure", "prixequilibre", "TVM", "calculprixaliment", "critèrestech", "charges", "entree", "uth", "emprunts", "Stock", "Courbe", "Trésorerie", "produits")).Select
'ActiveWindow.SelectedSheets.Visible = False
'ActiveWorkbook.Save
End Sub




Private Sub Workbook_Open()
ThisWorkbook.Windows(1).Visible = True
Sheets("message").Visible = False
'Sheets(Array("menu", "MargeBrute", "chargestructure", "prixequilibre", "TVM", "calculprixaliment", "critèrestech", "charges", "entree", "uth", "emprunts", "Stock", "Courbe", "Trésorerie", "produits")).Visible = True
ActiveWindow.SelectedSheets.Visible = True


Avertissement.Show
Sheets("menu").Select

'Application.DisplayFullScreen = True



End Sub
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
ThisWorkbook.Windows(1).Visible = False
End Sub
 
Bonsoir Sylvain,
Re- Jean-Marie,


Si j'ai bien compris le problème :

- les macros ne sont pas activées : une seule feuille nommée "message" est visible.
- les macros sont activées : toutes les feuilles sont visibles sauf la feuille "message"


Soit 16 feuilles dans le classeur, la première (feuille 1) est nommée "message", la seconde (feuille 2) est nommée "menu" :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'si les macros ont été autorisées à l'ouverture, la feuille menu
'est visible et message est cachée
'il faut re-préparer le classeur pour l'éventuelle mauvaise ouverture suivante
'si elles n'ont pas été autorisées de toutes façons cette macro ne
'se lance pas ...
ShVisible False
ActiveWorkbook.Save
End Sub

Private Sub Workbook_Open()
ShVisible True
Avertissement.Show
Sheets(2).Select
End Sub

Private Sub ShVisible(Voir As Boolean)
Dim i As Integer
Application.ScreenUpdating = False
If Not Voir Then Sheets(1).Visible = True
For i = 2 To 16
Sheets(i).Visible = IIf(Voir, True, xlVeryHidden)
Next i
If Voir Then Sheets(1).Visible = xlVeryHidden
Application.ScreenUpdating = True
End Sub




Cordialement,
Didier_mDF
 
Bonjour,

Je viens d’essayer le nouveau code et ça ne marche toujours pas. En fait,
Si je clique sur désactiver : aucune feuille ne s’affiche alors que seul la feuille message (feuille 17) devrait s’afficher

Si je clique sur activer : seul l’userform s’affiche et aucune feuille n’apparaît alors l’ensemble des feuilles (feuille 1à 16) devrait s’afficher excepté une celle nommée message
J’ai donc 17 feuilles au total.


Par contre, un côté positif c’est que je n’ai pas de message d’erreur : étrange ?



Merci

Sylvain

J’ai tenté de modifier le code (cf ci-dessous) mais sans succès. Y a t-il une autre solution ?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'si les macros ont été autorisées à l'ouverture, la feuille menu
'est visible et message est cachée
'il faut re-préparer le classeur pour l'éventuelle mauvaise ouverture suivante
'si elles n'ont pas été autorisées de toutes façons cette macro ne
'se lance pas ...
ShVisible False
ActiveWorkbook.Save
End Sub

Private Sub Workbook_Open()
ShVisible True
Avertissement.Show
Sheets(9).Select
End Sub

Private Sub ShVisible(Voir As Boolean)
Dim i As Integer
Application.ScreenUpdating = False
If Not Voir Then Sheets(17).Visible = True
For i = 1 To 16
Sheets(i).Visible = IIf(Voir, True, xlVeryHidden)
Next i
If Voir Then Sheets(17).Visible = xlVeryHidden
Application.ScreenUpdating = True
End Sub
 
Bonsoir Sylvain,

Pour que ça puisse fonctionner, il faut que tu laisses uniquement les 3 procédures suivantes :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Private Sub Workbook_Open()
Private Sub ShVisible(Voir As Boolean)

En prenant bien soin de supprimer ta procédure :
Private Sub Workbook_WindowActivate(ByVal Wn As Window)
ThisWorkbook.Windows(1).Visible = False
End Sub



Cordialement,
Didier_mDF
 
bonsoir,

cela marche désormais à une exeption : je n'arrive pas à savoir quel est le numéro attribué à chaque feuille. Ce ne sont pas les bonnes feuilles qui apparaissent

En tout cas un grand merci pour ton aide

Sylvain
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
1 K
S
Réponses
8
Affichages
2 K
@+Thierry
@
Retour