Microsoft 365 Données photos

de_hanstrapp

XLDnaute Occasionnel
Bonsoir le forum,

Dans le cadre d'un projet, je dois vérifier la taille et les dimensions de centaines de photos contenus dans un dossier.
Mon objectif est d’intégrer dans le fichier Excel joint, son nom, sa taille, son rapport et sa résolution afin de m'indiquer rapidement si la photo est aux normes requises où non.
J'ai parcouru le forum et d'autres sites internet mais je n'ai pas réussi à obtenir le résultat escompté (j'ai essayé avec un fichier .bat pour la taille mais je n'arrive pas à obtenir sa résolution). Pensez-vous que cela soit possible ?

Infos + : pour être conforme la taille doit être comprise entre 500 kb et 1,5 mb pour un rapport largeur/hauteur de 4/5 et une dimension minimum de 480 pixels/600 pixels

Merci par avance pour vos remarques et retours !

NSAPG
 

Pièces jointes

  • Exemple.xlsm
    9.7 KB · Affichages: 32

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, nsapg

Pour ce genre de taches, il existe des *outils dédiés.
Excel est un tableur à la base, non ?; )
*: En voici un pris au hasard.
(non testé)

Il en existe une palanquée d'autres.
(Faut juste vérifier qu'il ne contienne ni adware, ni malware)
 

de_hanstrapp

XLDnaute Occasionnel
Bonsoir Staple1600,
Mon objectif via le fichier Excel est uniquement de faire un état des lieux.
Je souhaite pouvoir faire un retour rapide sur les photos qui conviennent ou pas.
Les outils pour modifiées les photos non conformes seront traitées par la suite comme tu l'indiques par des outils dédiés.
NSAPG
 

Staple1600

XLDnaute Barbatruc
Re

Il y a plein d'exemples dans les archives du forum pour lister les données EXIF
Un exemple totalement pris au hasard ;)
 

de_hanstrapp

XLDnaute Occasionnel
Merci Staple1600 pour le lien.
En explorant le fichier de Roland-M, étant novice en la matière j'ai plusieurs questions :
1. est-il possible via le code de ne rechercher que les informations souhaitées ?
2. en l'utilisant sur un cloud... le fichier plante alors que si je copie/colle le dossier sur mon disque dur cela à l'air de fonctionner. Est-ce normal ?
3. comment identifier les photos qui font moins de 500 Ko et plus de 1,5 Mo sachant que l'unité n'est pas la même.
NSAPG
 

Staple1600

XLDnaute Barbatruc
Re

Un autre lien qui utilise une méthode "plus mieux"
 

de_hanstrapp

XLDnaute Occasionnel
Si Staple1600, le lien pointe bien vers ton code mais quand j'essaie de faire fonctionner la macro j'ai un message d'erreur d'où l'utilisation du fichier de Roland-M.
Malheureusement je n'ai pas les compétences pour avancer avec tes indications.
Quoi qu'il en soit merci pour le temps consacré.
NSAPG
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, nsapg

=>nsapg
Euh, tu peux me dire où tu lis Dim clEx As clExif...?
:rolleyes:
Ci-dessous le code que je citais
Ce qui sous-entendais, que j'invitais le demandeur à tester ce code, non?
VB:
Sub LireInfosJpg()
 'Dans outil réferences cocher Microsoft Shell Controls and Automation
Dim myShell As Shell
Dim myFolder As Folder
Dim myFile As FolderItem
Dim i As Byte, Chemin$, f$, lig As Long
'Indiquer le chemin du répertoire
Chemin = "E:\Photos\Mes images"

Set myShell = CreateObject("Shell.Application")
Set myFolder = myShell.Namespace(Chemin)
Set myFile = myFolder.Items.Item(f)
Application.ScreenUpdating = False
[a:ah].ClearContents
For i = 0 To 34
If myFolder.GetDetailsOf(myFile, i) <> "" Then _
Cells(1, i + 1) = myFolder.GetDetailsOf(myFile, i)
Next
f = Dir(Chemin & "\*.jpg")
Do While Len(f) > 0
Set myFile = myFolder.Items.Item(f)
lig = [A65536].End(xlUp)(2).Row
For i = 0 To 34
If myFolder.GetDetailsOf(myFile, i) <> "" Then _
Cells(lig, i + 1) = myFolder.GetDetailsOf(myFile, i)
Next
f = Dir
Loop
Set myShell = Nothing
Set myFolder = Nothing
Set myFile = Nothing
End Sub
 

de_hanstrapp

XLDnaute Occasionnel
Bonjour le fil, nsapg

=>nsapg
Euh, tu peux me dire où tu lis Dim clEx As clExif...?
:rolleyes:
Ci-dessous le code que je citais
Ce qui sous-entendais, que j'invitais le demandeur à tester ce code, non?
VB:
Sub LireInfosJpg()
'Dans outil réferences cocher Microsoft Shell Controls and Automation
Dim myShell As Shell
Dim myFolder As Folder
Dim myFile As FolderItem
Dim i As Byte, Chemin$, f$, lig As Long
'Indiquer le chemin du répertoire
Chemin = "E:\Photos\Mes images"

Set myShell = CreateObject("Shell.Application")
Set myFolder = myShell.Namespace(Chemin)
Set myFile = myFolder.Items.Item(f)
Application.ScreenUpdating = False
[a:ah].ClearContents
For i = 0 To 34
If myFolder.GetDetailsOf(myFile, i) <> "" Then _
Cells(1, i + 1) = myFolder.GetDetailsOf(myFile, i)
Next
f = Dir(Chemin & "\*.jpg")
Do While Len(f) > 0
Set myFile = myFolder.Items.Item(f)
lig = [A65536].End(xlUp)(2).Row
For i = 0 To 34
If myFolder.GetDetailsOf(myFile, i) <> "" Then _
Cells(lig, i + 1) = myFolder.GetDetailsOf(myFile, i)
Next
f = Dir
Loop
Set myShell = Nothing
Set myFolder = Nothing
Set myFile = Nothing
End Sub

Pardon il s'agit de "Dim myShell As Shell"
J'ai essayé les deux codes...

NSAPG
 

patricktoulon

XLDnaute Barbatruc
re
bonjour @Staple1600
moi aussi j'ai tester ton code et il plante (j'ai activé la référence) bien que je sois passé en late binding
a la première ligne(Set myFile = myFolder.Items.Item(f))
c'est normal a ce moment "f" est vide

ensuite en supprimant le premier examen donc en ne gardant que la boucle ou là "f" est bien renseigné!!!
j'ai une erreur (91) variable object ou bloc with non definie sur cette même ligne
VB:
Sub LireInfosJpg()
 'Dans outil réferences cocher Microsoft Shell Controls and Automation
Dim myShell As Object
Dim myFolder As Object
Dim myFile As Object
Dim i As Byte, Chemin$, f$, lig As Long
'Indiquer le chemin du répertoire
Chemin = "C:\Users\Public\Pictures\Sample Pictures\"
fichier = Dir(Chemin & "*.*")
Set myShell = CreateObject("Shell.Application")'late binding
Set myFolder = myShell.Namespace(Chemin)

Application.ScreenUpdating = False
[a:ah].ClearContents

f = Dir(Chemin & "\*.jpg")
Do While Len(f) > 0
Set myFile = myFolder.Items.Item(f)'!!!!!!!!!!!!!!ERREUR 91
lig = [A65536].End(xlUp)(2).Row
For i = 0 To 34
If myFolder.GetDetailsOf(myFile, i) <> "" Then _
Cells(lig, i + 1) = myFolder.GetDetailsOf(myFile, i)
Next
f = Dir
Loop
Set myShell = Nothing
Set myFolder = Nothing
Set myFile = Nothing
End Sub
 

Statistiques des forums

Discussions
314 491
Messages
2 110 182
Membres
110 691
dernier inscrit
Marhvax