Mdp VBA
Bonjour à Tous!
Jai fini de travail sur mon projet et jen suis au stade de le protéger. J'ai crée un mdp avec vba qui marche bien mais je voudrais que ce classeur avec son mdp VBA marche que sur un seul pc (genre le mdp reconnait le numéro de série de l'ordinateur). Et que si le fichier se retrouve dans un autre pc il demandera un autre mot de passe différent (que je serai le seul à en avoir)
Est ce qlqun peut vraiment m'aider à ce sujet svp?
Merci par avance!
Bonjour Hendielson,
Alors pour reconnaitre le PC, tu peux utiliser la fonction VBA : ENVIRON()
ENVIRON("COMPUTERNAME") pour le nom d'ordinateur, ENVIRON("username") pour le nom d'utilisateur
A+
Bonjour Hendielson,
Alors pour reconnaitre le PC, tu peux utiliser la fonction VBA : ENVIRON()
ENVIRON("COMPUTERNAME") pour le nom d'ordinateur, ENVIRON("username") pour le nom d'utilisateur
A+
Bonjour Bruno,
Merci de te reactivité. Cependant je nai aucune connaissance de cette formule.
Tu peux m'aider stp?
Bonjour Hendielson, Bruno,
1) dans une fenêtre d'invite de commande (fenêtre cmd), si tu tapes set puis Entrée, tu auras la liste de toutes les variables d'environnement, dont les 5 plus connues sont : Path ; TEMP ; TMP ; USERNAME ; WinDir
2) la fonction VBA Environ() retourne la valeur de la variable d'environnement spécifiée ; exemple : Environ("USERNAME") retourne le nom de l'utilisateur (= le nom du compte Windows sur l'écran Bienvenue de Windows = nom sous lequel tu te connectes à Windows) ; tu liras par exemple Hendielson (mais comme c'est un pseudo, tu liras plutôt ton prénom réel) ; si y'a un 2ème compte Gretel, et que le fichier Excel est exécuté dans la session Windows de Gretel, Environ("USERNAME") retournera Gretel.
3) pour voir (et éventuellement modifier) les variables d'environnement, va sur la fenêtre "Propriétés système" :
(cette image est selon Windows 7)
dhany
Bonjour Hendielson, Bruno,
1) dans une fenêtre d'invite de commande (fenêtre cmd), si tu tapes set puis Entrée, tu auras la liste de toutes les variables d'environnement, dont les 5 plus connues sont : Path ; TEMP ; TMP ; USERNAME ; WinDir
2) la fonction VBA Environ() retourne la valeur de la variable d'environnement spécifiée ; exemple : Environ("USERNAME") retourne le nom de l'utilisateur (= le nom du compte Windows sur l'écran Bienvenue de Windows = nom sous lequel tu te connectes à Windows) ; tu liras par exemple Hendielson (mais comme c'est un pseudo, tu liras plutôt ton prénom réel) ; si y'a un 2ème compte Gretel, et que le fichier Excel est exécuté dans la session Windows de Gretel, Environ("USERNAME") retournera Gretel.
3) pour voir (et éventuellement modifier) les variables d'environnement, va sur la fenêtre "Propriétés système" :
Screen.jpg
(cette image est selon Windows 7)
dhany
Bonjour Dhany!
Oui j'ai fais des recherches sur tout sa, et jai compris la fonction. mais le problème est comment l'utiliser sur excel en utilisant un mdp qui reconnait ses environs? genre si je te donnais mon fichier et que si tu introduit un mdp celui reconnaîtra ton pc mais si tu le passait à un autre avec le même mdp il marchera pas!!!
tu a écrit :en utilisant un mdp qui reconnait ces variables d'environnement ?
en fait, c'est le code VBA du programme Excel qui doit reconnaître la valeur des variables d'environnement, ainsi que la bonne validité du mot de passe ; attention : le mdp lui-même n'a rien à reconnaître du tout ! c'est lui qui est reconnu ou non, rien de plus ; et même s'il y a utilisation d'une méthode de cryptage des mots de passe (style hashcode ou autre), c'est toujours la sub qui doit faire ce job, et toujours pas le mdp lui-même (car lui reste « passif »).
dhany
Bonjour Hendielson,
Voici un exemple de ce que tu peux faire, je ne sais pas si c'est ce que tu demandes
Le mot de passe est "toto"
Il suffit de changer dans le module, le nom de ton PC à la déclaration de la constante
Const NomPC As String = "BIDULE"Pour connaitre le nom de ton PC, tu peux saisir dans l'éditeur VBA, dans la fenêtre d'éxécution (CTRL+G)
debug.print environ("computername")
A+
Bonjour Hendielson,
Voici un exemple de ce que tu peux faire, je ne sais pas si c'est ce que tu demandes
Le mot de passe est "toto"
Il suffit de changer dans le module, le nom de ton PC à la déclaration de la constante
Const NomPC As String = "BIDULE"Pour connaitre le nom de ton PC, tu peux saisir dans l'éditeur VBA, dans la fenêtre d'éxécution (CTRL+G)
debug.print environ("computername")
A+
Bjr Bruno,
Merci de ta reactivité, mais le fichier ne marche pas, regarde en pj
Bonjour Hendielson,
Voici un exemple de ce que tu peux faire, je ne sais pas si c'est ce que tu demandes
Le mot de passe est "toto"
Il suffit de changer dans le module, le nom de ton PC à la déclaration de la constante
Const NomPC As String = "BIDULE"Pour connaitre le nom de ton PC, tu peux saisir dans l'éditeur VBA, dans la fenêtre d'éxécution (CTRL+G)
debug.print environ("computername")
A+
Bjr Bruno,
Merci de ta reactivité, mais le fichier ne marche pas, regarde en pj
Bonsoir Hendielson,
effectivement, à l'ouverture du fichier de BrunoM45, j'ai eu la même erreur que toi ; c'est arrivé car dans Module1, la constante NomPC n'a pas été déclarée publique ; ce que j'ai fait : Public Const NomPC As String = "BIDULE"
cette erreur de compilation ayant été corrigée, lors de l'ouverture suivante du classeur (pour vérification), il y a eu ensuite une erreur d'exécution ! dans ThisWorkbook, sub Workbook_Open(), c'est pas xlVisible mais xlSheetVisible ! équivalent : -1 ; d'où :
With Worksheets("Feuil1")
.Visible = -1: .Activate
End Withj'ai fait d'autres petites modifs ; voici le fichier corrigé :
dhany