dysorthographie
XLDnaute Accro
💡 Fonction personnalisée VBA : Obtenir les dossiers spéciaux Windows, compatible OneDrive
Bonjour à tous,
Je partage ici une fonction VBA que j’ai développée pour obtenir le chemin des dossiers spéciaux Windows (comme le Bureau, Mes Documents, Musique, etc.), de façon fiable même lorsque OneDrive est activé.
📌 Pourquoi cette méthode ?
La fonction Environ("USERPROFILE") ou Environ("OneDrive") ne donne pas toujours le chemin réel utilisé par Windows, surtout lorsque OneDrive redirige certains dossiers comme Desktop ou Documents.
Pour pallier ce problème, j’utilise l’objet Shell.Application qui interroge directement le système via son interface COM, garantissant ainsi le chemin réel, à jour et correct, quel que soit le contexte.
🔧 Exemple de code
VB:
Enum ConstEnviron
DESKTOP = &H0 ' Bureau global (tous les utilisateurs)
INTERNET = &H1 ' Internet Explorer
PROGRAMS = &H2 ' Menu Démarrer\Programmes
Controls = &H3 ' Panneau de configuration
PRINTERS = &H4 ' Imprimantes
PERSONAL = &H5 ' Documents (anciennement Mes documents)
FAVORITES = &H6 ' Favoris Internet
STARTUP = &H7 ' Menu Démarrer\Démarrage
RECENT = &H8 ' Documents récents
SENDTO = &H9 ' Envoyer vers...
BITBUCKET = &HA ' Corbeille
STARTMENU = &HB ' Menu Démarrer principal
MYMUSIC = &HD ' Musique
MYVIDEO = &HE ' Vidéos
DESKTOPDIRECTORY = &H10 ' Bureau utilisateur actuel (dossier physique)
DRIVES = &H11 ' Poste de travail (Ce PC)
NETWORK = &H12 ' Réseau
NETHOOD = &H13 ' Voisinage réseau
Fonts = &H14 ' Dossier des polices
TEMPLATES = &H15 ' Modèles
COMMON_STARTMENU = &H16 ' Menu Démarrer pour tous les utilisateurs
COMMON_PROGRAMS = &H17 ' Programmes pour tous les utilisateurs
COMMON_STARTUP = &H18 ' Démarrage pour tous les utilisateurs
COMMON_DESKTOPDIRECTORY = &H19 ' Bureau global (dossier)
APPDATA = &H1A ' Données d’application (Roaming)
PRINTHOOD = &H1B ' Voisinage d'impression
LOCAL_APPDATA = &H1C ' Données locales de l’application (non-roaming)
ALTSTARTUP = &H1D ' Alternative au Démarrage (non utilisé souvent)
COMMON_ALTSTARTUP = &H1E ' Alternative Démarrage global
COMMON_FAVORITES = &H1F ' Favoris partagés
INTERNET_CACHE = &H20 ' Cache Internet Explorer
COOKIES = &H21 ' Cookies
HISTORY = &H22 ' Historique Internet Explorer
COMMON_APPDATA = &H23 ' Données d’application partagées (ProgramData)
Windows = &H24 ' Dossier Windows
SYSTEM = &H25 ' Dossier System32
PROGRAM_FILES = &H26 ' Program Files
MYPICTURES = &H27 ' Images
PROFILE = &H28 ' Profil utilisateur
SYSTEMX86 = &H29 ' System32 32 bits sur OS 64 bits
PROGRAM_FILESX86 = &H2A ' Program Files (x86)
PROGRAM_FILES_COMMON = &H2B ' Program Files\Common Files
PROGRAM_FILES_COMMONX86 = &H2C ' Program Files (x86)\Common Files
COMMON_TEMPLATES = &H2D ' Modèles partagés
COMMON_DOCUMENTS = &H2E ' Documents partagés
COMMON_ADMINTOOLS = &H2F ' Outils d’administration partagés
ADMINTOOLS = &H30 ' Outils d’administration utilisateur
Connections = &H31 ' Connexions réseau
COMMON_MUSIC = &H35 ' Musique partagée
COMMON_PICTURES = &H36 ' Images partagées
COMMON_VIDEO = &H37 ' Vidéos partagées
RESOURCES = &H38 ' Ressources (thèmes, sons, etc.)
RESOURCES_LOCALIZED = &H39 ' Ressources localisées
COMMON_OEM_LINKS = &H3A ' Liens OEM (constructeur)
CDBURN_AREA = &H3B ' Zone de gravure de CD
COMPUTERSNEARME = &H3C ' Ordinateurs à proximité
End Enum
Function MyEnviron(env As ConstEnviron) As String
MyEnviron = CreateObject("Shell.Application").Namespace(CLng(env)).Self.Path
End Function
Private Sub test()
Debug.Print MyEnviron(PROGRAMS)
End Su
✅ Avantages
- Compatible avec OneDrive et les redirections système
- Ne dépend pas des variables d’environnement parfois obsolètes
- Facile à intégrer dans vos projets Excel