Création de dossiers & de sous-dossiers-Erreur dans mon code

Bonjour à tous.

J'ai pris la décision de poster mon problème car si beaucoup de sujets traitent de la création de dossiers depuis des cellules dans Excel, je n'ai pas trouvé de réponse à mon cas précis.

Je voudrais arriver à générer dans un répertoire les dossiers de la colonne A et les sous dossiers associés lorsqu'il y en a.

Mon fichier excel se présente comme ceci:

Dossier A4

Et voilà mon code:

Sub créer_dossiers()

MkDir "C:\test"
On Error Resume Next

Dim maxligne As Byte, ligne As Byte
maxligne = Range("A65536").End(xlUp).Row
ligne = 2
repactif = ThisWorkbook.Path

rep = Range("B" & lign).Value
sousrep = Range("C" & ligne + 1).Value
soussousrep = Range("D" & ligne + 1).Value
soussoussousrep = Range("E" & ligne + 1).Value

For ligne = 2 To maxligne
MkDir rep
ligne = ligne + 1
ChDir repactif
If sousrep <> "" Then _
MkDir sousrep
ligne = ligne + 1
ChDir repactif
 If soussousrep <> "" Then _
 MkDir soussousrep
ligne = ligne + 1
ChDir repactif
 If Not soussousrep <> "" Then _
 MkDir soussoussousrep
ligne = ligne + 1
ChDir repactif

ChDir repactif
Next ligne
End Sub

Je n'ai pas de message d'erreur précis à l’exécution mais seul le répertoire C:\test est créé.

Je me dis que le problème pourrait venir de là:

repactif = ThisWorkbook.Path

mais je n'ai pas vraiment de piste et je ne sais pas vers où chercher, sachant que j'aimerai corrigé mon code plutôt que de partir sur quelque chose de complètement différent.

Si quelqu'un peut m'apporter un peu d'aide je lui serai très reconnaissant

bonjour

pour voir le code planté il faut supprimer la ligne

on error resume next

a mon avis l'erreur provient plutot que pour creer les sous-sous dossier il faut indiquer le chemin repertoire courant + sous dossier

ou tu as peut-etre oublier les "\" mais sans fichier difficile a dire....

fred

Merci fred pour ta réponse.

Du coup j'ai viré la ligne on error resume next et j'ai maintenant une erreur 400.

Et en effet mon erreur vient peut-être du fait que je ne prend pas le path complet, car je pensais que ChDir repactif me positionnait déjà dans le bon chemin. Je vais essayer ça...

c'est donc ce que je disais

pour pouvoir faire un sous sou dossier il faut mettre tout le chemin y compris les dossier parents

et tu as oublié de mettre des "\" pour creer tes sous dossiers ...

fourni un fichier avec ta macro cela sera plus simple....

fred


voir ici

https://youtu.be/EbNYLzTz5wM

pour voir comment joindre un fichier

fred

En effet Fred merci, j'avais pas mis de chemin complet en pensant qu'il me suffisait de faire un

repactif = ThisWorkbook.Path
ChDir repactif

et ensuite de faire un MkDir avec juste le nom du dossier.

Mais visiblement ça ne marche pas comme ça. Du coup j'ai fait ça:

MkDir "C:\test\" & rep & "\" & sousrep

Au passage j'ai transformé mes If en While car il peut y avoir plusieurs sous-répertoires dans le même répertoire mais pour l'instant il ne prend que le premier avec le message d'erreur "Erreur d'accès Chemin/fichier"

En tout cas ça avance doucement et voilà le code à jour.

Sub créer_dossiers()

MkDir "C:\test"
Dim maxligne As Byte, ligne As Byte
maxligne = Range("A65536").End(xlUp).Row
ligne = 2
repactif = ThisWorkbook.Path

rep = Range("B" & ligne).Value
sousrep = Range("C" & ligne + 1).Value
soussousrep = Range("D" & ligne + 1).Value
soussoussousrep = Range("E" & ligne + 1).Value

For ligne = 2 To maxligne
MkDir "C:\test\" & rep
ligne = ligne + 1
ChDir repactif
While sousrep <> ""
MkDir "C:\test\" & rep & "\" & sousrep
ligne = ligne + 1
ChDir repactif
 While soussousrep <> ""
 MkDir "C:\test\" & rep & "\" & sousrep & "\" & soussousrep
ligne = ligne + 1
ChDir repactif
 While Not soussousrep <> ""
 MkDir "C:\test\" & rep & "\" & sousrep & "\" & soussousrep & "\" & soussoussousrep
ligne = ligne + 1
ChDir repactif
Wend
Wend
Wend

ChDir repactif
Next ligne
End Sub

Fred, je n'ai pas posté le fichier car il n'y a rien à apprendre de plus que la capture d'écran et le code ci-dessus... Et merci encore pour ton aide, je continue de creuser

Bonjour,

Fred, je n'ai pas posté le fichier car il n'y a rien à apprendre de plus que la capture d'écran

Oui mais beaucoup comme moi n'ont aucune envie de s'embêter à construire un fichier (approximativement en plus) qui est déjà existant et que tu ne veux pas mettre.

C'est toi qui voit...

eric

Bonsoir

Bonsoir Eric

je suis dans le même état d'esprit qu'Eric, je ne vais pas essayé de faire un fichier test sachant qu'il suffit que tu poste celui que tu as fait.... pour pouvoir t'aider

Fred

Bonsoir à tous,

Ci-joint une proposition à tester.

Pour info, pour ce genre de traitement, en théorie il faut utiliser la récursivité, mais c'est vite casse-tête !!! Abandonné cette piste ...

Et je partage évidemment le fait qu'un fichier en exemple évite de le refaire à la main.

Bonne nuit

Bouben

Rechercher des sujets similaires à "creation dossiers erreur mon code"