Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Protection (par mot de passe + compteur + test date) d'une macro ?

6 réponses
Avatar
Franck
Bonjours à tous

Je désirerais protéger l'exécution de ma macro par mot de passe
et je voudrais que ce mot de passe soit nominatif (1 par utilisateur)
et "surtout" que ce mot de passe soit valide pendant un certain temps,
(6 mois par exemple) à partir de la première date d'exécution pour chaque
utilisateur et qu'en plus elle soit limitée en nombre de lancement
(100 par exemple) pour aussi chaque utilisateur.

Les paramètres pourraient être les suivants :
controlemotdepasse(utilisateur , motdepasse , _
compteur_utilisateur ,
compteur_max_utilisateur _
date_début_utilisateur ,
date_max_utilisateur)

Connaissez vous une telle routine permettant de limiter l'exécution d'une
macro
par mot de passe, dans le temps, par nombre de lancement et tout cela
nominatif ?

Merci pour votre aide.

Franck.

6 réponses

Avatar
Rai
Franck wrote:
Bonjours à tous

Je désirerais protéger l'exécution de ma macro par mot de passe
et je voudrais que ce mot de passe soit nominatif (1 par utilisateur)
et "surtout" que ce mot de passe soit valide pendant un certain temps,
(6 mois par exemple) à partir de la première date d'exécution pour
chaque utilisateur et qu'en plus elle soit limitée en nombre de
lancement (100 par exemple) pour aussi chaque utilisateur.

Les paramètres pourraient être les suivants :
controlemotdepasse(utilisateur , motdepasse , _
compteur_utilisateur ,
compteur_max_utilisateur _
date_début_utilisateur ,
date_max_utilisateur)

Connaissez vous une telle routine permettant de limiter l'exécution
d'une macro
par mot de passe, dans le temps, par nombre de lancement et tout cela
nominatif ?

Merci pour votre aide.

Franck


Bonjour Franck,

Je vois 2 solutions :
- utiliser la base des registres : créer une clef par utilisateur avec en valeur une chaine de caractères (LOGIN-MOTDEPASSE-DATE LIMITE-COMPTEUR) que tu analyse ensuite.
- utiliser une feuille masquée avec la propriété "visible=xlSheetVeryHidden" : tu pourras y placer les logins, mots de passe, compteurs et dates limites des utilisateurs (maintenance ultra simple pour toi)

La première solution suppose que tu utilises toujours le même PC.
La seconde est plus souple.

Cependant, n'oublie pas qu'il te faudra protèger ton projet par mot de passe, mais que cette protection ne résiste pas longtemps à celui qui veut vraiment consulter le code.

D'où ma question : quelle solution préfères-tu ?


--
Cordialement,

Rai
Remplacer point par la ponctuation appropriée pour répondre...

Avatar
Franck
Bonjours Rai

J'utilise toujours le même PC, par contre, mon projet VBA sera installé sur
une
vingtaine de postes.

Je pourrais très bien définir les mots de passes dans le code, et chaque
utilisateur
saisira le sien à chaque utilisation. Par contre je ne vois pas comment
gérer
les compteurs et les limites dans le temps.
Une chose certaine, il est impératif que je réinstalle ou que je
réinitialise la macro
sur le poste de l'utilisateur arrivant en fin de droit.

Je ne maîtrise pas du tout l'association de VBA et Base de registre, je
voudrais
seulement que les choses soit simples (en VBA).

La deuxième solution me parait plus simple, mais comment faire ?

Franck.

"Rai" a écrit dans le message de
news:c5dev4$4t2$
Franck wrote:
Bonjours à tous

Je désirerais protéger l'exécution de ma macro par mot de passe
et je voudrais que ce mot de passe soit nominatif (1 par utilisateur)
et "surtout" que ce mot de passe soit valide pendant un certain temps,
(6 mois par exemple) à partir de la première date d'exécution pour
chaque utilisateur et qu'en plus elle soit limitée en nombre de
lancement (100 par exemple) pour aussi chaque utilisateur.

Les paramètres pourraient être les suivants :
controlemotdepasse(utilisateur , motdepasse , _
compteur_utilisateur ,
compteur_max_utilisateur _
date_début_utilisateur ,
date_max_utilisateur)

Connaissez vous une telle routine permettant de limiter l'exécution
d'une macro
par mot de passe, dans le temps, par nombre de lancement et tout cela
nominatif ?

Merci pour votre aide.

Franck


Bonjour Franck,

Je vois 2 solutions :
- utiliser la base des registres : créer une clef par utilisateur avec
en valeur une chaine de caractères (LOGIN-MOTDEPASSE-DATE LIMITE-COMPTEUR)
que tu analyse ensuite.
- utiliser une feuille masquée avec la propriété
"visible=xlSheetVeryHidden" : tu pourras y placer les logins, mots de passe,
compteurs et dates limites des utilisateurs (maintenance ultra simple pour
toi)

La première solution suppose que tu utilises toujours le même PC.
La seconde est plus souple.

Cependant, n'oublie pas qu'il te faudra protèger ton projet par mot de
passe, mais que cette protection ne résiste pas longtemps à celui qui veut
vraiment consulter le code.

D'où ma question : quelle solution préfères-tu ?


--
Cordialement,

Rai
Remplacer point par la ponctuation appropriée pour répondre...

Avatar
Philippe.R
Bonsoir Franck,
Pour gérer le nombre d'utilisations et la date limite, tu peux utiliser un coin tranquille du classeur
(sur une feuille masquée) pour stocker la date de première utilisation dans une cellule nommée premutil
; puis dans la procédure open du module thisworkbook, copier ce code :

dim nbUtil as integer
nbutil=nbutil+1
if nbutil>100 or date-[premutil]>183 then
msgbox "Veuillez contacter l'Administrateur",vbcritical,"Limite d'utilisation dépassée !"
thisworkbook.close
endif

--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Franck" a écrit dans le message de
news:c5erne$v81$
Bonjours Rai

J'utilise toujours le même PC, par contre, mon projet VBA sera installé sur
une
vingtaine de postes.

Je pourrais très bien définir les mots de passes dans le code, et chaque
utilisateur
saisira le sien à chaque utilisation. Par contre je ne vois pas comment
gérer
les compteurs et les limites dans le temps.
Une chose certaine, il est impératif que je réinstalle ou que je
réinitialise la macro
sur le poste de l'utilisateur arrivant en fin de droit.

Je ne maîtrise pas du tout l'association de VBA et Base de registre, je
voudrais
seulement que les choses soit simples (en VBA).

La deuxième solution me parait plus simple, mais comment faire ?

Franck.

"Rai" a écrit dans le message de
news:c5dev4$4t2$
Franck wrote:
Bonjours à tous

Je désirerais protéger l'exécution de ma macro par mot de passe
et je voudrais que ce mot de passe soit nominatif (1 par utilisateur)
et "surtout" que ce mot de passe soit valide pendant un certain temps,
(6 mois par exemple) à partir de la première date d'exécution pour
chaque utilisateur et qu'en plus elle soit limitée en nombre de
lancement (100 par exemple) pour aussi chaque utilisateur.

Les paramètres pourraient être les suivants :
controlemotdepasse(utilisateur , motdepasse , _
compteur_utilisateur ,
compteur_max_utilisateur _
date_début_utilisateur ,
date_max_utilisateur)

Connaissez vous une telle routine permettant de limiter l'exécution
d'une macro
par mot de passe, dans le temps, par nombre de lancement et tout cela
nominatif ?

Merci pour votre aide.

Franck


Bonjour Franck,

Je vois 2 solutions :
- utiliser la base des registres : créer une clef par utilisateur avec
en valeur une chaine de caractères (LOGIN-MOTDEPASSE-DATE LIMITE-COMPTEUR)
que tu analyse ensuite.
- utiliser une feuille masquée avec la propriété
"visible=xlSheetVeryHidden" : tu pourras y placer les logins, mots de passe,
compteurs et dates limites des utilisateurs (maintenance ultra simple pour
toi)

La première solution suppose que tu utilises toujours le même PC.
La seconde est plus souple.

Cependant, n'oublie pas qu'il te faudra protèger ton projet par mot de
passe, mais que cette protection ne résiste pas longtemps à celui qui veut
vraiment consulter le code.

D'où ma question : quelle solution préfères-tu ?


--
Cordialement,

Rai
Remplacer point par la ponctuation appropriée pour répondre...





Avatar
Franck
Bonsoir Philippe

Merci pour le petit bout de code.

Si j'ai bien compris, à la première utilisation et si le mot de passe est
bon,
je stocke nbutil=1 (compteur courant) et premutil (date du jour) dans les
cellules
correspondant au nom d'utilisateur.

A l'utilisation suivante, je récupère le nbutil stocké, je lui ajoute 1 et
je le compare au compteur max.
Je récupère le premutil stocké, et je compare la date du jour à
(premutil+6mois).

Enfin pour moi c'est clair.

Merci pour tout.

Cordialement.

Franck


"Philippe.R" a écrit dans le message de
news:eS$
Bonsoir Franck,
Pour gérer le nombre d'utilisations et la date limite, tu peux utiliser un
coin tranquille du classeur

(sur une feuille masquée) pour stocker la date de première utilisation
dans une cellule nommée premutil

; puis dans la procédure open du module thisworkbook, copier ce code :

dim nbUtil as integer
nbutil=nbutil+1
if nbutil>100 or date-[premutil]>183 then
msgbox "Veuillez contacter l'Administrateur",vbcritical,"Limite
d'utilisation dépassée !"

thisworkbook.close
endif



Avatar
Philippe.R
Bonjour Franck,

C'est bien ça que ce code doit faire, mais il manquait une ligne après les déclarations de variables
pour fixer la date de 1ère utilisation ; ce sera donc plutôt :

dim nbUtil as integer
'incrémente le compteur de 1 à chaque ouverture
nbutil=nbutil+1
'contrôle qu'une date de 1ère utilisation existe ou l'enregistre
if[premutil]="" then [premutil]Úte
'vérifie si les limites sont atteintes (100 ouvertures ou 6 mois depuis la première)
if nbutil>100 or date-[premutil]>183 then
msgbox "Veuillez contacter l'Administrateur",vbcritical,"Limite d'utilisation dépassée !"
'ferme le classeur après le message
thisworkbook.close
endif

--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Franck" a écrit dans le message de
news:c5f61u$6tr$
Bonsoir Philippe

Merci pour le petit bout de code.

Si j'ai bien compris, à la première utilisation et si le mot de passe est
bon,
je stocke nbutil=1 (compteur courant) et premutil (date du jour) dans les
cellules
correspondant au nom d'utilisateur.

A l'utilisation suivante, je récupère le nbutil stocké, je lui ajoute 1 et
je le compare au compteur max.
Je récupère le premutil stocké, et je compare la date du jour à
(premutil+6mois).

Enfin pour moi c'est clair.

Merci pour tout.

Cordialement.

Franck


"Philippe.R" a écrit dans le message de
news:eS$
Bonsoir Franck,
Pour gérer le nombre d'utilisations et la date limite, tu peux utiliser un
coin tranquille du classeur

(sur une feuille masquée) pour stocker la date de première utilisation
dans une cellule nommée premutil

; puis dans la procédure open du module thisworkbook, copier ce code :

dim nbUtil as integer
nbutil=nbutil+1
if nbutil>100 or date-[premutil]>183 then
msgbox "Veuillez contacter l'Administrateur",vbcritical,"Limite
d'utilisation dépassée !"

thisworkbook.close
endif







Avatar
Franck
Bonjours Philippe

Pas de soucis Philippe, tout marche très bien,
merci encore pour le tuyau...

Cordialement

Franck.


"Philippe.R" a écrit dans le message de
news:
Bonjour Franck,

C'est bien ça que ce code doit faire, mais il manquait une ligne après les
déclarations de variables

pour fixer la date de 1ère utilisation ; ce sera donc plutôt :

dim nbUtil as integer
'incrémente le compteur de 1 à chaque ouverture
nbutil=nbutil+1
'contrôle qu'une date de 1ère utilisation existe ou l'enregistre
if[premutil]="" then [premutil]Úte
'vérifie si les limites sont atteintes (100 ouvertures ou 6 mois depuis la
première)

if nbutil>100 or date-[premutil]>183 then
msgbox "Veuillez contacter l'Administrateur",vbcritical,"Limite
d'utilisation dépassée !"

'ferme le classeur après le message
thisworkbook.close
endif

--
Amicales Salutations
Retirer A_S_ pour répondre.
XL 97 / 2000 / 2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"Franck" a écrit dans le message de
news:c5f61u$6tr$
Bonsoir Philippe

Merci pour le petit bout de code.

Si j'ai bien compris, à la première utilisation et si le mot de passe
est


bon,
je stocke nbutil=1 (compteur courant) et premutil (date du jour) dans
les


cellules
correspondant au nom d'utilisateur.

A l'utilisation suivante, je récupère le nbutil stocké, je lui ajoute 1
et


je le compare au compteur max.
Je récupère le premutil stocké, et je compare la date du jour à
(premutil+6mois).

Enfin pour moi c'est clair.

Merci pour tout.

Cordialement.

Franck


"Philippe.R" a écrit dans le message de
news:eS$
Bonsoir Franck,
Pour gérer le nombre d'utilisations et la date limite, tu peux
utiliser un



coin tranquille du classeur
(sur une feuille masquée) pour stocker la date de première utilisation
dans une cellule nommée premutil

; puis dans la procédure open du module thisworkbook, copier ce code :

dim nbUtil as integer
nbutil=nbutil+1
if nbutil>100 or date-[premutil]>183 then
msgbox "Veuillez contacter l'Administrateur",vbcritical,"Limite
d'utilisation dépassée !"

thisworkbook.close
endif