VBA/VB6 - Rép. Mes Documents+Variables Environnement

Décembre 2016

Dans l'explorateur de fichiers, le dossier Mes Documents semble être sur le root, or ce n'est pas le cas. Il est situé dans un sous-répertoire de C:\Documents and Settings. Le hic, c'est que le premier sous-répertoire prend le nom de l'utilisateur et change donc non seulement d'un PC à l'autre, mais également sur un PC multi-utilisateurs.
Le code ci-dessous permet d'avoir le répertoire de Mes Documents quel que soit l'utilisateur connecté.
Collez ce code dans un module général :

Option Explicit

Private Type SHITEMID
    cb As Long
    abID As Byte
End Type
Private Type ITEMIDLIST
    mkid As SHITEMID
End Type
Private Const CSIDL_PERSONAL As Long = &H5
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
                        (ByVal hwndOwner As Long, ByVal nFolder As Long, _
                         pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" _
                        (ByVal pidl As Long, ByVal pszPath As String) As Long


Public Function Rep_Documents() As String
    Dim lRet As Long, IDL As ITEMIDLIST, sPath As String
    lRet = SHGetSpecialFolderLocation(100&, CSIDL_PERSONAL, IDL)
    If lRet = 0 Then
        sPath = String$(512, Chr$(0))
        lRet = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)
        Rep_Documents = Left$(sPath, InStr(sPath, Chr$(0)) - 1)
    Else
        Rep_Documents = vbNullString
    End If
End Function

Exemple d'appel : Dans une feuille, collez un bouton et dans le code du bouton, collez
Private Sub CommandButton1_Click()
    Cells(5, 2) = Rep_Documents()
End Sub




Plus simple sous VB6


Sous VB6, il vous suffit d'exploiter la variable d'environnement UserProfile :
Ceci ne marche pas sous macintosh.

Fonctionne aussi sous VBA


Dim sPathUser as String
sPathUser = Environ$("USERPROFILE") & "\mes documents\"
MsgBox sPathUser

Fonctions Environnement


La fonction Environ$ sert à recevoir la valeur d'une variable d'environnement.
Par exemple, si vous auriez mis WINDIR (sous Windows), vous auriez obtenu le dossier où est installé Windows (par défaut C:\Windows\).
Oui, oui : ce sont bien les variables que vous pouvez utiliser aussi bien en Batch que dans la boite de dialogue Exécuter. Également dans un environnement de programmation tel que VB et VBA.
Sous Windows, faites la touche Windows + R (ou menu démarrer ► Exécuter) et tapez %UserProfile%, vous atterrissez dans le dossier de l'utilisateur actuel. Tapez "%UserProfile%\Mes documents" pour atterrir dans vos documents, ou tapez %WinDir% pour le dossier de Windows ... ou encore %tmp% pour les dossiers temporaires, etc ...

Variables Windows


Variables utilisateur par défaut
  • TEMP Répertoire temporaire.
  • TMP Répertoire temporaire.

Variables système

  • ComSpec Chemin d'accès pour l'interpréteur de commandes.
  • FP_NO_HOST_CHECK ?
  • NUMBER_OF_PROCESSORS ?
  • OS Renvoie l'OS en cours d'utilisation.
  • Path ?
  • PATHEXT ?
  • PROCESSOR_ARCHITECTURE Renvoie l'architecture du processeur (x86 etc ...)
  • PROCESSOR_IDENTIFIER Renvoie les identifiants du processeur.
  • PROCESSOR_LEVEL ?
  • PROCESSOR_REVISION Renvoie le N° de révision du processeur.
  • TEMP Répertoire temporaire.
  • TMP De même.
  • windir Dossier où est installé Windows.
  • SystemRoot De même.

Annexe


Si vous êtes administrateur, vous pouvez aussi changer les valeurs ou ajouter des variables d'environnement en allant dans le Panneau de configuration (en affichage classique) ► System ► Avancé ► Variables d'environnement.
Et normalement vous verrez ce que j'ai écrit.
(fait avec Windows XP Pro).

A voir également :

Ce document intitulé «  VBA/VB6 - Rép. Mes Documents+Variables Environnement  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.