Cacher feuilles en fonction de valeur de deux cellules

Résolu
miremate Messages postés 3 Date d'inscription mardi 31 janvier 2012 Statut Membre Dernière intervention 31 janvier 2012 - 31 janv. 2012 à 13:58
miremate Messages postés 3 Date d'inscription mardi 31 janvier 2012 Statut Membre Dernière intervention 31 janvier 2012 - 31 janv. 2012 à 18:37
Bonjour,

J'ai un fichier excel avec une trentaine de feuilles. J'ai besoin d'une macro qui cache toutes les feuilles du livre à l'exception de deux feuilles dont le nom (exact) est mentionné sur les cellules A35 et A36, et aussi de deux autres feuilles bien définies qui ne doivent pas non plus être cachées. Les valeurs des cellules A35 et A36 sont le résultat de formules (concatener).

Merci d'avance.

5 réponses

miremate Messages postés 3 Date d'inscription mardi 31 janvier 2012 Statut Membre Dernière intervention 31 janvier 2012
31 janv. 2012 à 18:37
OK, j'ai aussi trouvé une autre solution: je remplace
ws.Visible = False
par:
ws.Visible = xlVeryHidden
et je bloque le projet vba par mot de passe pour que les utilisateurs ne puissent pas acceder à la macro.

Merci!
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
31 janv. 2012 à 14:36
Bonjour,
Oui ?
Et à quel niveau se situe donc ta difficulté ? ===>>
1) lire le contenu de ces deux cellules ? (j'espère que non, tout de même !)
ou
2) parcourir la collection Worksheets, extraire la propriété Name de chacune, et prendre la décision d'affecter la valeur false à la propriété visible de celles que tu ne veux pas voir ?




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
miremate Messages postés 3 Date d'inscription mardi 31 janvier 2012 Statut Membre Dernière intervention 31 janvier 2012
31 janv. 2012 à 18:03
En fait, voila où j'en suis (voir code collé ci-dessous):
Ça marche bien à condition que je ne bloque pas le livre, mais le problème est que je ne veux pas que les utilisateurs puissent rendre visibles les feuilles cachées. Une suggestion?

Private Sub worksheet_change(ByVal target As Excel.Range)
Dim ws As Worksheet

For Each ws In Worksheets
If ws.Name <> "FORMULARIO" And ws.Name <> "ESPECIFICACION TECNICA" And ws.Name <> Worksheets("FORMULARIO").Range("B32").Value And ws.Name <> Worksheets("FORMULARIO").Range("B33").Value Then
ws.Visible = False
End If
If ws.Name = Worksheets("FORMULARIO").Range("B32").Value Then
ws.Visible = True
End If
If ws.Name = Worksheets("FORMULARIO").Range("B33").Value Then
ws.Visible = True
End If
Next ws

End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
31 janv. 2012 à 18:15
Tiens, en bâclé :
En plus de ce que tu as déjà fait :

Private Sub Worksheet_Activate()
  ActiveSheet.Visible = False
End Sub

sur les feuilles que tu veux garder cachées.
Et même si l'utilisateur cherche à jouer sur les onglets (les sélectionner tous, puis rendre tout visible), il l'aura dans le baba


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 219
31 janv. 2012 à 18:22
J'ai dit "bâclé" ===>>
Joue donc sur l'évènement Workbook_SheetActivate en utilisant le paramètre sh au lieu de mettre ton code sur chaque feuille
Et tu pux en plus y coller un code similaire à celui que tu as écrit
Allez. Je te laisse faire ce petit truc


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0