Date de prise de vue d'une photo - VBA

Résolu
jean pétévé -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Comment extraire la date de prise de vue d'une photo avec VBA ?

Avec les propriétés de l'objet Folder (DateCreated, dateLastModified, Datelastaccessed -
cf http://www.commentcamarche.net/contents/vbscript/vbs-folder.php3)
je peux extraire les dates de création du fichier et de modification, mais pas la date de la prise de vue.

En complément,
1/ dans les propriétés de la photo (.jpg), dans l'onglet Détails :
* date de prise de vue est dans le chapitre "Origine"
* date de création et date de modification sont dans le chapitre "Fichier"

2/ les photos ont été prises avec 2 appareils différents
* de marque CANON (photo enregistrée sur l'ordinateur via la carte mémoire),
dans ce cas la date de prise de vue est la même que la date de création du fichier (donc je n'ai pas de problème)
* de marque SONY (photo enregistrée sur l'ordinateur depuis l'appareil via un cable),
dans ce cas
la date de prise de vue est la date à laquelle la photo a été prise
la date de création du fichier est la date à laquelle la photo a été enregistrée sur l'ordinateur

Merci d'avance

3 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    Bonjour,
    Il est possible de lister les propriétés contenues dans l'onglet résumé :
    <Mes sources>
    !!!Activer la référence : "Microsoft Shell Controls and Automation"!!!
    Sous VBE : Outils/Référence
    Sub ListeProprietesFichiers_getDetailsOf()
        'source:
        'http://www.microsoft.com/resources/documentation/windows/2000/server/
        'scriptguide/en-us/sas_fil_lunl.mspx
        '
        'Nécessite d'activer la référence Microsoft Shell Controls and Automation
        '
        Dim objShell As Shell32.Shell
        Dim strFileName As Shell32.FolderItem
        Dim objFolder As Shell32.Folder
        Dim Resultat As String, Reponse As String
        Dim i As Byte
        
        Set objShell = CreateObject("Shell.Application")
        'Répertoire cible
        Set objFolder = objShell.nameSpace("C:\Documents and Settings\michel")
        
        'boucle sur tous les elements du repertoire
        For Each strFileName In objFolder.Items
            
            'Pour que les dosssiers ne soient pas pris en comptes
            If strFileName.isFolder = False Then
            Resultat = ""
                For i = 0 To 34
                    If objFolder.getDetailsOf(strFileName, i) <> "" Then _
                        Resultat = Resultat & objFolder.getDetailsOf(objFolder.Items, i) _
                        & ":  " & objFolder.getDetailsOf(strFileName, i) & vbLf
                Next
            Reponse = MsgBox(Resultat & vbLf & vbLf & "Voulez vous continuer?", vbYesNo)
            If Reponse = vbNo Then Exit Sub
            End If
        Next
    End Sub

    A ADAPTER : le chemin d'accès à ton répertoire.
    Test le et dis moi s'il liste les bonnes propriétés... j'en doute mais...
    0
  2. jean pétévé
     
    Merci pijaku, c'est ce qu'il me fallait.

    En ajoutant les index dans la boîte de message, j'ai pu trouvé celui de la propriété qui m'intéresse.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Si tu as une difficulté pour lister ça sous excel, n'hésite pas.

      Ps : tant mieux que tu aies trouvé la propriété correspondante parce que dans le cas contraire, la méthode aurait été bien plus ardue...
      0
  3. lvlat Messages postés 1 Statut Membre
     
    Salut, au cas ou vous suivriez toujours ce fil : j'utilise ce bout de code également, seulement dans ma boite de dialogue je me retrouve avec
    Année : Année
    Nom : Nom
    etc.

    Pourquoi n'ai-je pas les valeurs après les : ? Pourtant j'ai fait un fidèle copier/coller...

    Merci.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Bonjour,
      Je ne sais absolument pas pourquoi...

      j'utilise ce bout de code également Avec quels types de fichiers?
      0