Vba mot de passe Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
m
massari59264
Membre fidèle
Membre fidèle
Messages : 449
Appréciations reçues : 8
Inscrit le : 29 avril 2017
Version d'Excel : 2016

Message par massari59264 » 23 mai 2019, 14:24

Bonjour à tous,

Après avoir visionné une vidéo bien pratique pour ce que je souhaiterai faire, je joins le résultat fichier :

Acces admin : utilisateur : daniel mot de passe : 123
Ce qu je souhaiterais en complément VBA sur ce fichier c'est :

1) empêcher la visualisation du code VBA à l'ouverture du fichier : en effet il suffit de faire clic droit sur login et visualiser le code pour voir le descriptif VBA

2) le code VBA utlise le nom des feuilles (exemple Login, Members ...), or je souhaiterais que le code soit écrit en utilisant les codename (en cas de modif de libellé d'onglet qui empêcherait le bon déroulement du code)

3) Je souhaiterais inclure dans ce code les codesnames des onglets 1,2,3,4,5 à l'admin et 1,2,3,4 à l'utilisateur :
La méthode simple serait d'ajouter les codes : sheets("1").Visible=True pour chaque cas , mais ne pourrait on pas instaurer une boucle ?,

Merci d'avance pour vos contributions,

Cordialement,
MDP + UTIL.xlsm
(39.12 Kio) Téléchargé 3 fois
Avatar du membre
GGautier
Membre dévoué
Membre dévoué
Messages : 572
Appréciations reçues : 25
Inscrit le : 18 décembre 2018
Version d'Excel : 2016 FR

Message par GGautier » 23 mai 2019, 14:43

Bonjour, :)
1) Pour protéger ton code VBA tu peux le protéger par un mot de passe, dans l'éditeur VBA tu fais un clic droit sur ton projet, puis sur Propriétés et dans l'onglet Protection coche la case "Verrouiller le projet pour l'affichage"

2) Remplace tous les code utilisant sheets("Nom de la feuille") par Feuilx (x étant le numéro de feuille, tu retrouve ça à gauche dans l'éditeur VBA)

3) au lieux de mettre :
Feuil1.Visible=False
Feuil2.Visible=False
etc...
tu remplace par :

For i = 1 To 3
Worksheets(Feuil & i).Visible = False
Next i
"Il n'y a pas de question idiote, seulement une réponse idiote" ALBERT EINSTEIN (enfin ici on évite). 8-)
Vous cherchez des réponses à vos questions ? regardez par ici ;) http://boisgontierjacques.free.fr/index2.htm
m
massari59264
Membre fidèle
Membre fidèle
Messages : 449
Appréciations reçues : 8
Inscrit le : 29 avril 2017
Version d'Excel : 2016

Message par massari59264 » 23 mai 2019, 14:47

Bonjour GGauthier,

Merci pour toutes les infos,

Je teste au plus vite et je te confirme la réussite de tes conseils :wink:,

Cordialement,
Avatar du membre
GGautier
Membre dévoué
Membre dévoué
Messages : 572
Appréciations reçues : 25
Inscrit le : 18 décembre 2018
Version d'Excel : 2016 FR

Message par GGautier » 23 mai 2019, 14:49

J'ai fais une petite erreur, voilà le bon format :

For i = 1 To 3
Worksheets(i).Visible = False
Next i

;;)
"Il n'y a pas de question idiote, seulement une réponse idiote" ALBERT EINSTEIN (enfin ici on évite). 8-)
Vous cherchez des réponses à vos questions ? regardez par ici ;) http://boisgontierjacques.free.fr/index2.htm
Avatar du membre
GGautier
Membre dévoué
Membre dévoué
Messages : 572
Appréciations reçues : 25
Inscrit le : 18 décembre 2018
Version d'Excel : 2016 FR

Message par GGautier » 23 mai 2019, 14:53

Par contre il faudras que tu protège aussi ton classeur par un mot de passe ! Sinon rien n'empeche les utilisateurs de faire un clic droit pour afficher les feuilles masquées !

De plus utilise un code au démarrage pour masquer toutes les feuilles !
Dans l'éditeur, dans ThisWorkbook utilise ça :
Private Sub Workbook_Open()
For i = 3 To 8
Worksheets(i).Visible = False 'Pour masquer toutes les feuilles sauf Login
Next i
End sub
Si tu ne veux pas protéger ton classeur pour une raison ou un autre utilise alors Feuilx.Visible=xlSheetVeryHidden. Avec ça impossible de voir les feuilles masquées !
"Il n'y a pas de question idiote, seulement une réponse idiote" ALBERT EINSTEIN (enfin ici on évite). 8-)
Vous cherchez des réponses à vos questions ? regardez par ici ;) http://boisgontierjacques.free.fr/index2.htm
a
archer
Membre impliqué
Membre impliqué
Messages : 1'156
Appréciations reçues : 82
Inscrit le : 8 avril 2017
Version d'Excel : 2007/2010

Message par archer » 23 mai 2019, 19:01

Bonjour
Pour Cacher ou d'écacher toutes les onglets
A voir
Sub Cache()
Dim I&
    For I = 1 To Sheets.Count
        Select Case Sheets(I).Name
            Case Feuil1.Name ', Feuil2.Name
                Sheets(I).Visible = -1 ' Decache
            Case Else
                Sheets(I).Visible = 2
        End Select
    Next I
End Sub

Sub Decache()
Dim Feuil As Object
   For Each Feuil In Worksheets
        Feuil.Visible = -1
   Next
End Sub
A+
Maurice
:btres:
m
massari59264
Membre fidèle
Membre fidèle
Messages : 449
Appréciations reçues : 8
Inscrit le : 29 avril 2017
Version d'Excel : 2016

Message par massari59264 » 24 mai 2019, 10:06

Bonjour au forum,

Merci GGautier et Archer pour vos retours,

J'ai testé et donc :

Je souhaiterais ajouter une condition préalable au code mais je ne serai pas le rédiger :

Ma problématique est d'indiquer, lors de la validation du login sur la feuille 9, onglet Segments 1 ou 0 dans la 3eme colonne du tableau Filtre _Etab en fonction du nom de l'utilisateur saisi.
Les attributions sont indiquées dans la feuille Members
Exemple : Daniel aura 1 sur toute la colonne C Filtre_Etab,
lol aura 1 sur la colonne C que pour le siége A et donc 0 pour le siège B...

Est-ce assez clair ou non?,

Ensuite j'ai apporté les modifications conseillées, mais je n'arrive pas à introduire la boucle, il me mets que la variable i n'est pas déclarée (voir fichier joint)

Je rappelle que : Acces admin : utilisateur : daniel mot de passe : 123 afin que vous puissiez accéder,

Merci d'avance pour votre aide,

Cordialement,
MDP + UTIL - Modifs.xlsm
(42.26 Kio) Téléchargé 2 fois
Avatar du membre
GGautier
Membre dévoué
Membre dévoué
Messages : 572
Appréciations reçues : 25
Inscrit le : 18 décembre 2018
Version d'Excel : 2016 FR

Message par GGautier » 24 mai 2019, 10:11

Pour le problème avec i rajoute en début de code Dim i
"Il n'y a pas de question idiote, seulement une réponse idiote" ALBERT EINSTEIN (enfin ici on évite). 8-)
Vous cherchez des réponses à vos questions ? regardez par ici ;) http://boisgontierjacques.free.fr/index2.htm
m
massari59264
Membre fidèle
Membre fidèle
Messages : 449
Appréciations reçues : 8
Inscrit le : 29 avril 2017
Version d'Excel : 2016

Message par massari59264 » 24 mai 2019, 11:06

Merci pour ton retour ggauthier :wink: ,

Je reposte le fichier ainsi modifier, avec les boucles opérationnelles,

Qui peut m'aider sur le premier point :

Je souhaiterais ajouter une condition préalable au code mais je ne serai pas le rédiger :

Ma problématique est d'indiquer, lors de la validation du login sur la feuille 9, onglet Segments 1 ou 0 dans la 3eme colonne du tableau Filtre _Etab en fonction du nom de l'utilisateur saisi.
Les attributions sont indiquées dans la feuille Members
Exemple : Daniel aura 1 sur toute la colonne C Filtre_Etab,
lol aura 1 sur la colonne C que pour le siége A et donc 0 pour le siège B...

Est-ce assez clair ou non?,

Merci d'avance
MDP + UTIL - Modifs.xlsm
(43.88 Kio) Téléchargé 5 fois
Avatar du membre
GGautier
Membre dévoué
Membre dévoué
Messages : 572
Appréciations reçues : 25
Inscrit le : 18 décembre 2018
Version d'Excel : 2016 FR

Message par GGautier » 24 mai 2019, 11:34

Ce que tu veux c'est, au moment de la validation du login et mot de passe écrire dans la dernière colonne du tableau de la feuille Segment A ou B en fonction du login ?
"Il n'y a pas de question idiote, seulement une réponse idiote" ALBERT EINSTEIN (enfin ici on évite). 8-)
Vous cherchez des réponses à vos questions ? regardez par ici ;) http://boisgontierjacques.free.fr/index2.htm
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message