Onglet à cacher en fonction des utilisateurs

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 !

anthooooony

XLDnaute Occasionnel
Bonjour,

Je cherche à masquer des cellules d'une Feuille avec des conditions d'utilisateurs.
J'ai modifié le code ci dessous, et fonction de mon nom d'utilisateur, mais j'aurais souhaité qu'à la place du else il marque la suite de la formule en if If Environ("UserName") = "IBD496".
Avez vous une idée, je ne suis pas trop famillier avec les if imbriqués dans excel vba..

En vous remerciant par avance

Anthooooony

Code:
Sub masquer_démasquer()
Dim oSh As Worksheet
Application.ScreenUpdating = False
If Environ("UserName") = "RC1194" Then

   For Each oSh In ThisWorkbook.Sheets
      If oSh.Name <> "Accueil" And oSh.Name <> "recap" Then oSh.Visible = Not oSh.Visible
   Next oSh
   Else
    For Each oSh In ThisWorkbook.Sheets
      If oSh.Name <> "Feuil3" And oSh.Name <> "Feuil4" Then oSh.Visible = Not oSh.Visible
   Next oSh
   
Application.ScreenUpdating = True
End If
End Sub
 
Re : Onglet à cacher en fonction des utilisateurs

Bonjour,

Yahoo martial 🙂

En faite, j'ai une bdd sur une feuille imaginons la 1, que j'alimente jour par jour avec des nouvelles données, cette base de donnée est liée avec 10 autres onglets 1 par personne avec des tableaux croisés dynamique.
Je souhaiterais envoyer à chacun sa page du jour.
Imaginons onglet2 envoyer à Yahoo onglet3 à Anthooooony.

Solution 1 :
Deux solutions à ma connaissance une plus proche de mes capacités qui est celle ennoncée, chaque ordi à son nom computeurname ou un nom utilisateur et donc ce serait de dire Yahoo="RC1194"(username) donc si rc1194 masquer tous les onglets sauf l'onglet2. De la même facon si anthooooony="ibd496" alors si ibd496 ne laisser que l'onglet3 ainsi de suite.

Avantage : avec un fichier excel tous les utilisateurs peuvent avoir leur onglet propre sans voir celui du voisin.
Inconvénient : celui qui connait un peu à juste à afficher les onglets masqués et peu voir les données du voisin.

Solution 2 : Serait de dispatcher les onglets et de l'envoyer à la personne: pour l'utilisateur anthooooony envoyer juste l'onglet3 à l'adresse anthooooony@hotmail.com mais ça je ne sais pas..

J'espere avoir été plus clair.

Anthooooony
 
Re : Onglet à cacher en fonction des utilisateurs

Bonjour Antho..ony, Martial


Moi, je privéligierai la seconde solution. Cela ferait moins usine à gaz. A condition d'avoir toujours les mêmes feuilles à envoyer à la même personne.

Mais après, la première solution doit être faisable.
 
Re : Onglet à cacher en fonction des utilisateurs

bonjour,

par code, tu peux aussi mettre tes feuilles en veryhidden, et elles n'apparaitront pas dans la liste des feuilles masquées.
Pour les voir,
- par code VBA
- Alt + F11 : éditeur VBA et passer les feuilles en visible. Ceci étant, tu peux protéger ton code VBA par mot de passe (pas trop facile et à mettre en lieu sur)

après si ton utilisateur cherche toujours à afficher les feuilles des copains, ce sera un peu plus dur ... mais pas impossible
 
Re : Onglet à cacher en fonction des utilisateurs

Bonjour
merci de vos retours Yallo, MJ13, mutszik, et boisgontier !
J'ai trouvé la solution 1 en faite c etait assez bidon, c'était juste le elseif qu'il fallait rajouter..

Maintenant il me reste la solution 2, elle va etre un peu plus compliquer !

Private Sub Workbook_open()
Dim oSh As Worksheet
Application.ScreenUpdating = False

If Environ("UserName") = "DB1204" Then 'pierre

For Each oSh In ThisWorkbook.Sheets
If oSh.Name <> "Feuil2" And oSh.Name <> "Feuil6" Then oSh.Visible = Not oSh.Visible
Next oSh

'If Environ("UserName") = "IBD496" Then
' For Each oSh In ThisWorkbook.Sheets
' If oSh.Name <> "Feuil3" And oSh.Name <> "Feuil7" Then oSh.Visible = Not oSh.Visible
'Next oSh

ElseIf Environ("UserName") = "GEA046" Then 'thomas
For Each oSh In ThisWorkbook.Sheets
If oSh.Name <> "Feuil3" And oSh.Name <> "Feuil7" Then oSh.Visible = Not oSh.Visible
Next oSh

ElseIf Environ("UserName") = "RC1194" Then 'anthony
For Each oSh In ThisWorkbook.Sheets
If oSh.Name <> "Feuil4" And oSh.Name <> "Feuil8" Then oSh.Visible = Not oSh.Visible
Next oSh

Application.ScreenUpdating = True
End If
End Sub
 
- 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

Discussions similaires

Réponses
5
Affichages
232
Réponses
4
Affichages
179
Réponses
0
Affichages
566
Retour