IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

supprimer les sous dossiers d'un dossier [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut supprimer les sous dossiers d'un dossier
    Bonjour,

    j'ai un dossier SAVE qui contient chaque jour la sauvegarde de classeurs excels

    Chaque jour le sous dossier est généré via le planificateur de taches Windows (et contient les fichiers sauvés) sous la forme SAVE/Save jj-mm-aaaa

    Je veux écrire une macro qui va supprimer les anciennes sauvegardes jusqu'à une date donnée.

    Mon problème est de récupérer un par un le nom des sous dossiers pour voir s'ils sont éligibles à la suppression (puis les supprimer)

    Je ne trouve pas vraiment mon bonheur dans mes recherches (via la fonction DIR ?)

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    Avec le code ci-dessous, tu peux scanner un dossier et ses sous-dossier pour faire des actions sur chaque dossiers/sous-dossiers.

    C'est une procédure récursive, qui parcourt tous les fichiers d'un répertoire donné en paramètre, puis tous les dossiers.
    Et pour chaque dossier, la procédure s'appelle elle-même en prenant comme répertoire paramètre le répertoire détecté, et ainsi de suite...

    Voici le code que j'ai simplifié pour l'exemple, à adapter.
    Tu constateras que je récupérais uniquement le nom des fichiers/dossiers, mais tu peux récupérer le chemin entièrement.
    Dans ton cas, tu peux te passer de scanner les fichier, et te concentrer sur les sous-dossiers.
    Après si ton but est de supprimer des sous-dossier, tu peux utiliser la fonction kill par exemple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Dim fso As FileSystemObject, dossier As Folder, sousdossier As Folder, fichier As File
    Dim NbFichiers As Integer, NbDossiers As Integer
     
    Public Sub scan(ByVal dossier As Folder)
     
        For Each fichier In dossier.Files
            ActiveCell.Value = Right(fichier, Len(fichier) - InStrRev(fichier, "\", InStrRev(fichier, "\")))
            ActiveCell.Offset(1, 0).Select
            NbFichiers = NbFichiers + 1
        Next
     
        For Each sousdossier In dossier.SubFolders
            ActiveCell.Value = Right(sousdossier, Len(sousdossier) - InStrRev(sousdossier, "\"))
            ActiveCell.Offset(1, 0).Select
            Call scan(sousdossier)
        Next
     
    End Sub
    Il me semble de mémoire qu'il faut ajouter la référence externe : Microsoft Scripting Runtime. A tester sans et avec pour voir.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Merci je m'en suis sorti mais dans ma boucle les 2 premiers sous-dossiers trouvés dans le dossier maître s'appellent :

    . pour le premier

    "" pour le second

    D'où peuvent venir ces répertoires (non visibles avec Exporateur Windows)

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    .. désigne le répertoire parent
    . désigne le repertoire racine.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Merci c'est bon

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AppleScript] Supprimer des sous dossiers sans supprimer les fichiers
    Par mathieu707 dans le forum AppleScript
    Réponses: 9
    Dernier message: 19/03/2018, 17h58
  2. Supprimer dans les sous dossiers
    Par labusette dans le forum VBScript
    Réponses: 10
    Dernier message: 12/09/2011, 11h01
  3. Réponses: 5
    Dernier message: 16/09/2006, 23h39
  4. [Librairies] Comment gérer les sous dossiers INBOX avec IMAP
    Par Cr@zyDeep dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 18/05/2006, 12h21
  5. Supprimer des sous-dossiers selon des critères
    Par Dertron dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 18/01/2006, 15h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo