Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
VBA ... Y a-t-il un moyen de déterminer le répertoire d'une bibliothèque telle que par exemple Téléchargements (Downloads), Documents (Documents), Images (Pictures ?), Musique (Music), Vidéos (Videos) ?
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(N)
Set objFolderItem = objFolder.Self
Bien tenté, mais chez moi c'est différent les bibliothèques n'ont pas les emplacements par défaut.
Cependant l'Application.DefaultFilePathdonne au moins les Téléchargements.
Merci
Dim objShell As Object
Dim objFolder As Object, objFolderItem As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(N)
Set objFolderItem = objFolder.Self
J'ai regroupé 2 méthodes dans ce fichier.
La méthode par NameSpace que tu utilises dans ton code est beaucoup plus exhaustive que celle que j'utilise par SpecialFolders.
Y a un truc que je n'aurais pas deviné sans ton code c'est cette chose qui vient de l'espace !
Sauf si cela m'a échappé dans votre fichier, le problème avec SpecialFolders c'est qu'il ne remonte que Documents, mais pas Images,Musiques et Vidéos.
Et aucune des méthodes ne permet de trouver le chemin de Téléchargements.
Oui c'est correct.
C'est pour ça que j'ai précisé que ta méthode donnait un résultat plus exhaustif.
Bonjour @patricktoulon,
Que les index soient en hexa ou en décimal, ça n'a pas d'importance et tu en as une liste qui n'est qu'un sous-ensemble. Regarde la feuille NameSpace du classeur que j'ai posté et tu en trouveras 49 au total (en excluant les ::{...}.
oulah !! non mon pauvre ami
surtout avec une variable numérique incrémentée dans une boucle
Attention en decimal selon la version d'excel ou de windows ça fonctionne pas toujours
la preuve en image
VB:
Function getPath(x) As String
getPath = ""
On Error Resume Next
getPath = CreateObject("Shell.Application").Namespace(x).self.Path
On Error GoTo 0
End Function
Sub testX2()
Dim i As Long
For i = 1 To 50
Cells(i, 1) = i
Cells(i, 2) = getPath(i)
Next
End Sub
tandis qu'en hexa encodé en dur ça marche partout 😉
En direct objShell.Namespace(vDir) ne fonctionne pas avec un Integer <i>, il attend un Variant.
Dans ce cas il faut lui passer un CVar(i).
De toutes façons je ne l'appelle pas en direct et passe un Integer <i> ByVal à une fonction qui attend un Variant et qui donc fait la conversion à ce niveau (même si j'ai laissé traîné un CVar(i) inutile)
J'ai rechargé le fichier du Post #8 car j'y ai écrit une bêtise.
On peut accéder aux SpecialFolders par leurs noms dans une variable à condition que cette variable soit un Variant (et pas un String)
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD