dysorthographie
XLDnaute Barbatruc
💡 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
 
	 
 
		