Apparition d'une feuille selon l'utilisateur

Tanid

XLDnaute Nouveau
Salut!

Je suis en train de bâtir un fichier de comptabilisation d'heures supp et de vacances. Je pars d'un formulaire vérouillé fourni par les RH (que je peux au besoin reproduire) qui me sert de requête. À partir de ce formulaire, je veux faire compiler les données (+ ou - d'heures en banque, les vacances, etc) dans une feuille personnelle à chaque personne du service, mais dans le même classeur.

Par contre, lorsqu'un des usagers entre dans le fichiers, je voudrait tout d'abord qu'il ne voit que le formulaire, et qu'une fois rempli, en cliquant sur un bouton-macro, sa feuille de compilation apparaisse. Par contre, je voudrais que ce ne soit que SA feuille et non toutes les feuilles.

J'ai une idée de la macro pour faire apparaître la feuille après traitmeent, mais peut-on sécuriser l'affichage d'une feuille masquée? Ou éventuellement faire apparaître un "pop-up" de connexion avec les initiales et un mot de passe qui alors affiche la feuille.

Pour info, bien que ne puisse partager le formulaire avec vous (confidentialité corporative), j'ai des infos comme nom, prénom et numéro d'employé qui apparaissent. Je peux aussi prévalider ces infos par un menu déroulant. Donc il ne reste que le mot de passe à indiqué, genre SI I1=xyz THEN pop-up avec mot de passe, ou autre...

Merci d'avance!!!
 

camarchepas

XLDnaute Barbatruc
Re : Apparition d'une feuille selon l'utilisateur

un ptit truc comme cela peux-t-être !
il faut lancer la procédure accueil a l'ouverture du classeur .
Pour faire l'essai , il faut créer un onglet nommé du nom ou code perso de la personne.
Le mot de passe peut etre stocké en cellule I1 de chaque onglet perso
(Pratique pour l'administrateur en cas de perte)



Private Mdp As String
Sub Accueil()
Dim Code As String
Code = InputBox("Votre Code Personnel", "Saisir")
Mdp = InputBox("Mot de passe", "Saisir")
If FeuilleOk(Code) Then
If Range(Code & "!I1") = Mdp Then
Worksheets(Code).Visible = True
Déprotege Code
Else
MsgBox "Code erronné"
End If
Else
'Création de l'onglet perso
End If
End Sub
'-------------------------------------------------------------------->> Sous - Module :02 <<---
Sub Protege(NomOnglet As String)
'-- Protection d'un onglet de classeur avec mot de passe pré-sélectionné --
Application.ScreenUpdating = False '<Mode silence>
Worksheets(NomOnglet).Select
With ActiveSheet
.Protect Password:=Mdp, DrawingObjects:=True, Contents:=True, _
Scenarios:=True, AllowFiltering:=True
End With
End Sub '--------------------------------------------------------------------> Fin Protege <---
'-------------------------------------------------------------------->> Sous - Module :03 <<---
Sub Déprotege(NomOnglet As String)
'-- Déprotection d'un onglet de classeur avec mot de passe pré-sélectionné --
Application.ScreenUpdating = False '<Mode silence>
Worksheets(NomOnglet).Select
ActiveSheet.Unprotect Password:=Mdp
End Sub '------------------------------------------------------------------> Fin Déprotege <---
'-------------------------------------------------------------------->> Sous - Module :04 <<---
Function FeuilleOk(NomOnglet As String)
'-- Vérification de l'existance d'un onglet --
Dim I As Integer
Dim Existe As Boolean
Existe = False
For I = 1 To Sheets.Count
If Sheets(I).Name = NomOnglet Then
Existe = True
I = Sheets.Count
End If
Next
FeuilleOk = Existe
End Function '-------------------------------------------------------------> Fin FeuilleOk <---
Sub Sortie()
Dim Code As String
Code = ActiveSheet.Name
Protege Code
Worksheets(Code).Visible = xlVeryHidden
End Sub
 

Macpoy

XLDnaute Impliqué
Re : Apparition d'une feuille selon l'utilisateur

Bonsoir le forum, Tanid, camarchepas, BOISGONTIER,

sans vouloir minimiser votre excellent travaille mon cher BOISGONTIER, des problèmes sécurisation des données me saute aux yeux :

Code:
Par contre, je voudrais que ce ne soit que SA feuille et non toutes les  feuilles.

- si l'utilisateur n'active pas les macro ????
- si l'utilisateur bricole un peu excel / VBA ???

ne vaudrait il pas mieux créer un classeur par utilisateur et récupérer ses données dans un classeur visible uniquement par l'administrateur ?

@ plus Jacques
 

Tanid

XLDnaute Nouveau
Re : Apparition d'une feuille selon l'utilisateur

Salut tout le monde,

Merci de vos efforts!!!

Macpoy, c'est le système que nous avons présentement, sauf qu'on doit le compiler manuellement dans les fichiers de chaque utilisateur. J'ai trouvé la macro de Thierry sur ce post, mais j'avoue que je suis un peu largué pour l'adapter... Je vois a peu près où agir pour modifier les plages d'utilisateurs et les feuilles concernées...

Pour précision, les utilisateurs ne bricolent pas VBA du tout du tout :D et leurs connaissances Excel sont très basiques. Pour ce qui est d'activer les macros, il n'y a qu'à leur expliquer que sur ce fichier ils doivent absolument activer les macros, tout simplement et ça passera comme lettre à la poste (quand y'a pas de grêve) :)

Camarchepas, merci pour le code, mais là tu m'as complètement largué...

Boisgontier, en fouillant un peu dans ta page je devrait trouver ce que je cherche, mais c'est l'organisation de tout ça qui est encore un peu obscure...

Sinon, j'ai trouvé ce code:



Code:
Sub AfficherLesOnglets()

Dim MotDePasse As String

MotDePasse = "toto"

MotDePasse = InputBox("Veuillez saisir le mot de passe", "Affichage de tous les onglets")

If MotDePasse <> "toto" Then
MsgBox "MDP erroné, vous n'êtes pas habilité à voir les onglets"
Exit Sub
Else: ActiveWindow.DisplayWorkbookTabs = True
End If

End Sub

Je l'ai testé, ça marche bien et je peux l'assigner à un bouton macro... Par contre, je ne trouve pas comment ajouter des variable pour chaque utilisateur... Je l'ai modifié comme ceci:



Code:
Sub AfficherLesOnglets()

Dim MotDePasse As String

MotDePasse = "toto"

MotDePasse = InputBox("Veuillez saisir le mot de passe", "Affichage de votre onglet")

If MotDePasse <> "toto" Then
MsgBox "Désolé, Mot de passe erroné"
Exit Sub
Else: MacroFeuilleTanid
End If

End Sub

où la MacroFeuilleTanid est simplement un enregistrement de l'affichage d'une feuille masquée. Il faudrait que sur le mêm bouton je puisse avoir plusieurs macro selon le mot de passe entrée, donc en fait un mix entre la macro de thierry et celle-là, qui me permettrait d'avoir un genre de user form qui redirige vers la macro d'affichage de ladite feuille.

Pis pour compliquer tout ça (nyark), il faudrait que je puisse, toujours en appuyant sur le mêm bouton, envoyer une copie de la feuille par courriel à la directrice du département pour qu'elle l'imprime, la signe et l'envoie aux RH...

Ouf! Vive la vie quand on respire du VBA! :mad:
 

Macpoy

XLDnaute Impliqué
Re : Apparition d'une feuille selon l'utilisateur

RE,

je suis peut être un peu à coté de votre dernier msg, mais ceci pourrait vous intéresser. c'est un truc que j'avais bricolé il y à quelques temps.

@plus
 

Pièces jointes

  • accesdifferents.zip
    30.3 KB · Affichages: 98
  • accesdifferents.zip
    30.3 KB · Affichages: 102
  • accesdifferents.zip
    30.3 KB · Affichages: 109

jeanpierre

Nous a quitté
Repose en paix
Re : Apparition d'une feuille selon l'utilisateur

Bonsoir Tanid, Jacques and Jacques, camarchepas,

Regarde du côté de Select Case

Select Case MotDePasse
Case "toto"
feuilletoto 'la macro pour toto
Case "titi"
feuilletiti 'la macro pour titi
Case etc........................
.......................
End Select

Voir la touche F1 sur Select Case en VBE

Bonne soirée.

Jean-Pierre
 
Dernière édition:

Tanid

XLDnaute Nouveau
Re : Apparition d'une feuille selon l'utilisateur

Merci Macpoy et jeanpierre... Je pense qu'avec ça je vais m'en sortir... Je vais commencer à le monter, au pire si j'ai des bogue je reviendrai vous voir tel une mouche à la lumière de vos lanternes :)

Par contre, une dernière chose: une fois que mon utilisateur a rempli sa fiche, je dois faire en sorte que les données se compilent dans sa fiche avec une macro qui reconnaissent son nom ou mieux, son numéro d'employé (ce qui évite les fautes d'orthographe et autre dysclesquie). Le numéro d'employé est en case L et M 2 (fusionnée). Comment puis-je, par exemple dans le code des onglets, leur assigner un identifiant, et de quoi aurait l'air la macro? Je pense à un bouton dans la barre d'outils, puisque je le rappelle le formulaire des RH est vérrouillé et je suis certain à 99,9% qu'ils ne voudront pas me donner le code pour que je l'utilise et le modifie...

Vraiment, je dois vous dire un gros chapeau!!!
 

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
Re : Apparition d'une feuille selon l'utilisateur

>si l'utilisateur n'active pas les macro ????

-Toutes les feuilles sont cachées. Si les macros ne sont pas activées à l'ouverture du classeur, toutes les feuilles resteront cachées.
-Naturellement le code est protégé par un mot de passe.

JB
 

Macpoy

XLDnaute Impliqué
Re : Apparition d'une feuille selon l'utilisateur

re le forum,

désolé d'avoir posé des questions bêtes BOISGONTIER.
et merci de m'avoir permis de voir dans sa globalité la protection de ce que voulais faire Tanid.

Code:
-Naturellement le code est protégé par un mot de passe.

alors il faut que j'arrête l'Acyd !!
acceptez mes excuses sur de l'humour facile!!!

bonne soirée
@plus
 

Tanid

XLDnaute Nouveau
Re : Apparition d'une feuille selon l'utilisateur

Re-salut tous!

J'ai bidouillé le code de Thierry pour donner un accès différent à chaque utilisateur (en gros je me retrouve avec 12 niveaux différents, dont celui d'admin). Par contre, le hic c'est que j'ai deux feuilles pour chaque utilisateur, donc chaque feuille doit avoir une 'identité' de niveau, puisque leur nom n'est pas celui du niveau (me suivez-vous?:)).

Peut-on trafiquer une macro qui permettre d'attribuer un nom ou une clé à chaque feuille, indépendante de son nom d'onglet? Genre dans le code de la feuille même?...:confused:

À partir de là, je vais pouvoir finaliser je pense, le reste c'est des formules de base...

Édition:Finalement j'ai retrouvé comment faire avec le panneau de propriétés... :D
 
Dernière édition:

Discussions similaires

Réponses
4
Affichages
336

Statistiques des forums

Discussions
312 480
Messages
2 088 757
Membres
103 950
dernier inscrit
Thomas Solioz