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

re4

XLDnaute Occasionnel
Edit 19/04/2021 : Les solutions sont aux posts #28 et #44 un grand 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 21/04/2021 14h32

Dudu2

XLDnaute Barbatruc
Y a un petit souci si on laisse les tags d'origine (sans modif) le ratio s'affiche dans une colonne
Non, si le Ratio n'est pas cité dans la liste il n'apparaît pas. Dans le dernier fichier posté, le Ratio est inclus dans la liste et donc il apparaît dans une colonne.

si l'on sélectionne que quelques tags (3 pour le test, Dimensions, Orientation, Prise de vue) le ratio n'apparait pas
C'est normal.

Relire le Post #59:
J'ai considéré que le Ratio était un Tag standard (Tag utilisateur) ajouté aux Tags système et lui ai attribué le #321. De sorte qu'on peut le citer dans la liste comme les autres.
 
Dernière édition:

re4

XLDnaute Occasionnel
Bonjour
Encore une petit requête :
Pour ne pas trop mettre le bazar dans ton code, peux tu me dire ou puis-je le modifier pour ne pas afficher le ''Chemin'' en colonne A, il sera demandé si besoin dans les paramètres, la miniature elle s'afficherait par défaut en colonne A si elle est demandée

Merci
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Bonjour,
Ce n'est pas si simple car il faut déplacer les boutons qui ont besoins de la largeur de la colonne A pour s'afficher dans un UserForm. La miniature s'adapte à la cellule qui la reçoit et donc la colonne A large ne peut pas être utilisée.
 

re4

XLDnaute Occasionnel
Je suis impressionné par ta réactivité

Petit retour des tests:
1- si l'on choisi ''Non'' pour chemin du fichier tout est ok, la conne B est masquée
2- si l'on choisi ''Oui'' pour chemin de fichier, le chemin est bien en A avec les miniature dessus aussi en A, elles auraient du être en B ? Je n’utiliserai pas cette fonction elle sera toujours ''Non'' pour utilisation
3- En feuille paramètres en G3 j'ai ajouté un JPG (majuscule) j'ai quelques photos avec cette extension

Question :
1- Lorsque la colonne A est masquée l'extraction du chemin ne se fait pas ou il est dans la colonne A masquée
2 - Peux-tu me dire quelle est le code ou la ligne qui affiche le chemin en A ? (dans le précedent fichier et celui-ci).

Encore merci
 

Dudu2

XLDnaute Barbatruc
Oui c'est un problème que j'ai aussi découvert. Quand on affiche (démasque) la colonne A, Excel ne décale pas les miniatures qui appartiennent à la colonne B. Je ne sais pas pourquoi, peut-être parce que le .Left des images est à zéro, comme le .Left de la colonne B avant démasquage de la colonne A.
J'ai dû contourner le problème.

Edit: je confirme que c'est le .Left = 0 de l'image (correspondant au .Left = 0 de la colonne B suite au masquage de la colonne A) qui pose problème car lorsqu'on démasque la colonne A, Excel ne sait pas si l'image appartient à la colonne A ou la colonne B et la laisse en place en colonne A sans la bouger en colonne B.
En décalant l'image de 1/10ème de point à l'intérieur de la colonne B, elle est bien déplacée avec la colonne B lors du démasquage de la colonne A.
 
Dernière édition:

re4

XLDnaute Occasionnel
Ce n'est pas grave, il me semble que c'est plus pratique de mettre le chemin en dernier
peux-tu me répondre aux questions 1 & 2 ?
En plus en regardant tes codes je me suis aperçu que tu en réécris une bonne partie à chaque fois que je demande une modification, je suis désolé que tu te donnes temps de peine, en tout cas ça été très instructif pour moi
Merci
 

Dudu2

XLDnaute Barbatruc
1- Lorsque la colonne A est masquée l'extraction du chemin ne se fait pas ou il est dans la colonne A masquée
Il est dans le colonne A masquée.
2 - Peux-tu me dire quelle est le code ou la ligne qui affiche le chemin en A ? (dans le précedent fichier et celui-ci).
Il n'y a pas qu'une ligne de code concernée. Il y a le positionnement du titre, des valeurs et de toutes les colonnes qui sont relatives à la colonne A.
Qu'est-ce que tu veux faire ? Ça te gène que la colonne soit masquée plutôt que non présente ?
Masquée c'est simple à coder. Non présente il faut revoir le code.
3- En feuille paramètres en G3 j'ai ajouté un JPG (majuscule) j'ai quelques photos avec cette extension
Ce n'est plus utile maintenant.
 

re4

XLDnaute Occasionnel
ok, super, je vais retenir ta dernière version (post 44) mais sans utiliser les chemins de fichiers en colonne A
Juste pour le fun et essayer de mon plonger dans ton code, j'avais réussi la présentation en pièce jointe pour laisser la ligne 1 libre et y apporter des annotations par formules,
Merci Dudu2

1617913529181.png
1617917324996.png
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Si tu veux épargner des lignes ou colonnes avant le tableau pour y placer des formules ou autres objets, j'ai ajouté ce paramètre:
1617948813326.png


Si tu y mets "B3" par exemple, les 2 premières lignes et la première colonne seront libres d'utilisation et non touchées par le programme.
Après mettre des formules c'est présupposer de la position des Tags qui par définition est non fixe puisque paramétrable. Mais bon, c'est toi qui gères ton tableau.
 

Dudu2

XLDnaute Barbatruc
J'ai eu des problèmes de crasch Excel 2016 incompréhensibles après l'introduction de cette constante.
J'ai sorti les constantes en Public dans un module dédié sans être sûr du résultat.
Pour que la modif de la constante soit prise en compte immédiatement, il faut fermer le UserForm des Boutons. Ou mieux enregistrer, fermer et ré-ouvrir le classeur.
Excel perd les pédales par moment.
 

re4

XLDnaute Occasionnel
Bonjour,
C'est ce que j'ai constaté hier aussi mais seulement à la 1er ouverture du classeur, après ça se lance normalement en tout cas chez moi avec Excel 2019.
Pour le reste, sauf erreur de ma part, es-tu sur d'avoir mis ton dernier fichier en post44 ?
Merci
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 900
Membres
101 834
dernier inscrit
Jeremy06510