Code Macro VBA pour initier changement journalier de mot de passe Excel

chesslord Messages postés 3 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 1 juin 2007 - 30 mai 2007 à 16:55
chesslord Messages postés 3 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 1 juin 2007 - 1 juin 2007 à 11:40
Salut à tous, et merci d'avance à ceux qui tenteront de m'aider....

J'ai besoin d'un coup de main en VBA.
Je cherche un code afin d'organiser l'accès à un classeur par mot de passe grâce à une protection un peu plus élaborée (enfin c'est une façon de parler) que celle intégrée par Microsoft.
Voici la tâche que je souhaite pouvoir initier par un code :
- Une feuille du classeur contient 500 mots de passe aléatoires, mais fixes (1 par cellule)
- A l'ouverture du classeur, la boîte de dialogue permettant de désactiver les macros est neutralisée --> l'utilisateur ne peut ouvrir ce classeur avec macros désactivées.
- Une inputbox demande à l'utilisateur un mot de passe (un de ceux contenus dans la Bdd en feuille1)
- L'intérêt du système que je veux initier, est de faire en sorte que le mot de passe valide change tous les jours (Le code VBA validera le mot de passe en le comparant à celui contenu dans une cellule dont l'adresse se décale de (0,1) à chaque changement de date.
- Si trois mots de passe erronées sont entrés successivement, une partie du code de la macro efface toutes les cellules du classeur. (pour éviter force brute)

L'intérêt :
- c'est un classeur que je dois transmettre à des tiers, mais celui-ci ne dois pas être perdu, accessible à d'autres (données financières)
- je suis le seul à détenir cette Bdd de mots de passe
- je crée une mailing list qui envoie à ces 1/3 le nouveau mot de passe chaque jour.
- Ainsi si les 1/3 ne peuvent désactiver (sauf s'ils cassent le mot de passe du projet VBA, ce qui n'est pas bien compliqué) de façon durable la protection qui auraient été initié avec le système classique, et perdre ensuite ou laisser sans protection le classeur.

Quelqu'un peut-il me proposer un bout de code ?
Je pense que ce n'est pas bien compliqué, mais je suis assez pressé, et n'ai pas trop le temps de me plonger dans VBA Walkenbach.

Merci d'avance.

A+

6 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
30 mai 2007 à 21:03
Pour le point 1, désactiver la boite de validation de la macro : il faut aller sur le poste de chaque utilisateur pour mettre le niveau de protection à Bas. A ma connaissance, on ne peut pas le faire par code (ce qui me semble logique quelque part). Inconvénient, c'est une manip à faire sur chaque poste concerné, que n'importe qui peut ré-activer la sécurité pour contourner ta macro, et qu'en plus, si tu mets au plus bas, c'est la porte ouverte à n'importe quel virus puisque, dans le monde de l'entreprise, une messagerie sert au moins à 50% à s'envoyer des conneries à longueur de temps, dont des fichiers Excel

Ta liste de mot de passe dans une feuille Excel, macro ou pas, peut se récupérer très facilement avec une protection par code VBA.

Il vaudrait mieux, plutôt, utiliser les systèmes de protection de Classeur, de feuille, etc .. Qui depuis la version 2000 ou 2003 je ne sais, offre quand même pas mal de possibilités. En tous cas, bien suffisante. Et à la rigueur, tu peux gérer le changement de mot passe à chaque fermeture de ton fichier en mettant par ex. ta liste de mot de passe dans un module, dans un tableau et en protégeant ce module directement dans l'Editeur VBA, (clic droit sur le projet VBA, propriété\sécurité), ce qui est déjà plus efficace comme protection).

Sache tout de même que, quelque soit ton système de protection, de toutes façons, ton fichier pourra être lu avec OpenOffice.

Dernière chose : Tu n'as pas le temps de faire un bout de code, ou plutôt tu es pressé et tu n'as pas envie alors qu'à vue de nez, c'est pour du boulot. Personnellement, si j'attendais qu'un forum veuille bien me faire mes fichiers et autres tableaux de bord au boulot, je crois que je serais bien dans la m... Et comme j'ai suffisamment des miens à faire, je passe mon tour et laisse un volontaire faire TON boulot.

Molenn
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 4
31 mai 2007 à 00:26
Lut
Suis du même avis.
Tu donne le mot de passe ok moi je tappe le mot de passe j'édite la feuille de mot de passe et voilà j'ai 500 beau mots pour moi et pour l'avenir ....

Cordialement, Jean-Paul  
______________________________________________________________________

Le Savoir n'a de valeur que s'il est partagé
0
chesslord Messages postés 3 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 1 juin 2007
31 mai 2007 à 10:31
Salut à vous deux et tout d'abord, merci d'avoir pris le temps de me répondre...
Je suis d'accord avec vous sur le fait que c'est un peu gonflé de demander que l'on m'écrive un code de A à Z.
Mais ma demande était plutôt, dans l'esprit, d'obtenir des suggestions de bouts de code pour telle ou telle problématique, charge à moi de les assembler ensuite pour le projet...
Par ailleurs :
- pour ton info, il est possible d'empêcher l'apparition de la message box ayant pour objet de désactiver les macros à l'ouverture d'un classeur (beforeWorkbookOpen...), et donc d'empêcher quelqu'un d'avoir accès au classeur en désactivant les macros.
- Par ailleurs, il est possible de masquer la feuille contenant les mots de passe, non pas via Excel, mais via les propriétés de l'objet worksheet dans VBE : xlsheet.visible = false
La conséquence est que la feuille ne peut être affichée via les menus d'Excel. La personne doit pouvoir accéder à l'objet worksheet dans VBE qui est protégé par mot de passe. Ce mot de passe peut se casser assez facilement, c'est vrai, mais un petit peu moins que celui protégeant les modifications du classeur (disons qu'il faut que les gens sachent que la feuille est masquée via le VBE - un peu foireux, je suis d'accord)
- Par contre, si le classeur est ouvert avec OpenOffice, effectivement, il est peut-être possible de désactiver les macros.

Je me doute que cette idée de protection est foireuse, mais c'est intéressant de savoir pourquoi...

Donc le post reste semble-t-il ouvert à ceux qui voudraient me faire des suggestions...

Encore merci à ceux qui m'ont répondu, et aux personnes qui prendront le temps de me faire part de leurs idées.

A+
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
31 mai 2007 à 12:20
Quelqu'un qui s'y connait un tant soit peu pourra tout de même récupérer tes mots de passe, à moins que j'ai oublié quelque chose :

J'ai fait un fichier Classeur1 contenant deux feuilles, dont la feuille Toto qui contient des mots de passe.
J'ai enregistré une macro bidon, pour avoir la fenêtre à l'ouverture.
J'ai protégé la feuille, le classeur et le projet VBA.

Et bien, dans un 2nd classeur, j'ai crée une toute petite macro qui me donne le nom de toutes les feuilles et partant de là, recopiant tous les mots de passe.

    Dim i As Integer  
    For i = 1 To Workbooks("Classeur1.xls").Worksheets.Count
        MsgBox Workbooks("Classeur1.xls").Worksheets(i).Name
    Next i
   
    Workbooks("Classeur1.xls").Worksheets("Toto").Cells.Copy
    ActiveWorkbook.Worksheets("Récup").Cells.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Rien d'insurmontable pour qui sait faire une macro.
Pour ça que les mots de passe contenus dans le fichier protégé, je n'y crois pas trop.
Mais j'avoue que je n'ai pas forcément bcp plus d'idée ^^

Molenn
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
31 mai 2007 à 12:22
Si ton application est utilisée par des employés de ta compagnie (ou éventuellement d'autres...), tu devrais pouvoir, en principe, connaître leurs UserName.

À l'aide d'API (GetUserName, entre autres), tu peux récupérer le UserName sur l'ordi de l'utilisateur et vérifier si l'utilisateur entre bien ce UserName au démarrage de l'appli.

Ce pourrait être une partie de solution, sachant que ce programme ne serait utilisable que sur l'ordi de ces "clients"... (?)

PS: pense à insérer des sauts de lignes dans tes messages pour une meilleure lisibilité...

MPi
0
chesslord Messages postés 3 Date d'inscription jeudi 22 février 2007 Statut Membre Dernière intervention 1 juin 2007
1 juin 2007 à 11:40
Merci à tous de votre aide...

Je vais regarder tout çà d'un peu plus près.

Si je trouve une solution intéressante, je vous donne des nouvelles.

Encore merci et @+...
0