VBA identification par numéro de série Excel

tom6821

XLDnaute Nouveau
Bonjour,

je cherche à exécuter une macro uniquement si le fichier est lancé d'un ordinateur spécifique. De cette manière le fichier pourra être utilisé sans intervention de la macro à partir d'un autre poste.

J'ai pensé à utiliser le numéro de série ou a défaut le nom d'utilisateur du programme Excel de la machine.

Est-il possible d'accéder à ces paramètres sous VBA ?

Merci d'avance pour votre aide, bonne journée !
 

Staple1600

XLDnaute Barbatruc
Re : VBA identification par numéro de série Excel

Re

Ceci expliquerai cela:
source
What is Environ?

Environ uses standard environment variables! This are the ye olde style dos variables you can see using the "set" command.

To see these click start, run and type in "cmd" and press enter. This will open a black MS-DOS stylie command window, with a C:\> prompt (or similar!)

If you type "SET" you will then get a list of Environment variables including the old "PATH" variable.

What options?
In the list you will probably see the familiar USERNAME and COMPUTERNAME, along with ones like:

ALLUSERSPROFILE=C:\Documents and Settings\All Users
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=MYBIGFATTOWER
ComSpec=C:\WINNT\system32\cmd.exe
HOMEDRIVE=H:
HOMEPATH=\
HOMESHARE=\\MyServer\home_22$\MyUserName
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\system32
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WS F;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 13 Stepping 6, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0d06
ProgramFiles=C:\Program Files
PROMPT=$P$G
SystemDrive=C:
SystemRoot=C:\WINNT
TEMP=C:\DOCUME~1\MyUser~1\LOCALS~1\Temp
TMP=C:\DOCUME~1\MyUser~1\LOCALS~1\Temp
USERDNSDOMAIN=ME.FRED.COM
USERDOMAIN=ME
USERNAME=MYUSERNAME
USERPROFILE=C:\Documents and Settings\MyUserName
windir=C:\WINNT

These are variables which are accessible by Name or by Number order.

Where do they come from?

Most of these values are set at startup by the windows login scrips etc, but you can set you own by using the SET command...
e.g. SET USERNAME=BINGO

Sandbox Mode?
Why they arn't always safe: You could embed rather nasty commands into an environment variable, for example someone could change their USERNAME variable so that if you used it in an SQL statement it would delete all the users or change the admin password to something of their choice. (Basically the standard SQL injection techniques!)

Je viens de tester dans l'invite MSDOS: SET
J'ai bien COMPUTERNAME en 4ème position
 

degap05

XLDnaute Impliqué
Re : VBA identification par numéro de série Excel

Bonjour à tous,
En récupérant le numéro de disque dur du PC sur lequel doit fonctionner le fichier, il est possible de faire une macro qui compare ce numéro avec celui indiqué dans la macro. Si ce numéro est bon le fichier reste ouvert, sinon il se ferme.
Je n'ai pas conservé le fichier que j'avais fait, je ne peux donc pas le joindre.
Un exemple: https://www.excel-downloads.com/threads/autoriser-louverture-que-sur-un-pc-specifique.103153/
A+
 

Misange

XLDnaute Barbatruc
Re : VBA identification par numéro de série Excel

Bonjour le fil :)
Garder en tête que la solution proposée est super utile quand on veut s'assurer que la macro s'exécute sur un ordi particulier qui contient par exemple un dossier avec des fichiers à lire par la macro dedans, ou tout autre truc du même acabit. Parfait donc pour éviter un plantage parce que la macro ne serait pas lancée du bon PC, ou avec le réseau connecté.

Si le but en revanche c'est de protéger une macro (qu'on vend par exemple) pour que la classeur ne soit pas copié et utilisé d'un autre PC, la limite en termes de sécurité est... celle d'excel. Il reste assez facile pour quelqu'un de motivé de désactiver les macros, et/ou de déprotéger le classeur et le projet VBA.
 

Discussions similaires

Réponses
9
Affichages
343
Réponses
3
Affichages
445