Macro pour extraire les exif photo

petitbuzuc

XLDnaute Nouveau
Bonjour à tous

j'ai beaucoup cherché cet am et je suis au point mort ... je sollicite donc votre aide et votre expertise !

je démarre en photo et je cherche à extraire sous excel les exif de la photo (programme : auto, priorité vitesse ou ouverture, ISO, focale, ouverture, temps d'expo)... afin ensuite de les intégrer dans le nom de mes fichiers et de pouvoir faire des tri, des recherches, des comparaisons plus faciles selon les paramètres utilisés pour la prise de photo et m'aider à progresser en photo.
Je sais que d'autres logiciels permettent de les voir, mais mon but est de renommer mon fichier avec.

j'aimerai faire un test unitaire en indiquant une photo précise, et que ca me ressorte dans les différentes colonnes les exifs.

J'ai vu ici (https://www.excel-downloads.com/threads/donnees-exif-specifiques-au-domaine-de-la-photo.162963/) le fichier Lecture_EXIF.zip :
Il semble très complet, mais trop complet (et complexe vu mon niveau) pour moi : je ne cherche pas à avoir de visualisation de l'image, ni faire une "grille" de mes photos. Et je suis bien incapable de l'adapter car je n'y comprends rien.

J'ai vu ici (https://www.excel-downloads.com/threads/exif-iptc-les-lire-les-ecrire.126856/) le fichier
Exif_JPG.xls : il est beaucoup plus simple et plus proche de ce que je cherche

sauf que je n'ai pas les propriétés photos mais 50 propriétés assez générale
'0=Nom '1=Taille '2=Type '3=Date de modification '4=Date de création '5=Date d'accès '6=Attributs '7=État
'8=Propriétaire '9=Auteur '10=Titre '11=Objet '12=Catégorie '13=Pages '14=Commentaires '15=Copyright
'16=Artiste '17=Titre de l'album '18=Année '19=Numéro de piste '20=Genre '21=Durée '22=Débit '23=Protégée '24=Modèle d'appareil photo '25=Date du cliché '26=Dimensions '27= '28= '29=Nom de l'épisode '30=Description du programme '31= '32=Taille de l'échantillon audio '33=Taux d'échantillonnage audio '34=Chaînes '35=Entreprise '36=Description '37=Version du fichier '38=Nom du produit '39=Version du produit '40=Profil '41=Largeur '42=Hauteur '43=Durée '44=Débit binaire '45=Débit '46=Taux d'échantillonnage '47=Keywords '48= '49= '50= ... !?


j'ai aussi cherché la norme exif et les données qui m’intéressent http://www.exiv2.org/tags.html
et sa version complete pdf ici http://www.cipa.jp/std/documents/e/DC-008-2012_E.pdf

bref, j'ai creusé par mal mais je n'arrive pas à faire comme la macro Exif_JPG.xls mais avec les exifs photos (ExposureProgram, ISOSpeedRatings, focalLength, ApertureValue, ...)


merci d'avance (pour la partie charger les photos d'un dossier et les renommer, je me débrouille ;) )

ps : je suis sous win7 et office 2010
ps2 : si je dois rajouter des librairies, pouvez vous m'indiquer la marche à suivre svp :rolleyes:
 

Pièces jointes

  • Exif_JPG.xls
    48 KB · Affichages: 91
  • Lecture_EXIF.zip
    77.7 KB · Affichages: 80

MJ13

XLDnaute Barbatruc
Bonjour à tous

Meilleurs vœux pour cette nouvelle année. :)

C'est marrant, hier, je cherchais en VBA comment modifier la date d'une photo, mais je n'ai pas trouvé. :(

Par contre j'ai trouvé une routine pour extraire les Exifs Tags un peu comme un de tes codes. En fait, il faut aller au delà de 50 pour avoir les valeurs d'ouverture, de durée d'exposition...

VB:
Sub LireExifTags()
Dim det_Headers(355)
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace("C:\Img\")
Workbooks(1).Sheets(1).Activate
For i = 0 To 355
det_Headers(i) = objFolder.GetDetailsOf(objFolder.Items, i)
ActiveSheet.Cells(1, i + 1) = det_Headers(i)
Next
Workbooks(1).Sheets(1).Activate
j = 2
For Each strFileName In objFolder.Items
For i = 0 To 355
Sheets(1).Cells(j, i + 1).Value = objFolder.GetDetailsOf(strFileName, i)
Next
  j = j + 1
Next
End Sub
 

petitbuzuc

XLDnaute Nouveau
Bonne et heureuse année à tous !


Mais c'est génial ça, Michel ! merci bcp !
j'avais tenté d'aller jusqu'à 100 mais pas au dela :rolleyes:

du coup, j'étais en train de me galérer avec la bibliotheque clGdiPluis qui est super puissante mais très compliquée ! et surtout, je n'arrivais pas à exploiter les nombres de type "rationnal".
Ici c'est déjà tout fait !
j'ai juste fait un nouvel classeur en format xlsm pour avoir + de 256 colonnes car en xls, ça plantait ! merci bcp !

j'ai une derniere question, plus spécifique : sur mon boitier nikon, j'ai un mode sport, nuit, paysage, portrait (+ auto, priorité ouverture, priorité vitesse, manuel)

Pour les modes sport, nuit, paysage, portrait et auto, j'ai toujours
DSC_0363-auto - Exif 0.JPG : Programme d’exposition = inconnu ; Mode programmé = Non défini
DSC_0364-P - Exif 2.JPG : Programme d’exposition =Normale ; Mode programmé = Programme normal
DSC_0365-S - Exif 4.JPG : Programme d’exposition =Priorité de fermeture ; Mode programmé = Priorité de fermeture
DSC_0366-A - Exif3.JPG : Programme d’exposition =Priorité d’ouverture ; Mode programmé = Priorité d’ouverture
DSC_0367-M - Exif 1.JPG : Programme d’exposition =Manuelle ; Mode programmé = Manuel
DSC_0368-nuit - exif 0.JPG : Programme d’exposition =Inconnue ; Mode programmé = Non défini
DSC_0369-sport - exif 0.JPG : Programme d’exposition =Inconnue ; Mode programmé = Non défini
DSC_0370-macro - exif 0.JPG : Programme d’exposition =Inconnue ; Mode programmé = Non défini
DSC_0371-paysage - exif 0.JPG : Programme d’exposition =Inconnue ; Mode programmé = Non défini
DSC_0372-portrait - exif 0.JPG : Programme d’exposition =Inconnue ; Mode programmé = Non défini
DSC_0373-sans flash - exif 0.JPG : Programme d’exposition =Inconnue ; Mode programmé = Non défini
DSC_0374-auto - exif 0.JPG : Programme d’exposition =Inconnue ; Mode programmé = Non défini



pourtant, sur mon boitier, quand on lit les infos de la photo, on sait bien si on a pris en mode sport ou macro ...

sais tu comment je peux différencier cette donnée vu que rien dans l'entête ne semble les différencier ?
 

MJ13

XLDnaute Barbatruc
Re

Il faudrait voir si en allant au delà de 355, il y aurait d'autres paramètres.

Sinon, je ne pourrais pas t'aider plus, car chaque appareil photo a ses spécificités et souvent des logiciels propre à chaque marque.
 

Hervé S.

XLDnaute Nouveau
Bonjour à tous,

J’avais déjà un fichier pour nommer en masse des photos avec la date inversée de manière à ce que l'ordre alphabétique corresponde à l'ordre chronologique. J’ai adapté et intégré le fichier de Roland_M ou de petitbuzuc (?) dans mon fichier, afin d’avoir toutes les caractéristique Exif des photos.

Dans un fichier Exif, les infos spécifiques photos vont jusqu’au numéro 273. D’où l’impossibilité de les traiter avec le fichier Excel 2003 proposé ci-dessus, qui ne comprends que 256 colonnes. J’ai ensuite filtré dans le VBA sur les numéros d’information intéressantes afin de n’avoir uniquement celles-ci dans Excel. Pour info il est difficilement possible de placer les données Exif dans un ordre précis (à moins de créer une variable pour chaque donnée et autant de condition SI. Si vous avez une autre idée…)

J’aime bien faciliter la sélection du dossier contenant les photos. Donc, par défaut, celles-ci sont à placer toujours dans le même dossier. Si vous préférez choisir manuellement un dossier, le code VBA correspondant est dans le fichier et il est commenté. Il faut juste faire les modifs : décommenter et commenter les bons codes.

Voilà le fichier à votre disposition. N'hésitez pas à me faire un retour :D. Merci à vous.

Infos Exif utilisées : 12'Prise de vue, 30'Modèle d'appareil photo, 31'Dimensions, 32'Marque appareil photo, 259'Programme d’exposition, 260'Temps d’exposition, 261'Focale, 262'Mode flash, 263'Distance focale
 

Pièces jointes

  • Photo rename ED.xlsm
    250.8 KB · Affichages: 115
Dernière édition:

azerty129

XLDnaute Nouveau
Bonjour à tous,

J’avais déjà un fichier pour nommer en masse des photos avec la date inversée de manière à ce que l'ordre alphabétique corresponde à l'ordre chronologique. J’ai adapté et intégré le fichier de Roland_M ou de petitbuzuc (?) dans mon fichier, afin d’avoir toutes les caractéristique Exif des photos.

Dans un fichier Exif, les infos spécifiques photos vont jusqu’au numéro 273. D’où l’impossibilité de les traiter avec le fichier Excel 2003 proposé ci-dessus, qui ne comprends que 256 colonnes. J’ai ensuite filtré dans le VBA sur les numéros d’information intéressantes afin de n’avoir uniquement celles-ci dans Excel. Pour info il est difficilement possible de placer les données Exif dans un ordre précis (à moins de créer une variable pour chaque donnée et autant de condition SI. Si vous avez une autre idée…)

J’aime bien faciliter la sélection du dossier contenant les photos. Donc, par défaut, celles-ci sont à placer toujours dans le même dossier. Si vous préférez choisir manuellement un dossier, le code VBA correspondant est dans le fichier et il est commenté. Il faut juste faire les modifs : décommenter et commenter les bons codes.

Voilà le fichier à votre disposition. N'hésitez pas à me faire un retour :D. Merci à vous.

Infos Exif utilisées : 12'Prise de vue, 30'Modèle d'appareil photo, 31'Dimensions, 32'Marque appareil photo, 259'Programme d’exposition, 260'Temps d’exposition, 261'Focale, 262'Mode flash, 263'Distance focale
Bonjour Hervé,
Déjà, merci beaucoup pour le fichier, il fonctionne très bien. Mais pour moi, il y a un problème au niveau de la prie de vue ; effectivement, c'est plutôt la date de modification de la photo que de la prise de vue. J'ai essayé de la remplacer, mais sans succès. pourrais-tu m'aider ?
Merci d'avance

j'ai rajouté pour la prise de vue

Dim Tph(), chDph$, nPh$, ph%
chDph = "c" 'chemin du fichier
nPh = Dir(chDph & "\*.jpg")
Do While nPh <> ""
ph = ph + 1: ReDim Preserve Tph(1, ph)
Tph(0, ph) = Replace(nPh, ".jpg", "", , , vbTextCompare)
Tph(1, ph) = DPrVue(chDph, nPh)
nPh = Dir()
Loop
Tph(0, 0) = "Photo": Tph(1, 0) = "Prise de vue"


With ActiveSheet.Range("A1").Resize(ph + 1, 2)
.Value = WorksheetFunction.Transpose(Tph)
End With
 

Discussions similaires

Réponses
6
Affichages
510