Blocage sur code sécurité des onglets en VBA

bonjour a tous

je suis nouveau sur le site et débute sur la vba ,mais avec quelque notion pour moi

voila j'ai a ma charge un fichier avec des vba qui a étais bidouillé de partout avec plein beug que j'ai corriger en allant

mais pour le bien du client j'ai décidé de mettre un code qui protège les onglets celons les utilisateurs avec les droits par page chose qui marche

mais voila si tu rentre utilisateur , et tu as mot passe erroné j ai pas message qui s affiche en disant erreur de code,

mais je vais directement sur la vba en question dont je cherche la solution auprès des personnes plus expérimenté sur le sujet

et autre point quand je réouvre le fichier j ai toute les onglet d affiché lorsque sur l accueil il devrait y avoir que accueil a chaque ouverture

la ligne de code:

dans le workbook:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean) 'masque toutes les feuilles avant de fermer
Dim i As Integer
Sheets("Accueil").Visible = True
Sheets("Accueil").Select
For i = 1 To Sheets.Count
If Sheets(i).Name <> "Accueil" Then Sheets(i).Visible = xlVeryHidden
Next
End Sub

Private Sub Workbook_Open() 'démasque les feuilles suivant liste de la feuille user
ouvrir
End Sub

dans la macro entrée

Sub ouvrir()
Dim Reponse As String, Cel As Range
Dim utilisateur As String, codeacces As String

utilisateur = InputBox("Saisie de votre NOM : ", "NOM", Environ("username"))
If Len(utilisateur) = 0 Then Exit Sub
codeacces = InputBox("Saisie de votre code d'accès : ", "CODE")
If Len(codeacces) = 0 Then Exit Sub

With Sheets("Admin")
Set Cel = .Columns("A").Find(utilisateur, .Range("A1").End(xlDown), xlValues, xlWhole)
If Not Cel Is Nothing Then
If Cel.Offset(0, 1).Value = codeacces Then

For iFeuille = 2 To .[E1].End(xlDown).Row
If .Cells(iFeuille, "D").Value = utilisateur Then
If .Cells(iFeuille, "E").Value = "*" Then
ToutVisible True
Else
Sheets(.Cells(iFeuille, "E").Value).Visible = True
End If
End If
Next

End If
Sheets("Accueil").Visible = False <=========> l'endroit ou sa plante quand utilisateur rentre un code erronée
Else
MsgBox "Désolé, Nom ou Code inconnu !"
End If
End With
End Sub

Sub ToutVisible(ok As Boolean)
Dim sh As Worksheet
For Each sh In Sheets
sh.Visible = True
Next
End Sub

Merci de votre aide par avance

Plusieurs remarques :

- pour proposer un code, il faut utiliser l'outil prévu pour cela (</> dans la barre des outils) et non pas faire un simple copier-coller ;
- mieux vaut indenter votre code pour le rendre "digeste". Le vôtre est incompréhensible tel quel ;
- enfin, il faut dire que rien ne fonctionne, car rien ne peut fonctionner avec votre code, ne serait-ce que parce que votre variable iFeuille n'est pas déclarée (avec une Option Explicit la pré-interprétation doit planter) et à cause de ce "ToutVisible True" où le signe = semble manquer.

Bref, si vous ne pouvez pas rendre anonyme et proposer le fichier à corriger, mettez au moins un code boiteux, mais qui se lance.

bonjour toute mes excuses pour le copier collé pour le code après relecture effectivement c'est pas compréhensible,

donc je joint le fichier en espèrent avoir la solution et comprendre aussi mes erreurs

donc quand utilisateur rentre un mauvais mot passe sa m'envoie sur la vba

lorsque sa devrais dire code invalide

21teste-securite.xlsm (25.43 Ko)

Bonjour à tous,

Un essai...avec un seul tableau en feuille Admin...

13test-securite.xlsm (26.23 Ko)

Cordialement,

merci bien vue, mais sur mon fichier il y a 14 onglets

donc certain son pour le formateur des accueils usine

d autre pour les personnes habilité a renseigner des travaux (pdp usine)

et d autre pour les permis feu usine

le tout avec une gestion centrale des personnes habilité et valide a faire les permis (pdp) et permis feu

donc un fichier lourd que je peut pas partager, car je pense il y a des chose qu'on peut mieux faire avec des meilleur connaissance en vba

Bonjour

Ci joint ma solution

16teste-securite.xlsm (24.72 Ko)

A+ François

Re,

Merci pour le retour...

merci bien vue, mais sur mon fichier il y a 14 onglets...

je pense il y a des chose qu'on peut mieux faire avec des meilleur connaissance en vba

????

  • Si le tableau de la feuille admin est bien renseigné, ou est le problème ?
  • Tu peux peut-être fournir un fichier simplifié avec tes 14 onglets et la config.souhaitée ?

Attention, avec tafeuille.visible =False , celle-ci peut facilement être démasquée par clic droit sur l'un des onglets en bas de la fenêtre Excel ,d'où le tafeuille.Visible = xlVeryHidden.

Bon réveillon, à l'année prochaine !

voila le fichier alléger au mieux j ai enlever pas mal de ligne calcul et d info dedans

le but et donc sécurisé les infos par utilisateur et une fois la personne et plus adapte faire les pdp et permis feux et ceux retrouve a refaire une demande de validation pour refaire sa formation

j aimerais amélioré la page d accueil avec un formulaire de demande d accès qui enregistre la demande dans l onglet admin et envoyé un mail a l administrateur qu' une demande et en cours

merci de votre aide

c est un fichier géré par 90 personne environ

c est un fichier vital a l usine

mais la personne qui la fait en 2013 et partie a la retraite , et la façon qui a étais fait a l origine étais une horreur démêler les codes qui sert dedans de plus une amélioration voulu par le client , j ai fait a ma sauce pour sauver les meubles pour que le fichier soit utilisable pour janvier

et la je bosse dessus pour amélioré l utilisation et le fiabilisé sur les faiblesse que j ai remarqué (pas simple a faire étant pas vraiment programmeur mais autodidacte)

j apprend vite, Mais comprendre les erreurs pas toujours simple quand tu es pas l origine du fichier

j ai eu beaucoup problèmes dessus mais il y a déjà beaucoup de mieux

et avec des personnes plus expérimenté me feront évoluer dans la vba

le fichier avec tout les onglets

Une proposition.

19teste-securite.xlsm (23.75 Ko)

Salut,

Petit test avec les zones de texte sur la feuille comme demandé.

Si tu as besoin d'informations n'hésites pas.

merci Jean Paul

j'ai voulu testé ton exemple pas moyen

sa m'envoye dans la Vba

et il s arret sur la ligne de code

  ThisWorkbook.Worksheets(Trim(tabSheets(Counter))).Visible = xlSheetVisible

malgré les différent user rentrer même admin

capture d ecran 2024 01 02 120055

le problème vient de ma base VBA sur les référence vba projet

j ai solutionné une partie mais pas tout

Re,

C'est un petit exemple que tu dois tester tout seul avant de faire du copier coller sur ton classeur.

Je n'ai pas utilisé le nom de tes feuilles donc y'a de l'adaptation à faire.

Rechercher des sujets similaires à "blocage code securite onglets vba"