"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.
Sommaire
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 de 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.
1 2 3 4 5 6 7 8 9 10 11 12 |
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…
1 2 3 4 5 6 7 8 9 10 11 |
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:
1 |
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
Si vous devez, dans vos macros, gérer l'environnement de travail, ces articles-ci vous seront peut-être utiles:
- Vous trouverez les explications complètes ainsi que la liste des variables disponibles dans la page dédiée à la fonction Environ().
- Pour trouver le chemin du Bureau (Desktop), c'est un rien plus compliqué.
- Trouver l'identifiant unique du fichier sur le réseau
- Trouver la résolution de l'écran en VBA
Et de manière plus générale, voici quelques tutoriels VBA bien pratiques:
- Liste de toutes les fonctions VBA
- Envoyer un email avec VBA
- VBA: Suivre l'activité de l'utilisateur (log)
- Utiliser RECHERCHEV en VBA
- Calculer la SOMME en VBA (différentes méthodes)
7 commentaires sur “VBA: Comment obtenir les variables de système?”
Bonjour, je voudrais savoir comment déclarer un nombre complexe en VBA
Bonjour Danzo,
de manière générale, les nombres que vous pouvez déclarer en VBA sont:
Byte
,Integer
,Long
,Single
,Double
etDecimal
.Si vous voulez travailler avec des nombres complexes, vous devrez probablement passer par des fonctions spécifiques comme:
J'espère que j'ai bien compris votre question.
Martin
Bonjour,
Je voudrai savoir comment faire pour afficher le contenu de la fonction AfficheInformationsSysteme dans un mail.
Merci
Bonjour,
tout d'abord, voici le code qui vous mettra tout dans une chaîne de caractères (1 valeur par ligne):
MonSysteme = ""
For VariableSysteme = 1 To 255
If Len(Environ(VariableSysteme)) > 0 Then MonSysteme = MonSysteme & Environ(VariableSysteme) & Chr(13) & Chr(10)
Next VariableSysteme
Vous devez alors utiliser ce code comme le "corps" de l'email. voir ici: https://excel-malin.com/codes-sources-vba/envoyer-un-email-avec-excel/
Suivez les instructions sur cette page-là et dans
TestEnvoiEmail_Variables
:– vous insérez le code
MonSysteme = ""
For VariableSysteme = 1 To 255
If Len(Environ(VariableSysteme)) > 0 Then MonSysteme = MonSysteme & Environ(VariableSysteme) & Chr(13) & Chr(10)
Next VariableSysteme
MonContenu = MonSysteme
à la ligne 9
– vous effacez la ligne:
MonContenu = "Bonjour Jean, voici un petit message de test... Avec un fichier en plus."
– vous remplacez les valeurs par les vôtres (destinataire, objet,…)
– et voilà, le tour est joué!
J'espère que cela vous aidera. Cordialement, Martin
Merci beaucoup. Tout à fonctionner.
Merci d'y avoir consacré du temps.
Bonjour,
j'ai créé un CRM en VBA pour ma pizzeria qui me donne les points de fidélités et cadeaux offerts aux clients, en fonction du nom ou du numéro de téléphone ce ceux-ci.
Je souhaiterai maintenant , via l'application "Mon téléphone " de Windows, aller chercher le numéro de téléphone de l'appelant afin que sa fiche apparaisse.
Je ne trouve pas l'endroit où Windows met cette variable "numéro de téléphone".
Si quelqu'un peut m'aiguiller, ce serait sympa.
Merci de m'avoir lu.
Yann.
Bonjour Yann,
sur internet, j'ai trouvé que les fichiers se trouvent dans un dossier de ce style:
C:\Users\UserName\AppData\Local\Packages\Microsoft.YourPhone_8wekyb3d8bbwe\LocalCache\Indexed\C919D6A9-227C-4C47-84C8-2B876E4FD304\User\PhoneModel\Recent Photos
il vous faudra changer le nom d'utilisateur (UserName) et probablement franciser le chemin (Users -> Utilisateurs).
Et n'oubliez pas que si vous voulez voir ce dossier dans l'Explorateur Windows, le dossier
AppData
est un dossier système qui est, par défaut, caché. Vous devrez donc choisir dans les options du Windows Exlorer qu'il affiche les "Éléments masqués".Cordialement, Martin