XL 2016 Creation de dossier et sous dossier depuis Excel

BenBenIS

XLDnaute Nouveau
Bonjour le forum,

Avant tout, un grand merci a tout les gurus Excel qui nous aident et partagent leur expertise ! 🙏

Voila, je cherche a créer une longue arborescence dans explorer depuis Excel avec dossier et sous dossier.
Je pense que ça peut se faire via powershell mais mes compétences sont limitées.

Est-ce quelqu'un peut m'aider svp ?

Ci joint le fichier Excel en question.

Merci
 

Pièces jointes

  • FOLDER STRUCTURE.xlsx
    18.7 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
comme ceci
demo1.gif
 

TooFatBoy

XLDnaute Barbatruc
je peux faire un peu de manuel ensuite, pas grave :)
Soit, mais Ă  partir de la ligne 74, ce sont les noms de tous les dossiers des niveaux 4, 5 et 6 qui sont faux.
Ca fait beaucoup de noms Ă  rectifier (environ 500, Ă  vue de pif)).


Autre problème : il ne faut pas de caractères spéciaux genre / ou : ou \ dans les noms des dossiers. ;)
 
Dernière édition:

BenBenIS

XLDnaute Nouveau
Soit, mais Ă  partir de la ligne 74, ce sont les noms de tous les dossiers des niveaux 4, 5 et 6 qui sont faux.
Ca fait beaucoup de noms Ă  rectifier (environ 500, Ă  vue de pif)).


Autre problème : il ne faut pas de caractères spéciaux genre / ou : ou \ dans les noms des dossiers. ;)
Ok je corrige ça, tu peux faire l’arborescence ensuite ?
 

TooFatBoy

XLDnaute Barbatruc
Ca y est, j'ai pondu un truc, mais ATTENTION, quand ou joue avec les créations de dossiers et que le code est boiteux, on risque de se retrouver avec un gros bazar !!!

VB:
Sub CreerArborescence()
'
Dim DerLig As Long, x As Long, y As Long
Dim Depart As Range
Dim DernierDossier As String

    ChDrive Left(ThisWorkbook.Path, 3)
    ChDir ThisWorkbook.Path
    DerLig = ActiveSheet.UsedRange.Rows.Count
    x = 1
    y = 2
    With ActiveSheet
        While y < DerLig
            If .Cells(y, x).Value <> "" Then
                DernierDossier = ".\" & .Cells(y, x).Value
                MkDir (DernierDossier)
                y = y + 1
            Else
                ChDir (DernierDossier)
                x = x + 1
                While .Cells(y, x).Value = "" And x > 1
                    ChDir (".\..\")
                    x = x - 1
                Wend
            End If
        Wend
    End With

End Sub
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Arf ! :( Ca plante Ă  la ligne 701 parce que l'arborescence dans ton tableau ne convient plus : il y a des lignes vides.

Donc, supprimer les lignes vides dans ton tableau, et tout devrait rentrer dans l'ordre. ;)
 

Pièces jointes

  • FOLDER STRUCTURE.xlsm
    33.4 KB · Affichages: 6
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Franchement, la structure de ton tableau était absolument parfaite (à part les lignes vides). 🤩

Depuis le temps que j'essayais de trouver une façon claire de représenter une arborescence de disque dur, j'ai enfin trouvé mon bonheur. 👍

Le fait que tu aies sauté une ligne à chaque nouveau niveau m'a permis de pondre un code relativement simple.
 

Discussions similaires

Statistiques des forums

Discussions
313 769
Messages
2 102 234
Membres
108 181
dernier inscrit
Chr1sD