Re : Macro de sécurité
Bonjour,
Feuille cachée avec listing des utilisateurs windows (c'est récupérable en VBA).
Du coup, après, sur l'event Workbook_Open, tu vérifies si le User est dans la liste sur ta feuille, à l'aide d'une boucle (Boucle For
Variable_Parcours =
Indice_Debut to
Indice_Fin)
Si tu trouves une correspondance: tu ouvres le classeur.
Si tu n'en trouves pas:
- tu commences par créer une feuille vierge, sur laquelle tu viens inscrire en gras, italique, et souligné "Vous n'avez pas l'autorisation d'accéder à ce fichier"
- tu supprimes TOUTES les autres feuilles du classeur, sans poser de question (Application.DisplayAlerts = False),
/!\ attention à penser à remettre les alertes après ton traitement de suppression, sinon tu crashes excel à la première erreur
- pour finir tu supprimes toutes les macros (voir les tutoriels de silkyroad à ce sujet:
Visual Basic Editor )
- Tu enregistres le classeur tel quel, et tu forces la fermeture (ThisWorkbook.Save, thisWorkbook.close)
Basiquement, la procédure à suivre est celle décrite ci-dessus.
Sauf que ... Tu feras TOUJOURS face aux limites dont on a parlé:
- Si la personne ouvre ton classeur depuis une copie qu'elle a faite, elle aura toujours le classeur d'origine pour retravailler (donc la suppression et l'enregistrement ne servent plus à grand chose)
- Et surtout, si elle positionne son niveau de sécurité sur Moyen (avec autorisation utilisateur donc) ou sur Elevé (refus systématique hors macros signées), tu l'as dans l'os, puisque tes macros ne s'exécuteront pas.
Le fait de mettre un mot de passe sur le projet VBA n'est pas forcément plus probant, puisqu'il me faut environ 20 secondes pour cracker le mot de passe sur Excel 2003.
J'ignore ce qu'il en est sur 2007/2010/2013, mais si ça n'a pas été corrigé, ou si tu es sur d'anciennes versions d'Excel, tu peux oublier de suite ...
MS Excel et la sécurité, c'est une facture de doliprane/aspirine astronomique :/