VBA: Comment obtenir les variables de système?

"Comment trouver le nom de l'utilisateur avec VBA?"

"Comment trouver le chemin du dossier temporaire?"

"Comment trouver le nom de l'ordinateur en VBA?"

Ce sont des questions que l'on rencontre assez souvent sur les forums d'aide. Ces questions ont une chose en commun: leur réponses se trouvent dans les informations sur le Système (d'exploitation). Et c'est là qu'intervient VBA!

Une des fonctionnalités plus avancées de VBA est la possibilité d'aller chercher les informations sur l'ordinateur, le système d'exploitation, l'utilisateur etc. qui sont contenues dans les différentes  variables du système.

Obtenir les informations sur le système avec VBA

Pour aller récupérer les informations sur le Système, Microsoft a mis à notre disposition une des fonctions de base de VBA: il s'agit de la fonction Environ() (cliquez sur le lien pour une description exhaustive de cette fonction).

Cette fonction utilise, comme argument, un nombre variable (habituellement une cinquantaine, le maximum étant 255) de noms de variables système telles que USERNAME (pour obtenir le nom d'utilisateur), WINDIR (pour obtenir le chemin vers le dossier de Windows) ou encore OS (pour obtenir la version du Système d'Exploitation utilisé sur la machine).

À la place de ces noms de variable, il est possible d'utiliser leur numéros. Ce n'est pas pratique pour essayer de s'en remémorer. Par contre (comme on le verra plus bas) c'est très pratique pour les lister avec une boucle numérique…

Afficher les variables système avec VBA

Et voici le code de la procédure VBA qui vous permettra de rapidement lister et afficher toutes les variables système disponibles ainsi que leur valeurs.

 

Sub AfficheInformationsSysteme()
'par Excel-Malin.com ( https://excel-malin.com )

'cette procédure affiche les noms et les contenus des variables "système" dans la feuille active
For VariableSysteme = 1 To 255
    If Environ(VariableSysteme) = "" Then Exit For
    VariableValeur = Split(Environ(VariableSysteme), "=")
    ActiveSheet.Cells(VariableSysteme, 1).Value = VariableValeur(0)
    ActiveSheet.Cells(VariableSysteme, 2).Value = VariableValeur(1)
Next VariableSysteme

End Sub

Ces informations seront listées sur la Feuille active. Il est bien sûr possible de l'utiliser différemment après modification(s)…

 

Le code suivant va afficher les résultats dans la fenêtre d'exécution de l'éditeur VBA. Idéal pour le débogage…

Sub AfficheInformationsSystemeDansVBE()
'par Excel-Malin.com ( https://excel-malin.com )

'cette procédure affiche les noms et les contenus des variables "système" dans la fenêtre d'Exécution
For VariableSysteme = 1 To 255
    If Environ(VariableSysteme) = "" Then Exit For
    VariableValeur = Split(Environ(VariableSysteme), "=")
    Debug.Print VariableValeur(0) & " : " & VariableValeur(1)
Next VariableSysteme

End Sub

 

Afficher la valeur d'une variable système en particulier

En pratique, vous  aurez probablement besoin de trouver la valeur d'une variable système en particulier. C'est bien sûr possible. Il suffit d'utiliser la fonction Environ() en passant comme paramètre le nom de la variable (ici donc username ). Pour retrouver par exemple le nom de l'utilisateur, ils vous suffit d'utiliser le code suivant:

NomUtilisateur = Environ("username")

Et il en va de même pour les autres variables système. Comme vous pouvez constater, c'est vraiment très simple.

 

Variables de système – pour quoi faire?

Les informations sur le système peuvent s'avérer très pratiques, voire incontournables, lors de développement d'une application plus complexe en VBA.

Grâce à ces informations, vous pouvez par exemple:

  • accéder au dossier temporaire de l'utilisateur, pour y stocker des informations (à la "Cookies")
  • mettre au point une gestion des droits d'utilisateurs (grâce au nom de l'utilisateur – USERNAME)
  • accéder aux différentes applications pour les lancer

Si vous avez un exemple intéressant et/ou pratique de l'utilisation des informations de système dans VBA, n'hésitez pas à nous en faire part dans les commentaires.

Pour aller plus loin en gestion du Système dans VBA

 

 

15 0

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée.

7 commentaires sur “VBA: Comment obtenir les variables de système?”