• Initiateur de la discussion Initiateur de la discussion Anita
  • 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 !

A

Anita

Guest
Bonjour à tout le forum,
je tourne en rond sur un test.
Je cherche à obliger d'accepter le lancement des macros (sinon affichage feuille1, le reste caché)
si les macros sont acceptés, il y a un test sur le pc utilisé, s'il ne correspond pas alors message 'pas les droits' etfermeture du classeur. Ci après mes vaines élucubrations...

Private Sub Workbook_Open()
Application.ScreenUpdating = False
If Application.UserName = 'p Dupond' Then


For Each Sh In Sheets
Sh.Visible = True
Next Sh
Sheets(1).Visible = xlVeryHidden

Else
For Each Sh In Sheets
Sh.Visible = xlVeryHidden
Next Sh
Sheets(1).Visible = True
End If
End Sub

Ca ne fonctionne pas, hélas.

Un grand merci pour votre aide et agréable journée à vous
 
Bonjour Anita

En effet cela ne fonctionne pas dans le cas du 'Else'
Tu ne peux pas cacher toutes les feuilles, arrivé à la dernière ça ne marche plus. Ce qui est un peu logique je pense
Par contre je vois que dans ce cas tu veux rendre de nouveau visible la feuille 1
Donc si tu faisais le contraire c'est à dire laisser visible la feuille 1 et rendre invible les suivantes ...

exemple
Else
For I = 2 to Sheets.Count
Sheets(I).Visible = xlVeryHidden
Next I

à essayer

Bon courage
 
Bonjour le Forum, Anita,

Plusieurs remarques :

1 - Tu n'as pas déclaré Sh, c'est bien de le faire quand tu manipules des objets !

2 - Ensuite dans tes lignes For Each tu as fait une erreur : Sh in Sheets n'est pas possible tu dois te positionner au niveau de la Worksheets pour y manipuler des Sheets, comme cela :

Code:
Private Sub Workbook_Open()
Dim sh As Worksheet
Application.ScreenUpdating = False

If Application.UserName = 'p Dupond' Then
   For Each sh In Worksheets
      sh.Visible = True
   Next sh
   Sheets(1).Visible = xlVeryHidden
Else
   For Each sh In Worksheets
      sh.Visible = xlVeryHidden
   Next sh
   Sheets(1).Visible = True
End If
Application.ScreenUpdating = True
End Sub

Il ne faut pas non plus oublier de remettre le screenupdating à true sinon tu n'auras pas d'affichage.

Enfin par cette méthode tu as un message d'erreur. En effet tu cherches à masquer toutes les feuilles puis afficher la 1. Hors Excel ne peux pas masquer toutes les feuilles.

Il faut donc que tu procedes ainsi :

Code:
Private Sub Workbook_Open()
Dim Compteur As Integer
Application.ScreenUpdating = False

If Application.UserName = 'p Dupond' Then
   For Compteur = 2 To Sheets.Count
      Sheets(Compteur).Visible = xlVeryHidden
   Next Compteur
Else
  For Compteur = 2 To Sheets.Count
      Sheets(Compteur).Visible = xlVeryHidden
   Next Compteur
End If
Application.ScreenUpdating = True
End Sub

Comme de toute facon tu souhaites avoir la sheet 1 affichée dans les deux cas on commence à masquer à partir de la sheet 2.

@+

Creepy
 
Bonjour Jacques87, anita, creepy et le forum.

J'ai essayé le 'If Application.UserName = 'p Dupond' Then' qui m'intéresse.
Sur mon poste, à mon travail, il me renvoie nom prénom alors que je me suis connecté sur le PC avec un autre logon.

Moi, j'utilise une macro pour détecter le logon et comme toi je fais ensuite des traitements.

Regarde ce fil qui en parle.

Ce lien n'existe plus
 
Merci Creepy, compris tes explications, cependant à l'exécution il y a une erreur sur la ligne :
Sheets(Compteur).Visible = xlVeryHidden

Totalement incompréhensible, ou alors pb de raisonnement.
1) s'il active les macros-->on test son username, s il est correct on affiche toutes les feuilles sauf la feuil1, sinon on masque tout sauf la 1
2)s'il n'active pas les macros alors on masque toutes les feuilles sauf la feuil1 ( le test sur le username est inutile ici).

Je continue à chercher...

Bonne apres midi creepy..aux autres aussi d'ailleur
 
Non s'ils n'activent pas les macros rien ne se passe étant donné que les macros ne s'activeront pas.

Moi je rends le classeur non utilisable (je masque tout) avant de le diffuser.

S'ils activent les macros je donne les droits que je veux.

S'ils n'activent pas les macros le classeur est inutilisable.
 
Bonjour cocolapin.
Si cela marche, même sans activer les macros.
essayes ceci:

Private Sub Workbook_Open()
Application.ScreenUpdating = False
For Each sh In Sheets
sh.Visible = True
Next sh
Sheets(1).Visible = xlVeryHidden
End Sub


bonne apres midi
 
Bonjour Anita,

Tu dis : S'il active les macros alors ...
et s'il ne les active pas alors on masque toutes les feuilles . NON, on ne peut pas puisqu'il (l'utilisateur) n'a pas activé les macros

J'ai eu le meme prob et j'ai fait :
- une feuille appellée Top (ou ce que tu veux) dans laquelle je place un dessin (ou un objet ...)
quand je clique sur cet objet, j'affiche mes feuilles et ce dont j'ai besoin pour mon appli

- dans workbook before save, je cache toutes mes feuilles en very hidden (sauf Top)

- je mets un code de protection sur mon projet avec mot de passe

si l'utilisateur active les macros, il peut lancer l'appli en cliquant sur l'objet dans la feuille 'Top'

s'il ne les actives pas, il ne peut que bouger dans la feuille top

et voili ...

Message édité par: mutzik, à: 09/01/2006 14:25
 
merci Mutzik de tes précisions....
Là suis largué pour de bon et suis pas loin d'abandonner 😛inch:
deux conditions à satisfaire simultément, je pensais naïvement que ce n'était pas le bout du monde.....
 
Je partage l'avis de mutzik, il est hors de question que tu abandonnes.

attend un peu mutzik te prépare quelque chose. je sais ce qu'il va faire et alors tu retrouveras le sourire.

As-tu regardé les fils que j'ai mis en reference dans les messages précédents et les exemples?
 
- 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
3
Affichages
922
Réponses
6
Affichages
758
Réponses
2
Affichages
643
Retour