[Résolu][Calc] Accéder à une métadonnée de fichier jpg

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
FredBauchot
Fraîchement OOthentifié
Messages : 7
Inscription : 24 déc. 2024 11:07

[Résolu][Calc] Accéder à une métadonnée de fichier jpg

Message par FredBauchot »

Bonjour,
je suis dans un tableur dont une cellule spécifie un nom de fichier image au format jpg, donc qqchose comme "image.jpg". Je dois récupérer dans une macro une métadonnée de ce fichier image, plus précisément sa date de création. Malgré plusieurs heures passées sur les forums et la documentation, je ne sais pas comment m'y prendre. Si quelqu'un a une piste permettant à ma macro de récupérer cette information, ce serait super.
Merci par avance pour tout aide me permettant de progresser.
Dernière modification par Oukcha le 24 janv. 2025 21:44, modifié 2 fois.
Raison : Balisage dans premier message
LibreOffice version 24.8.4.2 (x86_64), sur Windows 11 Famille, version 23H2
Avatar de l’utilisateur
micmac
RespOOnsable forum
RespOOnsable forum
Messages : 9811
Inscription : 28 août 2010 08:45

Re: [calc] Macro accédant à une métadonnée de fichier jpg

Message par micmac »

Bonjour,

Veuillez corriger le titre de votre sujet [calc] Macro accédant à une métadonnée de fichier jpg
  1. Pour la bonne tenue de ce forum, veillez à respecter la mise en forme des balises (première lettre en majuscule puis le reste en minuscules, le tout entre crochets). [Calc] et non [calc].
  2. Les termes implicites comme macro, aide, problème ou OpenOffice n'ont pas besoin d'être mentionnés.
Dans votre signature il y a écrit :LibreOffice version 6.3.6.2 (x64)
Cette version de LibO est obsolète.
Si c'est une obligation ou un choix mentionnez-le par Obligation de version ou Choix dans votre signature afin de ne pas être relancé.

Afin de profiter des dernières améliorations, pensez à être à jour de la dernière version officielle
Accès direct à votre signature pour la corriger.
.
FredBauchot a écrit : 15 janv. 2025 22:16 Si quelqu'un a une piste permettant à ma macro de récupérer cette information
publier le code de la macro exposant le problème.
FredBauchot a écrit : 15 janv. 2025 22:16 Si quelqu'un a une piste permettant à ma macro de récupérer cette information
Merci de publier le code de cette macro et éventuellement un document anonymisé la contenant.
Touche Ctrl de Windows = touche cmd⌘ sur Mac
OpenOffice > Outils > Options sur Windows = OpenOffice > Préférences sur macOS
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Calc] Macro accédant à une métadonnée de fichier jpg

Message par Dude »

Salut,
FredBauchot a écrit : 15 janv. 2025 22:16 une métadonnée de ce fichier image, plus précisément sa date de création
C'est ce qu'on appelle une donnée EXIF(1). On a parlé plusieurs fois déjà.
Basic n'a pas de fonction interne pour ça.
Il faut utiliser une bibliothèque externe. Il en existe en Python et en Javascript qui sont des langages utilisables par Calc.
Maintenant, une solution plus simple est de faire appel à ExifTool(2).
C'est un utilitaire simple pouvant être appelé par l'instruction Shell.


  1. https://fr.wikipedia.org/wiki/Exchangeable_image_file_format
  2. https://exiftool.org
FredBauchot
Fraîchement OOthentifié
Messages : 7
Inscription : 24 déc. 2024 11:07

Re: [résolu][Calc] Accéder à une métadonnée de fichier jpg

Message par FredBauchot »

Merci Dude, problème résolu en utilisant l'outil exiftool.
LibreOffice version 24.8.4.2 (x86_64), sur Windows 11 Famille, version 23H2
Avatar de l’utilisateur
Bidouille
RespOOnsable forum
RespOOnsable forum
Messages : 12659
Inscription : 08 nov. 2005 16:23
Localisation : Brest, France

Re: [résolu][Calc] Accéder à une métadonnée de fichier jpg

Message par Bidouille »

FredBauchot a écrit : 24 janv. 2025 20:28 problème résolu en utilisant l'outil exiftool.
Merci de fournir un document et publier la macro.
Cela permettra à d'autres qui tomberont sur ce fil d'avoir une solution clé-en-main.
FredBauchot
Fraîchement OOthentifié
Messages : 7
Inscription : 24 déc. 2024 11:07

Re: [Résolu][Calc] Accéder à une métadonnée de fichier jpg

Message par FredBauchot »

Bonjour,
désolé Bidouille de ne pas avoir posté ceci plus tôt, mais les messages reçus dans ma boite mail de la part du Forum étaient « planqués » dans le spam (bien que j’avais précédemment indiqué à ma messagerie que l’adresse mail du forum est « acceptable »).
J’ai créé un fichier ods, disponible en pièce jointe, montrant un exemple d’utilisation de exiftool. L’objectif est de récupérer les données suivantes pour les fichiers photo jpg dans un répertoire  donné: date de dernière modification, latitude et longitude.
Le répertoire est spécifié en cellule D2 et l’appel à exiftool se fait en cellule D4, la formule correspondante ayant été copiée en D6:

Code : Tout sélectionner

=SHELLRUN("d:\exiftool -f -a -file:FileModifyDate -composite:gpslatitude -composite:gpslongitude "&UNICAR(34)&D2&"\*.jpg"&UNICAR(34))
Pour réussir à obtenir quelque chose de correct, j’ai utilisé :
• l’outil exiftool téléchargé depuis https://exiftool.org/ de Phil Harvey. Je l’ai installé sur ma racine D : où j’ai pris soin d’y copier le répertoire « exiftool_files » comme spécifié dans la documentation d’exiftool.
• la fonction SHELLRUN, récupérée sur le forum https://stackoverflow.com/questions/2784367/capture-output-value-from-a-shell-command-in-vba
• L’excellent document https://orchisere.fr/logiciels/html/exiftool.htm sur l’utilisation d’exiftool (un modèle du genre en terme de pédagogie)
• Et une aide précieuse de l’auteur de ce dernier document.
Pour info, la dernière difficulté a été de bien préciser les paramètres de exiftool dans l’argument de SHELLRUN, ce qui a été possible grâce à l’emploi de UNICAR(34) pour représenter la double quote.

Code : Tout sélectionner

Public Function ShellRun(sCmd As String) As String

    'Run a shell command, returning the output as a string'

    Dim oShell As Object
    oShell = CreateObject("WScript.Shell")

    'run command'
    Dim oExec As Object
    Dim oOutput As Object
    
    oExec = oShell.Exec(sCmd)
    oOutput = oExec.StdOut

    'handle the results as they are written to and read from the StdOut object'
    Dim s As String
    Dim sLine As String
    While Not oOutput.AtEndOfStream
        sLine = oOutput.ReadLine
        If sLine <> "" Then s = s & sLine & chr(10)
    Wend

    ShellRun = s

End Function
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
LibreOffice version 24.8.4.2 (x86_64), sur Windows 11 Famille, version 23H2
Avatar de l’utilisateur
Dude
IdOOle de la suite
IdOOle de la suite
Messages : 25964
Inscription : 03 mars 2006 07:45
Localisation : 127.0.0.1

Re: [Résolu][Calc] Accéder à une métadonnée de fichier jpg

Message par Dude »

Tu n'as pas lu ce que je propose :
Dude a écrit : 17 janv. 2025 07:43 appelé par l'instruction Shell
Et donc pas besoin d'appeler un objet PowerShell Windows.

Pour l'encapsulation des guillemets, suivre ce suprême de code.
Ce qui donnera :

Code : Tout sélectionner

sCmd = "d:\exiftool -f -a -file:FileModifyDate -composite:gpslatitude -composite:gpslongitude"
sChemin = "c:\temp"
Shell(sCmd & " """& sChemin &"\*.jpg"""))
autre possibilité :

Code : Tout sélectionner

Shell(sCmd & " "& chr(34) & sChemin & "\*.jpg" & chr(34))