Shay travaille avec une organisation de bénévoles et ils ont développé un classeur Excel spécialement pour leurs bénévoles. Ils ne veulent pas qu’il soit copié ou partagé avec des personnes extérieures, alors Shay se demande s’il existe un moyen de protéger le classeur afin qu’il ne fonctionne que pour un ordinateur spécifique et aucun autre.

Il existe des moyens d’essayer d’appliquer la sécurité des classeurs, mais il y a des considérations à prendre en compte avant de choisir la meilleure méthode.

Comprenez que presque toutes les approches vont gêner les utilisateurs à un degré ou à un autre. En outre, l’approche que vous adoptez peut dépendre du fait que les utilisateurs sont uniquement sur votre réseau interne ou s’ils sont des volontaires non connectés à votre réseau.

Un moyen simple de commencer consiste simplement à protéger le classeur par mot de passe, puis à informer vos bénévoles du mot de passe. Le double inconvénient est que tout mot de passe que vous transmettez à vos bénévoles continuerait de fonctionner après qu’ils ne soient plus des bénévoles et pour toute personne à qui les bénévoles pourraient transmettre le cahier d’exercices. Cela est vrai même si vous faites un mot de passe individuel pour chaque volontaire.

Toute autre approche reposerait sur l’ajout de macros au classeur.

Un excellent moyen consiste pour la macro à vérifier le nom de l’ordinateur sur lequel le classeur est ouvert. Voici un exemple d’une telle macro:

Private Sub Workbook_Open()

Dim sComputerName As String     Dim sPossible As String     Dim sTemp As String

sPossible = "[NEWDELL][Computer1][Order Entry][Dan's System]"

sPossible = sPossible & "[Computer2][Computer3]"



sComputerName = Environ("computername")

sTemp = "[" & sComputerName & "]"



If InStr(sPossible, sTemp) Then         MsgBox "Welcome to the workbook."

Else         MsgBox "You are not authorized to open this workbook."

Workbooks(ActiveWorkbook.Name).Close SaveChanges:=False     End If End Sub

L’idée derrière la macro est que vous définiriez, dans la chaîne sPossible, les noms de chaque ordinateur sur lequel il est permis d’ouvrir le classeur. Tout ce que vous avez à faire est de vous assurer que les noms de machines sont correctement orthographiés et de les placer entre crochets dans la chaîne sPossible. La fonction Environ renvoie le nom réel de l’ordinateur, il est placé dans la variable sTemp entre crochets, puis la fonction InStr est utilisée pour voir s’il se trouve dans la liste des machines possibles.

Si c’est le cas, une boîte de message s’affiche; si ce n’est pas le cas, une boîte de message s’affiche et le classeur est fermé sans enregistrer les modifications.

Si vous préférez quelque chose d’encore un peu plus sûr, vous pouvez également utiliser la fonction Environ pour renvoyer le « http://username-password.com/[username] »

value, qui vous donnerait le nom d’utilisateur du compte utilisé sur l’ordinateur.

Cette approche macro est relativement simple, mais elle nécessite de connaître les noms d’ordinateur (et / ou les noms d’utilisateur) avant de fonctionner correctement. Cela suppose également que l’utilisateur n’en sait pas assez sur Excel pour contourner les macros en maintenant la touche Maj enfoncée au démarrage du programme. Si vous pensez que l’utilisateur peut en savoir autant, vous devrez prendre d’autres mesures, telles que les suivantes:

  • Assurez-vous qu’une seule feuille de calcul est visible dans le classeur. Toutes les autres feuilles de calcul doivent être «très cachées» afin que l’utilisateur ne puisse pas les afficher en suivant les étapes normales.

  • Si la macro détermine que l’utilisateur est autorisé, masquez la feuille de calcul visible unique et rendez toutes les feuilles de calcul « très cachées » visibles.

  • Lorsque le classeur est fermé, inversez le processus et masquez toutes les feuilles de calcul (définissez la propriété Visible de chacune d’elles sur xlSheetVeryHidden) et rendez à nouveau la feuille de calcul unique visible.

L’utilisation de cette approche garantit que même si l’utilisateur désactive les macros (en maintenant la touche Maj enfoncée au démarrage), il ne peut pas accéder aux feuilles de calcul car une macro est nécessaire pour les rendre visibles.

Vous pouvez utiliser une variante de l’approche ci-dessus afin qu’au lieu de vous fier à la fonction Environ, vous puissiez demander à la macro de vérifier la présence d’un fichier prédéterminé à un emplacement particulier du système.

Cela signifie, bien sûr, que vous avez besoin d’un moyen de mettre la main sur le système à l’avance pour placer le fichier approprié au bon endroit.

Enfin, quelle que soit l’approche basée sur les macros que vous choisissez, vous devez vous assurer que le projet VBA pour le classeur est protégé par un mot de passe. Cela empêchera quelqu’un de consulter le code de votre macro pour comprendre ce qui se passe avec la protection.

Il y a autre chose que vous devez toujours garder à l’esprit lorsque vous essayez de sécuriser vos classeurs: les mesures de protection que vous mettez en place peuvent toujours être contournées avec suffisamment de connaissances et de patience. Si vos utilisateurs ne sont pas techniquement sophistiqués, vous ne devriez pas avoir de problèmes. S’ils en savent beaucoup sur Excel et les macros, alors tous les paris sont ouverts.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (13666) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.