Lister les codes champs des propriétés d'une seule photo

Bonjour,

Je ne sais pas ou j'ai récupéré la macro en fin de post, elle fonction très bien mais je voudrai faire une petite modification que mon niveau VBA ne me permet pas.

Il faudrait extraire les propriétés d'une seule photo qui se trouve dans le repertoire du fichier xlsm.

actuellement cette macro liste tous les fichiers du repertoire en lui donnant un chemin.

Il faudrait modifier cette ligne :

Set objfolder = objShell.Namespace("C:\Users\Utilisateur\Pictures\test")

pour aller chercher la photo test.jpg uniquement qui est dans le même repertoire que le fichier xlsm

Pour plus d'universalité, je ne voudrai pas rentrer un chemin, j'ai vu ce code par ailleurs qui fonctionne mais liste tous les fichiers du repertoire :

Set objfolder = objShell.Namespace(ThisWorkbook.Path & "\")

Cette macro fonctionne et conviendrait si l'on pouvait utilise ThisWorkBook pour une seule photo avec un nom défini (ex : test.jpg).

Sub Code_champs_proprietes()
Sheets("Code").Select
[B2:C310].ClearContents

Dim det_Headers(300)

Set objShell = CreateObject("Shell.Application")
Workbooks(1).Sheets(1).Activate
 Set objfolder = objShell.Namespace("C:\Users\Utilisateur\Pictures\test")        ' idéalement il faudrait aller chercher l'image jpg dans le repertoire ou est situé le fichier xlsm 
For i = 0 To 300
det_Headers(i) = objfolder.GetDetailsOf(objfolder.Items, i - 1)
ActiveSheet.Cells(i + 1, 2) = det_Headers(i)

Next
Workbooks(1).Sheets(1).Activate
j = 3 'colonne
For Each strFilename In objfolder.Items
For i = 0 To 300
Sheets(1).Cells(i + 2, j).Value = objfolder.GetDetailsOf(strFilename, i)
Next
j = j + 1
Next
End Sub

Pourquoi cette manip ?

J'ai constaté que suivant les versions de windows 10 et même de win 7 et 8 les codes de champs des propriétés changeaient... peut être est-ce du aussi à la version d'Office (?). Le but est de vérifier les codes puis de les récupérer et utiliser une autre macro pour faire un tableau avec tous les fichiers photos d'un autre repertoire.

Merci pour votre aide

Bonjour,

Ce sujet, du moins des sujets similaires, ont déjà été traités dans ce Forum, et si un demandeur a une question de cet ordre, on lui répondra. J'ai souvenir d'être intervenu deux fois sur ce thème : pour le calcul d'un ratio hauteur-largeur d'une photo et pour extraire la date de prise de vue. Avec sur l'un des deux une procédure de listage des propriétés permettant de répérer l'index de la propriété recherchée (et vérifier de quelle façon elle est présentée, élément qui peut également varier avec les versions successives de Windows).

Il semblait que ce soit d'ailleurs ce que tu recherchais, mais je ne comprends pas ce double listage (un me paraissait suffisant !) et comme il n'y a pas d'autre précision sur les propriétés que tu veux extraire, cela paraît quelque peu confus.

Cordialement.

Bonjour MFerrand

Merci de revenir vers moi, je te dois des explications sur ma démarche.

Comme tu le sais, les différentes versions de Windows ne donnent pas le même code champs, ce qui fait que mon fichier d'extraction de tous les exifs d'un repertoire contenant des photos n'est pas compatible suivant le PC utilisé.

Pour contourner le problème je me suis dit qu'il fallait interroger le PC pour qu'il liste ''ces codes'', par la suite, ces codes sont utilisés par le fichier d'extraction.

Y a peut être plus simple et ce n'est peut-être pas la bonne démarche. mais pour l'instant c'est fonctionnel.

Bonne journée

En général tu n'as besoins que d'un nombre de propriétés limitées, et le nombre de versions de Windows n'est pas illimité. Après avoir fait un listage sur chaque version utilisée, et récupéré les index, voire le cas échéant la façon dont la propriété est renvoyée, tu peux créer une procédure (type Function par exemple) qui renverra l'index à utiliser selon la version de Windows.

Ce qui stabilisera ton dispositif.

Cordialement.

Rechercher des sujets similaires à "lister codes champs proprietes seule photo"