VBA: Comment obtenir les variables de système? 5


"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. Et c'est là qu'intervient VBA!

Une des fonctionnalités 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 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). A la place du nom de variable, il est possible d'utiliser son numéro. 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 VBA qui vous permettra de rapidement lister et afficher toutes les variables 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
    VariableValeur = Split(Environ(VariableSysteme), "=")
    ActiveSheet.Cells(VariableSysteme, 1).Value = VariableValeur(0)
    ActiveSheet.Cells(VariableSysteme, 2).Value = VariableValeur(1)
Next VariableSysteme

End Sub

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.

Vous pouvez:

  • accéder au dossier temporaire de l'utilisateur, pour y stocker des informations (à la "Cookies")
  • créer la gestion des droits d'utilisateurs (grâce au nom de l'utilisateur – USERNAME)
  • accéder aux 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

 

 

12 0



Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

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

    • excel-malin.com Auteur de l’article

      Bonjour Danzo,
      de manière générale, les nombres que vous pouvez déclarer en VBA sont: Byte, Integer, Long, Single, Double et Decimal.

      Si vous voulez travailler avec des nombres complexes, vous devrez probablement passer par des fonctions spécifiques comme:

      Public Function NBcomplexe(a As Integer, b As Integer, i As Integer) 
         NBcomplexe = a + i*b 
      End Function

      J'espère que j'ai bien compris votre question.
      Martin

  • Retard

    Bonjour,
    Je voudrai savoir comment faire pour afficher le contenu de la fonction AfficheInformationsSysteme dans un mail.
    Merci

    • excel-malin.com Auteur de l’article

      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