XL 2016 Lister fichiers avec Exifs et propriétés (suivant son choix) - code à modifier

re4

XLDnaute Occasionnel
Edit 01/04/2021 : La solution est au post #28, merci à Dudu2

Bonjour à tous,
Je reviens avec une autre idée avec le code ci-dessous que j'ai légèrement modifé avec quelques annotations de débutant (que je suis ,-)
Cette macro fonctionne bien et extrait seulement les exifs que l'on désire avec quelque prérequis.

Je ne sais pas faire, vous est-il possible de m'aider et de la modifié pour :
1- Aller chercher le répertoire par l'ouverture d'une boite (explorer ?), à la place de : Set objFolder = objShell.Namespace("C:\Users\PC\Pictures\Test")
2- Lister à partir du dossier racine tous les fichiers de tous les sous répertoires.

Merci beaucoup

VB:
'original ?
    'https://www.excel-downloads.com/threads/macro-pour-extraire-l

    'Prérequis
    'créer une feuille ''Code'' avec en tête en ligne 1:
    'Colonne A les codes de toutes propriétés
    'Colonne B les noms de ces propriétés
    'Colonne C un X par exemple pour ne choisir que les plus utiles
    'Colonne D index par ordre de péférence (noms que l'on veut, puis tris de A-Z sur colonne D)
    'Colonne E les codes (colonne A) du tri de D

    ' Ne liste que le repertoire choisi (mais affiche les dossiers sous répertoire en nom)

    Sub LireExifTags5()
    Dim det_Headers(355)

    Sheets("Code").Select

    ' compte le nbre de cellule non vide de la colonne E de la feuille 'Code'
    LastRow = Cells(Rows.Count, 5).End(xlUp).Row

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace("C:\Users\PC\Pictures\Test")

    Workbooks(1).Sheets(1).Activate
        DernLigClear = Range("A" & Rows.Count).End(xlUp).Row

        Range("A2:OJ" & DernLigClear).ClearContents 'jusqu'a la colonne 400

    For i = 2 To LastRow
    c = i - 2
    k = Worksheets("Code").Cells(i, 5) 'Seulement les exifs que l'on désire

    det_Headers(c) = objFolder.GetDetailsOf(objFolder.Items, k)
    ActiveSheet.Cells(2, c + 1) = det_Headers(c) 'headers en ligne 2

    Workbooks(1).Sheets(1).Activate
    j = 3 ' pour datas en ligne 3

    For Each strFileName In objFolder.Items
    For m = 1 To LastRow
    Next

    Sheets(1).Cells(j, i - 1).Value = objFolder.GetDetailsOf(strFileName, k)

    j = j + 1

    Next
    Next

    'Columns("A:z").AutoFit
    ActiveSheet.UsedRange.EntireColumn.AutoFit
    End Sub
 
Dernière édition:
Solution
OK. Si le titre de la colonne E est "Ordre" la formule serait mieux avec =SI([@Ordre]>0;"Oui";"Non")
C'est une syntaxe propre aux tableaux structurés (le symbole @ représente la ligne courante).

Mais à partir du moment où c'est le chiffre qui déclenche l'affichage, on peut se passer de la colonne "Afficher".
Voici une version qui, selon ta préférence, utilise la colonne Ordre (de classement) dont la gestion requiert la ré-attribution des numéros et le tri du tableau (bouton dédié) en cas de modification de classement.
Pour le centrage vertical des lignes tu as une idée ?
Une instruction VBA.

Fichier mis à jour...

re4

XLDnaute Occasionnel
Sans doute, le Tag #30 suffit. JE vais supprimer le Tag #32 de le liste.
Non, chez moi le 30 est Modèle d'appareil photo et le 32 c'est la marque

le numéro varie selon la version de Windows.
Malheureusement le nom varie aussi (voir post 29)

Je viens de mettre à jour le post 29 y a un petit souci avec les noms des tags qui ne sont pas tous identiques chez moi win 10 et chez toi win7 (?)
 
Dernière édition:

re4

XLDnaute Occasionnel
Si ça peut servir : Tags Win 10 (exifs et autres propriétés pour photo)
TagsNom / Désignations
0Nom
3Modifié le
4Date de création
5Date d’accès
12Prise de vue
18Mots clés
19Notation
20Auteurs
21Titre
22Objet
24Commentaires
25Copyright
30Modèle d'appareil photo
32Marque appareil photo
164Extension du fichier
165Nom de fichier
174Profondeur de couleur
175Résolution horizontale
176Largeur
177Résolution verticale
178Hauteur
190NomDossier
191Chemin du dossier
194Chemin d’accès
255Version EXIF
257Compensation
258Programme d’exposition
259Temps d’exposition
260Focale
261Mode flash
262Distance focale
263Distance focale 35mm
264Sensibilité ISO
265Fabricant de l’objectif
266Modèle d’objectif
267Source de lumière
268Ouverture maxi
270Orientation
272Mode programmé
273Saturation
274Distance au sujet
275Balance des blancs
276Priorité
 

Dudu2

XLDnaute Accro
Et ajouté un gadget.

Je pense que ton sujet peut être utile à d'autres personnes.
Donc merci d'identifier le Post #28 comme solution. C'est pour permettre aux gens qui consultent ce sujet de trouver directement le bon fichier parmi ceux nombreux publiés dans les Posts.
 
Dernière édition:

re4

XLDnaute Occasionnel
Re bonjour,
Maintenant que l'on a un mois à passer le temps...

Bien vu pour l'incrémentation/décrémentation, cependant je voudrais éventuellement me laisser le choix d'un tri par ordre de N° dans la colonne E.
Pour ma culture Excel, peux tu me dire comment insérer une colonne après la colonne D sans perturber ton programme, je ne peux pas modifier la référence =Paramètres!$B$3:$E$45 de TableauTags en $B$3:$D$45 et cela créera t'il un bug ?
Merci
 

Dudu2

XLDnaute Accro
Si tu ne veux pas utiliser le gadget que j'ai ajouté permettant de déplacer les lignes, tu peux créer une colonne dans le tableau structuré en cliquant droit dans ce tableau comme indiqué précédemment dans le Post #30. Ce sera moins pratique que le gadget, car il faudra faire un tri, mais chacun choisit librement sa méthode.

je ne peux pas modifier la référence =Paramètres!$B$3:$E$45 de TableauTags en $B$3:$D$45
Non et j'ai expliqué pourquoi dans ce même Post #30.

Dans le code, j'ai référencé les colonnes par leurs titres (l'un nombreux des avantages des tableaux structurés) et donc tu peux insérer ta colonne n'importe où dans le tableau, le code restera valide.
 

re4

XLDnaute Occasionnel
Encore merci, le gadget me va bien aussi ,-)
pour le reste j'avais fait la manip mais dans un premier test il me disait données non valide ;-) , tout est ok
J'étais en train de regarder comment faire un centrage vertical de toutes les lignes sans perturber les imagettes.
Bonne soirée
 

Dudu2

XLDnaute Accro
pour le reste j'avais fait la manip mais dans un premier test il me disait données non valide
Ça ne devrait pas. Envoie-moi le fichier correspondant pour que je regarde ce qui cloche.

En tous cas si j'ajoute une colonne, ça ne génère pas de problème.
1617298568512.png
 
Dernière édition:

re4

XLDnaute Occasionnel
C'est exactement ce que j'ai fait, j'ai mis cette formule dans la colonne D =si(E2>0;"Oui";"Non") il suffit de mettre l'ordre préféré de 1 à n dans la colonne E et de trier par le filtre, ça me semble plus pratique.
Rien d'extraordinaire non plus ,-)

Pour le centrage vertical des lignes tu as une idée ?
 

Dudu2

XLDnaute Accro
OK. Si le titre de la colonne E est "Ordre" la formule serait mieux avec =SI([@Ordre]>0;"Oui";"Non")
C'est une syntaxe propre aux tableaux structurés (le symbole @ représente la ligne courante).

Mais à partir du moment où c'est le chiffre qui déclenche l'affichage, on peut se passer de la colonne "Afficher".
Voici une version qui, selon ta préférence, utilise la colonne Ordre (de classement) dont la gestion requiert la ré-attribution des numéros et le tri du tableau (bouton dédié) en cas de modification de classement.
Pour le centrage vertical des lignes tu as une idée ?
Une instruction VBA.

Fichier mis à jour 09/04/2021 09h01
 

Pièces jointes

  • Tags Exif Images Répertoire - Déplacer lignes.xlsm
    102.2 KB · Affichages: 5
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
286 624
Messages
1 877 552
Membres
160 770
dernier inscrit
pronostics.store
Haut Bas