Macro fonctionnel SI en pas à pas

Bonjour à tous,

J'ai fait la macro suivante:

Cette macro permet d'extraire d'un dossier toutes les images qui y sont dans un Excel (dans le dossier, dans les sous dossiers et dans les sous sous dossiers).

Elle fonctionne nickel jusqu'au sous-dossier mais une fois au rang sous sous dossier, elle me remet en double les mêmes photos que précédemment sauf si je met un "stop" ici:

annotation 2020 03 19 120834

Avec ce stop, la macro fonctionne à la perfection

Pourquoi selon vous?

Merci d'avance. Si vous voulez plus de détails, n'hésitez pas.

Bonjour,

L'explication est difficile à trouver.

Le traitement mis en place est assez compliqué, avec une répétition du code pour chaque niveau d'arborescence.

Ci-joint une proposition, à tester.

Entièrement ré-écrit, avec un principe de récursivité et en utilisant la bibliothèque de gestion de fichiers (FileSystemObject).

On appelle la même procédure pour chaque niveau : la procédure "ExtraireFichiers" appelle elle-même la procédure "ExtraireFichiers" pour chaque sous-répertoire, etc

Le paramètre "piProfondeur" sert à gérer un niveau de profondeur max (ici : 3 niveaux, mais on pourrait continuer à l'infini, par exemple en scannant tout le disque C:\, avec un niveau de profondeur max à 10 ou 20)

Extrait :

Private Sub ExtraireFichiers(psChemin As String, piProfondeur As Integer)
   ....... 

    'parcours de tous les fichiers du répertoire
    For Each oFic In moFSO.GetFolder(sChemin).Files
        If oFic.Name Like "*.jpg" Then
         .......
        End If
    Next oFic

    'parcours de tous les sous-répertoires
    If piProfondeur < MI_PROFONDEUR_MAX Then
        For Each oRep In moFSO.GetFolder(sChemin).SubFolders
            'appel récursif
           ExtraireFichiers oRep.Path, piProfondeur + 1
        Next oRep
    End If

End Sub

Bouben

Wow, super! Merci!

Je voulais arriver sur une récursivité et la, c'est parfait.

C'est magnifique, le code est super clair même pour un amateur comme moi!

Petite question, la limite de profondeur fixé à 3 existe pour éviter l'explosion du temps de traitement?

Le seul problème que j'ai rencontré a consisté à mettre jpg en majuscule, donc, autant dire, aucun problème!

J'améliore l'interface et je transmettrai ici le fichier fini. Cela pourra surement servir à quelqu'un un jour.

Fichier final :

Rechercher des sujets similaires à "macro fonctionnel pas"