xlSheetVeryHidden utilisé mais feuille visible malgré tout!

fromhro

XLDnaute Nouveau
Bonjour, je souhaite empecher l'impression d'un document depuis excel avec le code suivant :

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'cache la feuille à nouveau puis enregistre sans rien demander à l'utilisateur
'sinon l'utilisateur enregistre le fichier avec la feuille visible
'et il peut utiliser la feuille avec les macros désactivées ==> plus de protection
Dim wks As Worksheet
Set wks = ThisWorkbook.Worksheets(2)
wks.Visible = xlSheetVeryHidden
Set wks = Nothing
ThisWorkbook.Save
End Sub

Private Sub Workbook_BeforePrint(Cancel As Boolean)
'intercepte la demande d'impression, la bloque et affiche un message
Cancel = True
MsgBox "Document à ne pas imprimer et à ne pas diffuser"
End Sub

Private Sub Workbook_Open()
'a l'ouverture rend la feuille visible puis met le focus dessus
'comme ça si classeur ouvert sans macros activées ==> feuille invisible
Dim wks As Worksheet
Set wks = ThisWorkbook.Worksheets(2)
wks.Visible = xlSheetVisible
wks.Activate
Set wks = Nothing
End Sub

Pour que cette protection soit efficace, il faut que les macros soient activées donc je cache la feuille à proteger en mettant la propriété visible à xlSheetVeryHidden puis lors de l'ouverture je met à xlSheetVisible.

Problème : j'ai quelqu'un qui arrive à voir la feuille masquée avec xlSheetVeryHidden!! Mais le problème n'apparait que sur un poste précis!

Existe-t-il un paramètre au niveau d'Excel ou quelque chose qui empeche la propriété xlSheetVeryHidden de fonctionner ?

Merci de votre aide,

romain
 

corate92

XLDnaute Junior
Re : xlSheetVeryHidden utilisé mais feuille visible malgré tout!

Bonjour,

pourquoi ne ferais-tu pas cela:

Code:
Sheets("Nom_de_la_feuille_à_masquer").Visible = False

Remet "True" si tu souhaites la faire apparaitre...

Cela marche très bien chez moi :)

Bonne soirée
 

fromhro

XLDnaute Nouveau
Re : xlSheetVeryHidden utilisé mais feuille visible malgré tout!

Merci pour ta réponse mais en fait voici mon problème plus précisément:

Mon besoin c'est que la feuille soit cachée si on désactive les macros.
Pour faire ça je dois effectivement passer par la propriété visible de l'objet Worksheet à protéger.
J'ai le choix entre 3 valeurs:
-XlSheetVisible : c'est pas ce que je veux
-XlSheetHidden : ça n'est pas suffisant car l'utilisateur peut réafficher la feuille en faisant format > feuille > afficher
-XlSheetVeryHidden : c'est ce que je veux mais visiblement ça ne marche pas dans certains cas mais je ne sais pas ce qui peut empecher XlSheetVeryHidden de fonctionner

Est-ce que quelqu'un a une idée ?

Merci d'avance,
 

fromhro

XLDnaute Nouveau
Re : xlSheetVeryHidden utilisé mais feuille visible malgré tout!

je suis sous excel 2003,

La valeur que j'utilise est xlSheetVeryHidden pour la propriété visible de mon worksheet.

Je ne définit pas la valeur de cette propriété depuis le code, c'est Excel qui me propose les valeurs possibles quand je vais dans Visual Basic Editor donc cette valeur existe bien.

Merci pour ton aide,

romain
 

wilfried_42

XLDnaute Barbatruc
Re : xlSheetVeryHidden utilisé mais feuille visible malgré tout!

re:


donc c'est que tu as une macro qui te rend visible ta feuille et qui ne la fait pas redevenir invisible

à la fermeture de ton classeur, fait une macro sous l'interruption beforeclose
et mets :

sheets("Feuil1").visible = xlsheetveryhidden ou encore xlveryhidden ou encore 2

ferme ton classeur avec la sauveagrde et réouvre le, normalement la feuille doit etre invisible si tu n'as pas de macro qui la rend visible dans workbook_open
 

wilfried_42

XLDnaute Barbatruc
Re : xlSheetVeryHidden utilisé mais feuille visible malgré tout!

re:

le code plus haut fait :

à la fermeture : je cache la feuille
à l'ouverture : je la rend visible

on ne peut imprimer ce que l'on ne voit pas donc j'en deduis que ou ca à l'air de fonctionner, ca ne fonctionne pas et ou il y a un bug, c'est que ca fonctionne

je m'explique :
je cache la feuille à la fermeture, si mes macro sont en securité maximum, quand tu ouvres le classe, workbook_open ne se lance pas donc la feuille reste cachée, si elle reste cachée, elle ne peut etre imprimée
si mes macro sont en securite minimum, la macro workbook_open se lance et la :
Code:
Set wks = ThisWorkbook.Worksheets(2)
wks.Visible = xlSheetVisible
tu la rends visible

en conclusion, tu rends invisibles à la fermeture une feuille que tu rends visible à l'ouverture

la question est : pourquoi la rends tu visible ?
 
T

THE CAT 2007

Guest
Re : xlSheetVeryHidden utilisé mais feuille visible malgré tout!

Bonjour à tous,

Sur le poste en question le niveau de sécurité des macros est il sur bas ?

Auquel cas tous les codes ne servent pas ....

C pour faire avancer le schimblick ! ;-)
 

wilfried_42

XLDnaute Barbatruc
Re : xlSheetVeryHidden utilisé mais feuille visible malgré tout!

re:

je suis entierement d'accord avec toi the_cat

c'est pour cela que je dis que lorsque ca marche c'est qu'il y as un bug :D

mais je veux savoir ce qu'il veut faire pour corriger .......
 

Discussions similaires

Réponses
5
Affichages
416
Compte Supprimé 979
C

Statistiques des forums

Discussions
312 331
Messages
2 087 356
Membres
103 528
dernier inscrit
hplus