[Excel-VBA] Extraire "Date du cliché" de

Résolu
ben13.51 Messages postés 115 Statut Membre -  
ben13.51 Messages postés 115 Statut Membre -
Bonjour,
Je cherche à créer un code VBA qui pourrait copier la date de cliché de fichiers .jpg et les coller dans une colonne d'une feuille excel. Ces fichier jpg sont dans un dossier, la macro doit donc les prendre un par un et coller leur date de cliché une par une dans les cellules de la colonne.

quelqu'un a-t'il une idée de la fonction à uitiliser??
Voilà une idée du code que je vais utiliser. Mon problème est d'attribuer à ma variable DateC la valeur de la date de cliché du fichier ciblé...

Sub DateCliché()
Dim Num As String
Dim DateC As Date

For i = 1 To 2030
Num = Sheets("coordonnées").Cells(i, 1)

'DateC = la date de cliché du fichier :("C:\Travail\Photo coeur sauvegarde\Photo coeur def\" & Num & ".jpg"

Sheets("Calculs Intermédiaires").Cells(i, 18) = DateC
Next i
End Sub

J'ai déjà essayé la fonction FileDateTime mais ça na ma donne que la date de dernière utilisation c'est à dire la date d'aujourd'hui...
De plus il me faut précisemment la date du cliché car ces photo sont des copie des originales et ont donc une date de création postérieure à la date de prise de vue...

Merci d'avance pour vos conseils éclairés...

Ben
Configuration: Windows XP Internet Explorer 7.0

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Si tu n'as pas modifié la copie, il me semble qu'il te faut créer un objet FSO et utiliser la propriété "dateLastModified"
    3
    1. ben13.51 Messages postés 115 Statut Membre 7
       
      Merci michel pour ta réponse,
      mais je ne maitrise pas la notion d'objet FSO...
      Peut tu m'en expliquer les rudiments ou me donner un lien vers un site explicatif
      Merci
      Ben
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,

    voici un exemple à adapter a ta config: sheets, colonne num (???) etc

    La macro listerdate "dossier désiré"appelle la sous macro reporterdate photo
    le dossier est parcouru à la recherche des .jpg et on reporte la date de leur dernière modif ( voir mon observation + haut)


    Sub listerdate()
     reporterdatephoto "D:\images\viti\" 'a adapter ton  chemin du dossier
    End Sub
    
    
    Sub reporterdatephoto(dossier As String)
    Dim photojpg As Object
    Dim fich As String
    Dim lig As Long
    
    Set photojpg = CreateObject("Scripting.fileSystemObject")
    lig = 1
    Application.ScreenUpdating = False
    
    ChDir dossier
    fich = Dir("*.jpg")
    While fich <> ""
        Set datephoto = photojpg.GetFile(fich)
        Cells(lig, 2) = datephoto.dateLastModified
        lig = lig + 1
        Set datephoto = Nothing
     fich = Dir
    Wend
    
    Set photojpg = Nothing
    End Sub
    
    1
    1. ben13.51 Messages postés 115 Statut Membre 7
       
      Merci bcp michel
      Ta macro fait parfaitement ce que je voulais.
      Si tu as le temps et l'envie, pourrais-tu m'expliquer en détails ce que font quelques lignes de ton code que je copie ci-après?

      Set photojpg = CreateObject("Scripting.fileSystemObject")

      Application.ScreenUpdating = False

      ChDir dossier
      datephoto = photojpg.GetFile(fich)
      J'ai compris ce que ChDir et GetFile faisaient mais où déclares tu les variable dossier et datephoto?


      Si tu ne veux pas ce n'est pas grave tu m'as retiré une belle épine du pied.
      Bon Aprem'
      Et merci encore!
      0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bon...
    Application;screenupdating=false fige le défilement de l'écran, ainsi gagne un temps fou et evite les flash de l'écran peu agréable quand par exemple on change de feuille

    FSO fileSystemObject est une biobiothèque qui permet de manipuler les fichiers lire et écrire les propriétés: son avantage est qu'on travailler sur n'importe quelle extension (.jpg, .xls...) et surtout de le faire sans avoir à ouvrir les fichiers. Dans Office, tu as "documentproperties" qui peut lire des propriétés mais il faut que le document Office soit ouvert.

    La variable Dossier est déclarée dans le paramêtre de la macro
    Sub reporterdatephoto(dossier As String)

    Quant à datephoto... J'aurais dû le déclarer!!! ca m'apprendra à n'avoir utilisé option explicit
    donc
    Dim datephoto as object
    (c'est un sous-objet fso)

    Bon WE (avé le soleil, milladiou!)
    1
  4. ben13.51 Messages postés 115 Statut Membre 7
     
    Merci pour toute ces explications
    FSO me semble très interessant et va me permettre de régler plusieurs autres problèmes avec vba...

    Bon WeekEnd et encore merci

    Ben
    0