Génération automatique de répertoires et de sous-répertoires

Bonjour à toutes et à tous,

Je sollicite l'aide de de ce site pour le développement d'une MACRO EXCEL me permettant de générer automatiquement sous WINDOWS des répertoires et des sous-répertoires à partir d'un fichier EXCEL calibré, répertoriant ainsi l'ensemble des informations nécessaires.

Je suis totalement novice en la matière (VBA sous EXCEL), et malgré pas mal de recherches, je n'ai pas trouvé de réponse à mon problème.

Pour y voir plus clair, vous trouverez en pièce jointe un fichier EXCEL récapitulant ma problématique et le "cahier des charges" que je me suis fixé" (et qui deviendra le votre pour les courageux adeptes de ce site ... ).

Je vous remercie pour l'aide que vous pourrez me fournir, et je vous souhaite une bonne soirée.

A bientôt.

440fichier.zip (18.75 Ko)

Bonjour SnoozeT le forum

je ne sais pas si c'est moi qui ne suis pas réveillé mais à la lecture du fichier j'ai pas tout compris

tu veux créer des dossiers et des fichiers?

les dossiers suivant les nom en colonne A???

bref des explications

a+

Papou

Bonjour Papou,

Je pensais que j'avais été clair dans le fichier en pièce jointe . J'essaye donc d'être le plus précis possible ci-dessous.

Je souhaite générer - via une Macro EXCEL dans le fichier EXCEL transmis - des dossiers WINDOWS correspondant à la liste des intitulés de la colonne A ; chaque dossier prenant comme nom la valeur de chacune des cellules (Dossiers correspondent au Niveau 1).

Le chemin de destination de chaque dossier à générer est précisé dans la colonne R, dont les paramètres peuvent être variables en fonction des valeurs remplies dans les colonnes C à O (focntion CONCATENER).

Je souhaite par la suite, que soit automatiquement générés des sous-dossiers dans chacun des dossiers précédemment créés. Ces sous-dossiers correspondent au Niveau 2.

Puis, je souhaite que soit générés automatiquement des sous-dossiers dans chacun des sous-dossiers précédemment créés. Ces nouveaux sous-dossiers correspondent au Niveau 3.

On a là affaire à la création d'une arborescence type avec embriquement finalement.

Les noms des sous-dossiers sont précisés dans le fichier EXCEL joint.

L'intérête pour moi de tout calibrer sur un fichier EXCEL est que ce fichier est destiné à terme à plusieurs personnes, et je ne souhaite pas que celles-ci accèdent à la MACRO pour des modifications "en dur". De plus, un tel outil sera d'autant plus valorisable pour d'autres opérations du même style.

J'insiste sur les points 2, 3, 4, 7 de mon cahier des charges (cf. fichier joint) : ceci constituent des obligations pour moi dans la mesure où la quantité de dossiers à générée est extrêmement importante.

J'espère que cela est plus clair dorénavant.

En tout cas, merci à toi de t'être penché sur mon problème.

Dans l'attente de tes réponses .

A bientôt.

Bonjour Snooze le forum

ton fichier en retour avec ta demande ( pour le nombre de dossiers et l'age de la personne qui a cliqué sur le bouton je te laisse faire tout seul)

a+

Papou

693snoozet-v2.xlsm (27.73 Ko)

reBonjour Snooze le forum,

bon allez je suis gentil j'ai rajouté dans la feuille feuil2 la liste des fichiers générés

mais le comptage et l'âge de la personne qui as cliqué sur le bouton, là je te laisse faire tout seul

a+

Papou

601snoozet-v3.xlsm (27.86 Ko)

Bonjour Patou,

Je suis véritablement impressionné de constater comment tu as répondu à mes demandes sur cette problématique ! Un très grand merci à toi ! De l'excellent boulot. Il ne me reste effectivement plus qu'à exploiter l'onglet Feuil2 pour y préciser l'âge et pourquoi pas le sexe de la personne qui a lancé la macro .

Dans un souci d'apprentissage du VBA, puis-je te demander de me retransmettre le fichier avec la description des étapes du code VBA - directement dans le code - avec le plus de détails possible ... Je sais, je te demande encore un service, mais j'avoue avec du mal à "adapter" le code pour notamment traiter non plus 10 cellules, mais par exemple 1000. Je me doute qu'il faut tout simplement remplacer le 10 par 1000 ; mais je sèche sur le pourquoi du comment pour les valeurs 18, 20, 22, 24, 26 ...

Un explicatif pas à pas m'aiderait beaucoup à comprendre la démarche.

For i = 6 To Feuil1.Range("A" & Rows.Count).End(xlUp).Row

verif = .Cells(i, 18)

If Dir(verif & .Cells(i, 1), vbDirectory) = "" Then

MkDir (verif & .Cells(i, 1)): Feuil2.Range("A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1) = verif & .Cells(i, 1)

End If

Next i

For i = 6 To Feuil1.Range("A" & Rows.Count).End(xlUp).Row

For a = 20 To 22 If Dir(verif & .Cells(i, 1) & "\" & .Cells(i, a), vbDirectory) = "" Then

MkDir (verif & .Cells(i, 1) & "\" & .Cells(i, a)): Feuil2.Range("A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1) = verif & .Cells(i, 1) & "\" & .Cells(i, a)

End If

Next a

Next i

For i = 6 To Feuil1.Range("A" & Rows.Count).End(xlUp).Row

verif = .Cells(i, 18) & .Cells(i, 1) & "\"

For a = 20 To 22

For n = 24 To 26 If Dir(verif & .Cells(i, a) & "\" & .Cells(i, n), vbDirectory) = "" Then

MkDir (verif & .Cells(i, a) & "\" & .Cells(i, n)): Feuil2.Range("A" & Feuil2.Range("A" & Rows.Count).End(xlUp).Row + 1) = verif & .Cells(i, a) & "\" & .Cells(i, n)

End If

Next n

Next a

Next i

En tout cas, je te remercie encore pour le temps que tu as pu accorder à ma demande.

Cela va énnnnnoooooorrrrrrrrmmmmmmément me servir, et bien me faciliter la vie. Cela donne envie de s'aventurer davantage dans le VBA ! Merci à toi.

A bientôt !

SnoozeT

Re Snoozet le forum

je vois que tu aimes la plaisanterie, super j'adore, alors je vais te commenter le code mais pour un début en VBA pour toi, c'est tout de même à mon sens difficile à comprendre, mais je vais tenter de t'expliquer tout de même le plus simplement possible

je commente la macro et je te la repasse dans un fichier

a+

Papou

Re SnoozeT le forum

ton fichier en retour avec le rajout du nombre de dossiers créés après la liste des dossiers et le temps d'exécution

et pour traiter 1000 cellules à la place de 10 tu n'as rien à changer sauf à écrire dans la feuille 1 les 1000 adresses dans la colonne R

dans les colonnes je ne sais plus mais contenant 01 02 03 et le niveau3 avec suivi1 suivi 2 et suivi 3 et la macro fera le reste

a+

Papou

700snoozet-v4.xlsm (34.80 Ko)

Bonjour Papou !

Merci pour tes compléments : la macro est un devenu un véritable outil capitalisable pour la suite de mes affaires. Grand merci !

J'ai bien pris le temps d'analyser tes explications (oui oui je sais, 4 jours ... ), et je dois dire que je comprend bien le principe général. C'est clair, détaillé pas à pas, c'est ce que je désirais.

Quelques questions :

> Fonction : x=split(.Cells(i,18). Je ne suis pas bien sûr de comprendre le principe de celle-ci. Concrêtement, tu enlève les slash de manière à tester globalement le nom lettre par lettre ? Peux-tu être plus explicite STP

> Concernant les msgbox : tu les as désactiver dans un 1er temps dans le code, mais ils sont potentiellement activables pour jalonner la macro en cas de fichier déjà existant ? C'est bien çà ?

Bon, on passe à la suite du code ?

@+

SnoozeT

Re Snoozet le forum

Attention ce n'est pas une fonction !!!

Pour le teste lettre par lettre, Non pas du tout tu n'as pas compris, je pensais te l'avoir détaillé suffisamment, mais je recommence.

Comme tu as dis que tu pouvais avoir dans les différentes lignes des adresses différentes, il faut bien vérifier si elles sont bien présentes avant de générer les niveaux 2 et 3.

Pour faire le contrôle, je décompose le contenu de la cellule colonne R et j'en fait un tableau donc en gros si tu as C:\dddd\aaaa\xxxx\nnnn dans ta cellule

le tableau x sera

x(0)=C:

x(1)=dddd

x(2)=aaaa

x(3)=xxxx

x(4)=nnnn

et ensuite dans la boucle je teste si le chemin existe pour x(0), si oui, je continue et je rajoute x(1) à x(0) donc je fais x(0)& "\" & x(1)

pour recomposer l'adresse de la cellule colonne R et si le chemin existe je continu, autrement je craie le chemin, et je rajoute ensuite "\" & x(2) à l'ensemble déjà créé, jusqu’à la fin du tableau x

Pour les messages oui c'est cela, comme tu voulais un message, je l'ai mis, mais comme je trouve l'idée idiote et inutile, je l’ai pour mon compte, désactivé et passé en commentaire, si tu veux l'activer tu retires juste les apostrophe devant les lignes

Mais je te promet que c'est une très mauvaise idée.( tu vas avoir des messages de partout à l’utilisation pour la première fois et tu vas dans ton cas devoir cliquer 125 fois !!!!! MAUVAIS très MAUVAIS et long pour rien)

a+

papou

Re Bonjour Snoozet le forum

bon alors j'ai rajouté des infos dans le commentaire de la macro, mais lis bien le post précédent c'est important pour comprendre

a+

Papou

142snoozet-v5.xlsm (33.08 Ko)
Rechercher des sujets similaires à "generation automatique repertoires"