Importer des noms de photos et leur date de prise de vue

Bonjour à tous,

J'ai besoin d'aide pour importer dans Excel, les noms de fichiers d'un dossier, qui sont des photos (JPG), ainsi que leur date et heure de prise de vue. Ces photos ont été prises avec 3 appareils différents et je veux les interclasser selon leur date/heure de prise de vue, afin de les identifier et les traiter de manière optimale.

j'ai utilisé plusieurs macros proposées sur le net, mais elles fournissent la date/heure de création du fichier sur mon DD, c'est à dire le moment ou j'ai recopié le contenu de chaque carte SD sur mon micro !!

J'ai compris que la date d'un cliché était une "propriété" du fichier et qu'il existe une commande VBA pour la récupérer (properties (11)), mais je n'arrive pas à trouver la bonne syntaxe.

Quelqu'un pourrait-il m'aider ?

Merci par avance.

Bonsoir,

Sous forme de fonction :

Function DPrVue(ByVal ChDos, ByVal Fimg)
    Dim shApp As Object, fld As Object, Fich As Object
    Set shApp = CreateObject("Shell.Application")
    Set fld = shApp.Namespace(ChDos)
    Set Fich = fld.items.Item(Fimg)
    DPrVue = fld.getdetailsof(Fich, 12)
End Function

Exemple pour tester :

Sub TestDatePriseVue()
    Dim chemin, fichier
    chemin = "H:\Images"
    fichier = "IMG_5875.jpg"
    MsgBox DPrVue(chemin, fichier)
End Sub

Evidemment tu mets le chemin et le nom de fichier qui convient à ton test.

Je suppose que tu listes les noms de fichiers... à chaque nom tu pourras appeler la fonction pour récupérer la date de prise de vue.

Il est fort possible que tu aies à retraiter ces dates pour les rendre utilisables...

L'index de la propriété est 12 (et non 11) chez moi (Win 7). Cela peut varier avec le système d'exploitation...

Cordialement.

Merci beaucoup pour cette rapide réponse !!

Tout d'abord la fonction marche bien, dès lors qu'on précise l'extension du fichier (ici JPG).

Mais le résultat parait dans une Box (commande MsgBox ?), ce qui ne m'intéresse pas, car je ne peux rien en faire : Comment puis-je coller automatiquement ce résultat dans une feuille Excel ?, tant qu'à faire à côté du nom du fichier, qui est déjà dans la feuille ...

Et comme j'ai encore plus de 3.000 photos à traiter, Il me faudrait une boucle, évidemment.

Je peux à peu près me débrouiller pour positionner le résultat et construire la boucle, mais ne suis pas très sûre de moi, alors si je n'abuse pas de votre temps, je me permets de vous solliciter à nouveau.

Merci par avance de votre aide !!!

Bon !

En écrivant :

j'ai utilisé plusieurs macros proposées sur le net, mais elles fournissent la date/heure de création du fichier sur mon DD, c'est à dire le moment ou j'ai recopié le contenu de chaque carte SD sur mon micro !!

tu exprimes clairement que ton problème est la récupération de la propriété date de prise de vue, et tu laisses penser en même temps que tu es en mesure de lister tes photos (disposes d'une procédure pour le faire).

J'ai donc répondu à cette question !

La proc. de test est juste là pour tester ! Et t'indiquer en même temps (le cas échéant !) comment s'utilise une fonction... Au lieu d'afficher le résultat renvoyé par la fonction dans une MsgBox, on peut tout autant l'affecter à une variable, l'affecter à une cellule, la placer dans un tableau dans lequel tu constitues la liste des noms de photos avec dates en regard... Bref ! à toi de l'intégrer dans ta procédure selon les modalités que tu utilises pour lister (que tu n'as pas précisées ni illustrées, et que par conséquent j'ignore) !

Cordialement.

NB- L'extension d'un fichier fait intégralement partie de son nom. Le nom est toujours incomplet sans l'extension. Ce n'est pas une nouveauté !

Si tu en est à ne pas afficher les extensions de fichiers sur ta machine (dans la foulée des facéties de Microsoft qui les masque par défaut), il est grand temps de faire le contraire pour pouvoir travailler correctement.

Je te remercie de ta réponse.

Bien évidemment, mes fichiers ont leurs extensions affichés dans mes dossiers. Simplement, j'ai testé avec les noms de fichiers importés dans Xls, sans leur extension qui est inutile ici.

Il y a en effet de nombreuses macros qui importent dans Excel la liste des fichiers d'un dossier, avec leurs attributs (sauf celui qu'il me faut...). J'ai tenté d'inclure ta fonction dans une d'entre elle qui marche bien, mais je n'y arrive pas, je ne suis pas assez expérimentée pour celà. Pas grave, je vais continuer comme avant, à la main...

Merci quand même, ta fonction me sera peut-être utile un jour; ou à quelqu'un d'autre.

Bonjour,

C'est toi qui voit...

Une macro qui s'exporte et peut s'utiliser telle quelle, c'est qu'elle a été conçue à cette fin. Une fonction est généralement exportable : il suffit de l'appeler en lui passant les arguments requis et de recueillir le résultat, mais ce n'est pas le cas d'une macro standard devant réaliser une suite d'opérations dans un contexte défini. Dans l'immense majorité des cas, il faut l'adapter ! Une macro est un instrument de précision, qui doit être parfaitement adaptée à la configuration et à la situation dans laquelle elle doit opérer, pour fonctionner efficacement.

Si on est capable de procéder à l'adaptation, c'est en général qu'on est capable de l'écrire sans avoir à chercher un code qui pourrait convenir (toujours plus ou moins mal, car écrit dans un autre contexte), et donc alors autant l'écrire à partir d'une analyse de la question !

On voit déjà assez souvent les problèmes d'adaptations posés par une macro écrite pour répondre à une question précise, problèmes résultant du fait que l'intéressé n'a pas été foutu de fournir un modèle correspondant exactement à sa configuration ! (et n'est pas en mesure d'utiliser correctement la réponse en l'adaptant...)

Les fichiers sont organisés en dossiers (ou répertoires). Pour atteindre un fichier, on doit connaître son nom et le chemin d'accès du dossier où il se trouve. On n'a pas besoin de connaître préalablement les noms de fichiers si on doit lister tous les fichiers d'un ou plusieurs dossiers, mais les noms des dossiers et chemin, si. Ou éventuellement la méthode qu'on entend utiliser pour les établir...

On peut, et c'est souvent le mieux d'ailleurs, opérer hors matérialisation visuelle... toutefois, pour utiliser le résultat, faudra bien le matérialiser quelque part, et donc définir un emplacement pour le faire (classeur, feuille, plage...).

C'est pourquoi l'on réclame généralement toujours un modèle illustrant l'objectif à atteindre et la façon dont on veut réaliser un projet (ce qui devrait économiser des descriptions détaillées infiniment plus longues). Mais même ainsi, on se heurte encore à des problèmes d'adaptation si les configurations et les types de données n'ont pas été scrupuleusement respectés).

Cordialement.

Tu parles d'or et je souscrit à tout ce que tu dis.

Je te rappelle toutefois ma demande initiale : "J'ai besoin d'aide pour importer dans Excel, les noms de fichiers d'un dossier, qui sont des photos (JPG), ainsi que leur date et heure de prise de vue. Ces photos ont été prises avec 3 appareils différents et je veux les interclasser selon leur date/heure de prise de vue, afin de les identifier et les traiter de manière optimale."

Je n'ignore pas qu'emprunter des macros existantes, écrites dans un certain contexte peut ne pas convenir à mon besoin, c'est pourquoi, ma demande était globale, comprenant l'import des noms d'images et leur date-heure de prise de vue.

C'est pourquoi (bis), au vu de ta réponse, j'ai essayé d'introduire ta fonction dans une macro d'import qui me convenait. Et là, étant moins douée que certains, je rencontre des difficultés.

Amicalement,

Bonjour,

Je n'ignore pas qu'emprunter des macros existantes, écrites dans un certain contexte peut ne pas convenir à mon besoin, c'est pourquoi, ma demande était globale,

mais sans fichier ni description de la configuration dans laquelle tu opères...

Ces photos ont été prises avec 3 appareils différents et je veux les interclasser selon leur date/heure de prise de vue, afin de les identifier et les traiter de manière optimale.

N'oublie pas de vérifier les mises à l'heure respectives de chacun des appareils, et/ou d'établir un étalonnage à partir de photos de chacun des appareils dont l'ordre sur des intervalles brefs peut être établi sans ambiguïté...

Cordialement.

Nous voyageons depuis plus de 40 ans, et sommes donc familiarisés avec les réglages d'appareils photo. En passant au numérique, il est devenu pratique d'identifier et traiter les photos en les plaçant dans un seul dossier. Et bien évidemment, nous nous sommes aperçu qu'il fallait mettre à l'heure tous les appareils, à la seconde près. ce que nous faisons dès notre atterrissage (si avion...).

J'aime beaucoup utiliser Excel pour gérer toutes nos photos, c'est pourquoi je veux y importer les noms des clichés (renommés automatiquement par appareils) et la date / heure ce prise de vue. La petite application que j'utilisais jusqu'alors ne m'importe plus l'heure du cliché. D'où mon problème et ma demande à la communauté BVA.

J'utilise Excel 10 sous Win 5. Et je cherche juste à créer - dans mon dossier de photos, c'est plus simple- un fichier avec une colonne de nom de clichés et une seconde colonne de date heure. Le reste, j'en fais mon affaire pour obtenir le tableau de saisie joint, dans lequel j'ai de nombreuses macros en aide à la saisie.

Si tu n'es pas découragé par mes propos, j'accepte volontiers une aide supplémentaire de ta part, car il me reste encore plus de 2.500 photos à traiter !!!

Amicalement,

tableau de saisie

Bonjour MHVIVIER,

avez vous été voir du côté des Add-In

par ex.

Bonjour,

Voilà un premier jet qui devrait fonctionner...

Function DPrVue(ByVal ChDos, ByVal Fimg)
    Dim shApp As Object, fld As Object, Fich As Object
    Set shApp = CreateObject("Shell.Application")
    Set fld = shApp.Namespace(ChDos)
    Set Fich = fld.items.Item(Fimg)
    DPrVue = fld.getdetailsof(Fich, 12)
End Function

Sub ListerPhotos()
    Dim Tph(), chDph$, nPh$, ph%
    chDph = "H:\Images" 'Indiquer chemin du dossier photos
    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
End Sub

Ceci dit, je constate que l'extraction de la date-heure de prise de vue ne comporte pas les secondes, ce qui me semble dommage...

As-tu essayé de travailler avec un logiciel tel que xnView, qui te permet d'accéder aux données EXIF et d'extraire les heures avec secondes... Tu peux générer une liste de fichiers au format CSV que tu ouvres avec Excel...

Cordialement.

Merci pour l'info, mais je ne pense pas que cela me convienne. De plus, il s'agit d'Add-in payant et je ne souhaite pas acheter un produits sans comprendre de quoi il s'agit (présentation en très mauvais français...).

Amicalement,

xnView n'est pas un add-in, c'est un logiciel autonome, qui a depuis longtemps fait ses preuves, et qui est tout à fait gratuit...

De surcroît, léger et rapide...

La seule exigence est l'effort de prise en mains à faire compte tenu des fonctionnalités nombreuses, dont la plupart sont programmables par lots. Je n'ai jamais pris le temps d'en faire vraiment le tour... mais je suis persuadé qu'à lui seul il te permettrait d'opérer la totalité de ton traitement...

http://www.xnview.com/fr/xnview/

Cordialement.

Pour MFerrand,

Ouh là là, ma réponse ne t'était pas destiné mais à un interlocuteur qui m'a proposé d'aller voir du côté de certains Add-in. J'ai juste jeté un coup d'oeil sur Xnview qui m'a l'air très intéressant. Et je vais tester la macro que tu m'as adressée.

Un grand merci, je te tiens au courant.

Amitiés

MHVIVIER a écrit :

Pour MFerrand,

Ouh là là, ma réponse ne t'était pas destiné mais à un interlocuteur qui m'a proposé d'aller voir du côté de certains Add-in. J'ai juste jeté un coup d'oeil sur Xnview qui m'a l'air très intéressant. Et je vais tester la macro que tu m'as adressée.

Un grand merci, je te tiens au courant.

Amitiés

Je viens de tester ta macro, elle fonctionne bien, mais sans les secondes. Après vérification, les photos prises pendant la même minute sont classées par noms d'appareils/n° photo, aussi l'interclassement est perdu. Ce n'est pas trop grave, car j'ai alors peu de données à corriger.

Je vais regarder si Xnview m'apporte des données plus compètes.

Merci encore.

Rechercher des sujets similaires à "importer noms photos leur date prise vue"