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

Résolu/Fermé
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 - 15 mai 2009 à 11:26
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 - 15 mai 2009 à 18:06
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
A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
15 mai 2009 à 12:08
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
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
15 mai 2009 à 13:39
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
15 mai 2009 à 14:34
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
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
15 mai 2009 à 15:13
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
15 mai 2009 à 16:14
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
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
15 mai 2009 à 18:06
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