XL 2019 A propos de la francisation de Shell.application

fanch55

XLDnaute Barbatruc
Bonjour à toute la communauté,
Ci-dessous une sub qui me titille fortement : :confused:
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 ...) o_O

Ceci pour Info ...
 

Lolote83

XLDnaute Barbatruc
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
1632037154165.png

Suite exécution macro
1632037278734.png

Est-ce du au fait qu'il y ai des sous-dossiers ???
A creuser
@+ Lolote83
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
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.
 

fanch55

XLDnaute Barbatruc
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 ...
 

Pièces jointes

  • InfosFichier.xlsm
    39.7 KB · Affichages: 0
Dernière édition:

Statistiques des forums

Discussions
311 540
Messages
2 080 532
Membres
101 234
dernier inscrit
Layani89