miremate
Messages postés3Date d'inscriptionmardi 31 janvier 2012StatutMembreDernière intervention31 janvier 2012
-
31 janv. 2012 à 13:58
miremate
Messages postés3Date d'inscriptionmardi 31 janvier 2012StatutMembreDernière intervention31 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).
miremate
Messages postés3Date d'inscriptionmardi 31 janvier 2012StatutMembreDernière intervention31 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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 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
miremate
Messages postés3Date d'inscriptionmardi 31 janvier 2012StatutMembreDernière intervention31 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 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