VBA Environ: Guide Complet des Variables Système dans Excel

La fonction VBA Environ() permet d'accéder aux valeurs des variables du système. Cette fonction, fort technique, sera utile surtout aux utilisateurs avancés de VBA. Avec l'exception du cas où avez besoin d'obtenir le nom de l'utilisateur – ce cas de figure peut être pratique même aux débutants.

Si vous créez des applications en Excel, cette fonction vous permettra de rendre votre code suffisamment flexible pour qu'il puisse être utilisable sur le maximum de machines. Il vous seras également possible de créer toute la gestion des droits d'utilisateurs. Ces possibilités peuvent donc facilement transformer un "fichier tableur" (.XLSM) en une vraie application!

Le syntaxe de la fonction Environ()

Cette fonction peut être utilisée avec deux types d'arguments:

  • les noms de variables (en tant que String) – notez que ces noms ne sont pas sensibles aux majuscules et minuscules (donc vous pouvez utiliser "username" ou "UserName").
  • les chiffres de 1 à 255 (en tant qu' Integer) qui représentent les numéros de position des variables. Ceci peut être utile si vous ne connaissez pas le nom exact de la variable ou si vous voulez faire une boucle pour vérifier toutes les variables (Le code pour afficher toutes les variables et toutes les valeurs se trouve ici – FAQ VBA: Comment obtenir les variables de système? )

Remarque:
Sachez que le nombre de variables disponibles peut varier d'un système à l'autre. Le nombre maximum est 255 mais habituellement, vous en trouverez 40-50.
Les noms de variables sont classées de A à Z ce qui peut compliquer l'utilisation du numéro de variable en tant qu'argument de la fonction Environ(). La variable (on parle bien de variable et pas de la valeur de la variable) qui se "cache" derrière Environ(36) dans un système peut être différente de Environ(36) dans un autre système.

L'utilisation des numéros de variable devrait donc se limiter à l'énumération des variables disponibles et ne pas être utilisée pour aller chercher une variable en particulier…

La syntaxe de la fonction est donc la suivante:

x = Environ("NomDeLaVariable")
ou
x = Environ(NumeroDePositionDeLaVariable)

Comment cela marche en pratique

Selon si vous utilisez le nom de la variable système ou le numéro, le résultat sera différent.

  • Si vous utilisez le nom, le résultat va contenir directement la valeur de cette variable car le nom de la variable est précis et est le même sur tous les ordinateurs. Exemple: Environ("LocalAppData") va vous renvoyer quelque chose comme "C:\Users\Jean_Dupont\AppData\Local"
  • Si vous utilisez le numéro, le résultat va contenir en même temps le nom de la variable et la valeur de la variable (!).
    Ceci est nécessaire car par exemple Environ(18) sur un PC contient une autre variable que Environ(18) sur un autre PC. Le résultat va donc ressembler à ceci: "PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC".
    Comme vous pouvez le voir, le résultat a le format suivant: "NomDeVariable=ValeurDeVariable". Vous devrez donc probablement l'adapter à vos besoins.
  • De manière générale, on utilise le nom de variable lors d'une utilisation "normale". Les numéros sont utilisés surtout lors du débogage.

Pourquoi utiliser la fonction Environ()?

Il peut être intéressant, voir indispensable, d'obtenir certaines informations sur le système quand vous créez une macro VBA. Parmi les variables accessibles via la fonction Environ(), on peut trouver, entre autres:

  • les chemins vers différents dossiers de système comme:
    • ProgramFiles – retourne le chemin du dossier "Program Files"
    • TEMP – retourne le chemin du dossier temporaire de l'utilisateur
    • Windir – retourne le dossier de Windows
  • les informations concernant l'ordinateur et l'utilisateur comme:
    • OS – retourne la version de Windows installée sur l'ordinateur
    • COMPUTERNAME – retourne le nom de l'ordinateur
    • USERNAME – retourne le nom de l'utilisateur

Remarque: si la variable demandé n'existe pas, la fonction ne retourne pas une erreur mais une chaîne vide ""


Exemples d'utilisation de la fonction Environ()

Fini la théorie, voici quelques cas pratiques en exemples d'utilisation de la fonction Environ().

Afficher le nom de l'utilisateur avec la fonction Environ()

Ceci va retourner une valeur semblable à "Pierre Malin" ou "AD45236". En fait, il s'agit du nom de l'utilisateur tel qu'il apparaît dans le système. Dans le monde des entreprises, le nom d'utilisateur aura, le plus souvent, la forme d'une valeur numérique ou d'un autre identifiant (= numéro d'employé). Ne soyez donc pas étonnés de voir un "nom d'utilisateur" qui ressemble à "U201654".

Trouver le dossier "Program Files" avec Environ()

ceci va retourner une valeur semblable à "C:\Program Files"

Trouver la version de Windows avec Environ()

ceci va retourner par exemple: "Windows_NT"

Liste des variables système disponibles à la fonction Environ()

Voici la liste des variables ainsi que la forme finale de la fonction qui sera utilisé dans le code VBA. Pour rappel: toutes ces variables ne sont pas nécessairement présentes sur tous les ordinateurs.

ALLUSERSPROFILE x = Environ("ALLUSERSPROFILE")
APPDATA x = Environ("APPDATA")
BEST_IPC x = Environ("BEST_IPC")
CommonProgramFiles x = Environ("CommonProgramFiles")
COMPUTERNAME x = Environ("COMPUTERNAME")
ComSpec x = Environ("ComSpec")
FP_NO_HOST_CHECK x = Environ("FP_NO_HOST_CHECK")
HOMEDRIVE x = Environ("HOMEDRIVE")
HOMEPATH x = Environ("HOMEPATH")
HOMESHARE x = Environ("HOMESHARE")
LOCALAPPDATA x = Environ("LOCALAPPDATA")
LOGONSERVER x = Environ("LOGONSERVER")
LONGUSERID x = Environ("LONGUSERID")
NUMBER_OF_PROCESSORS x = Environ("NUMBER_OF_PROCESSORS")
OS x = Environ("OS")
Path x = Environ("Path")
PATHEXT x = Environ("PATHEXT")
PROCESSOR_ARCHITECTURE x = Environ("PROCESSOR_ARCHITECTURE")
PROCESSOR_IDENTIFIER x = Environ("PROCESSOR_IDENTIFIER")
PROCESSOR_LEVEL x = Environ("PROCESSOR_LEVEL")
PROCESSOR_REVISION x = Environ("PROCESSOR_REVISION")
ProgramData x = Environ("ProgramData")
ProgramFiles x = Environ("ProgramFiles")
PSModulePath x = Environ("PSModulePath")
PUBLIC x = Environ("PUBLIC")
SESSIONNAME x = Environ("SESSIONNAME")
SystemDrive x = Environ("SystemDrive")
SystemRoot x = Environ("SystemRoot")
TEMP x = Environ("TEMP")
TMP x = Environ("TMP")
TNS_ADMIN x = Environ("TNS_ADMIN")
UATDATA x = Environ("UATDATA")
USERDNSDOMAIN x = Environ("USERDNSDOMAIN")
USERDOMAIN x = Environ("USERDOMAIN")
USERDOMAIN_ROAMINGPROFILE x = Environ("USERDOMAIN_ROAMINGPROFILE")
USERNAME x = Environ("USERNAME")
USERPROFILE x = Environ("USERPROFILE")
WecVersionForRosebud.2B40 x = Environ("WecVersionForRosebud.2B40")
windir x = Environ("windir")
windows_tracing_flags x = Environ("windows_tracing_flags")
windows_tracing_logfile x = Environ("windows_tracing_logfile")

Code VBA pour extraire toutes les informations système d'un coup

Si vous souhaitez vous faire une idée, il est très facile de créer une boucle qui vous affichera toutes les informations sur le système et sur l'utilisateur d'un seul coup. Vous pouvez utiliser le code qui suit. Il listera toutes les propriétés disponibles dans la colonne "A" de la première Feuille du Classeur.

Ce qui vous donnera comme résultat:

VBA: fonction Environ - résultats
VBA: fonction Environ – résultats

Pour aller plus loin en VBA…

Pour finir, je vous propose quelques articles qui pourraient vous intéresser pour votre utilisation de VBA.

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Commentaire sur “VBA Environ: Guide Complet des Variables Système dans Excel”