Cacher des feuilles ????

S

Sylvain

Guest
Bonjour,

J’ai un problème avec le code dans thisworkbook. J’aimerais que lorsque
- 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"

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.


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

Merci d’avance pour le coup de main

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
 
@

@Christophe@

Guest
Bonsoir,

Mets le code suivant dans ThisWorkbook de ton fichier:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim WS As Worksheet

With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With

For Each WS In Worksheets
If WS.Name <> "Message" Then WS.Visible = xlSheetVeryHidden
Next WS
ActiveWorkbook.Save

With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub

Private Sub Workbook_Open()
Dim WS As Worksheet

With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With

For Each WS In Worksheets
WS.Visible = xlSheetVisible
Next WS
Worksheets("Message").Visible = xlVeryHidden

With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub


Bonne soirée

@Christophe@
 
S

Sylvain

Guest
Re bonsoir,

En fait cela ne marche pas, quand je ferme le fichier, il met l'erreur d'éxécution 1004 : la méthode visible de l'objet worksheet a échoué. De plus, il me demande lorsquie je ferme si je veux enregistrer et là j'ai dis oui et maintenant ce n'est plus la feuille message qui apparait : c trop bizarre

De quoi cela peut venir ?

Meric d'vance

Sylvain
 
@

@Christophe@

Guest
J'avais oublié une ligne, voici le code avec la ligne ajouté

Bonne soirée


Option Explicit
Dim WS As Worksheet

Private Sub Workbook_BeforeClose(Cancel As Boolean)
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With

Worksheets("Message").Visible = xlSheetVisible
For Each WS In Worksheets
If WS.Name <> "Message" Then WS.Visible = xlSheetVeryHidden
Next WS
ActiveWorkbook.Save

With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub

Private Sub Workbook_Open()
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With

For Each WS In Worksheets
WS.Visible = xlSheetVisible
Next WS
Worksheets("Message").Visible = xlVeryHidden

With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
 
S

Sylvain

Guest
Bonjour,

je crois que c bon pour cette fois en recopiant ton nouveau code le nom de ma feuille n'était pas tout à fait le même : dans ton code c'était Message et moi elle s'appelle message sans majuscule : c con un ordi lol

merci encore


Sylvain
 

Discussions similaires