Bonjour à toute la communauté,
Ci-dessous une sub qui me titille fortement :
VB:
Sub Test_Vidéo()
Set objFolder = CreateObject("Shell.Application").Namespace(&HE)
Dossier = objFolder.self.Path
fichier = objFolder.GetDetailsOf(objFolder.Items.Item(1), 191)
Set objFolder = Nothing
MsgBox "mon dossier Windows est " & Dossier & vbLf & "Le 1er fichier/dossier est " & fichier
End Sub
Cette sub récupère des infos du 1er fichier ou dossier dans le dossier "Mes Vidéos" ( par exemple)
Je suis dubitatif sur la justesse du résultat retourné, je suis resté un sacré moment pour savoir pourquoi je n'arrivai pas à exploiter ce fichier ,
avant de m'apercevoir que Vidéo était en fait Video ( sans l'accent ...)
Bonjour Fanch55,
Je viens de tester ton code chez moi.
Le répertoire est bien trouvé mais pas de fichier. Portant j'ai bien des fichiers
Suite exécution macro
Est-ce du au fait qu'il y ai des sous-dossiers ???
A creuser
@+ Lolote83
Bonjour Fanch, Lolote,
Le chemin "réel" du dossier est en C:/Users/xxx/Video ( sans accent, c'est en anglais )
Le fichier cherché est en C:/Utilisateur/xxx/Vidéos, ça ne correspond pas au chemin réel du dossier, mais simplement à la traduction dans l'explorateur.
Le chemin du premier fichier est C:/Users/xxx/Video/toto.jpg.
Sub Test_Vidéo()
Set objFolder = CreateObject("Shell.Application").Namespace(&HE)
Dossier = objFolder.self.Path & "\"
MsgBox "mon dossier Windows est " & Dossier & vbLf & "Le 1er fichier/dossier est " & Dir(Dossier)
End Sub
Merci à tous de votre participation .
Un classeur pour illustrer le propos, le code est dans la feuille Infos.
Cliquer sur l’Icône dossier.
Attention au nombre max d'items et d’Éléments à scanner, les temps d'exécution en sont dépendants .
Ce que je voulais souligner, c'est que même avec des moyens aussi "sérieux" que le GetDetailsOf,
on peut avoir des informations erronées tout au moins dans le nom des dossiers dits spéciaux .
Cette information est par la suite inexploitable car on ne trouve pas le fichier et pour cause ....
Donc si on fait une liste des fichiers avec Shell.application dans le genre ci-dessous:
VB:
Mondir = &HE
Set objFolder = CreateObject("Shell.Application").Namespace(Mondir)
For Each File In objFolder.Items
Info = objFolder.GetDetailsOf(File, 194)
Next
Set objFolder = Nothing
Il ne faut pas se fier au GetDetailsOf(File, 194),
mais plutôt au File.Path ...
Tiens, pour le fun, j'ai fait le test sur le dossier Downloads, cela corrobore bien ce fait ...