Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Création de dossiers à partir d'une Base de Données

APPRENTI:)

XLDnaute Nouveau
Tout à bord, merci à vous pour votre aide souvent précieuse !!!

Habituellement, j'arrive à obtenir ce que je souhaite avec des formules Excel. Mais pour ce dernier, je pense qu'il faut passer en VBA, et pour le coup, je n'y connais rien !
Je vous explique mon souhait :

J'ai créé une base de donnée qui renseigne des détails sur des clients.

Il y a 6 désignations différentes dans la Base de Données : CHANTIER, GROUPE, FOURNISSEUR, ENTREPRISE, ARCHITECTE, PARTICULIER qui correspondent à 6 Dossiers Types présents sur le bureau.
Puis une colonne nom.

Sur le bureau, en plus des 6 dossiers Types, il y a 6 dossiers pour recueillir les nouveaux dossiers.

L'idée est par exemple, lorsque j'ajoute un nom X avec la désignation CHANTIER dans la base de données, le dossier CHANTIER TYPE qui se trouve sur le bureau soit copié et renommé X puis placé dans le dossier CHANTIER.

Idem, si j'ajoute un nom Y avec la désignation FOURNISSEUR dans la base de données, le dossier FOURNISSEUR TYPE qui se trouve sur le bureau soit copié et renommé Y puis placé dans le dossier FOURNISSEUR.

Et cela pour les 6 désignations différentes.

J'ai créé un dossier avec les différents dossiers et fichiers, comment puis je vous l'envoyer ?

Merci a vous, et bon confinement !!
 

Pièces jointes

  • Base de Données.xlsx
    45.4 KB · Affichages: 19
Solution
Avec ce dossier (3) et cette macro les dossiers TYPE sont copiés et A B C... créés une seule fois :
VB:
Sub Renommer_Transferer()
Dim fso As Object, chemin$, tablo, i&, dossier1$, dossier2$, dossier3
Set fso = CreateObject("Scripting.FileSystemObject")
chemin = ThisWorkbook.Path & "\"
tablo = Feuil1.UsedRange.Resize(, 3)
For i = 3 To UBound(tablo)
    If tablo(i, 1) <> "" And tablo(i, 3) <> "" Then
        dossier1 = chemin & UCase(tablo(i, 1))
        dossier2 = dossier1 & " TYPE"
        dossier3 = dossier1 & "\" & tablo(i, 3)
        If Dir(dossier1, vbDirectory) = "" Then MkDir dossier1 'crée le dossier s'il n'existe pas
        If Dir(dossier2, vbDirectory) = "" Then MkDir dossier2 'crée le dossier s'il n'existe pas
        If...

job75

XLDnaute Barbatruc
Téléchargez le dossier zippé joint et ouvrez le fichier Base de données(1).xlsm.

La macro du bouton "Renommer et transférer les dossiers" :
VB:
Sub Renommer_Transferer()
Dim fso As Object, chemin$, tablo, i&, dossier1$, dossier2$, dossier3
Set fso = CreateObject("Scripting.FileSystemObject")
chemin = ThisWorkbook.Path & "\"
tablo = Feuil1.UsedRange.Resize(, 3)
For i = 3 To UBound(tablo)
    If tablo(i, 1) <> "" And tablo(i, 3) <> "" Then
        dossier1 = chemin & UCase(tablo(i, 1))
        dossier2 = dossier1 & " TYPE"
        dossier3 = dossier1 & "\" & tablo(i, 3)
        fso.copyfolder dossier2, dossier3
    End If
Next
End Sub
 

Pièces jointes

  • DOSSIER(1).zip
    517 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bien sûr si des dossiers n'existent pas il faut les créer, il est donc plus prudent d'utiliser :
VB:
Sub Renommer_Transferer()
Dim fso As Object, chemin$, tablo, i&, dossier1$, dossier2$, dossier3
Set fso = CreateObject("Scripting.FileSystemObject")
chemin = ThisWorkbook.Path & "\"
tablo = Feuil1.UsedRange.Resize(, 3)
For i = 3 To UBound(tablo)
    If tablo(i, 1) <> "" And tablo(i, 3) <> "" Then
        dossier1 = chemin & UCase(tablo(i, 1))
        dossier2 = dossier1 & " TYPE"
        dossier3 = dossier1 & "\" & tablo(i, 3)
        If Dir(dossier1, vbDirectory) = "" Then MkDir dossier1 'crée le dossier s'il n'existe pas
        If Dir(dossier2, vbDirectory) = "" Then MkDir dossier2 'crée le dossier s'il n'existe pas
        fso.copyfolder dossier2, dossier3
    End If
Next
End Sub
Dossier et fichier (2).
 

Pièces jointes

  • DOSSIER(2).zip
    517.1 KB · Affichages: 8

APPRENTI:)

XLDnaute Nouveau
merci! c'est déjà un bon début!!

Alors la macro créer bien les dossiers aux bons endroits.
Par contre, ces dossiers et fichiers créés vont être remplis et lorsque que j'inscris des informations dedans et que j'active la macro, les nouveaux dossiers apparaissent mais tout le contenu des autres s'efface.
Si le dossier du même nom existe déjà, il faudrait que la macro ne le remplace pas par un nouveau dossier. Ainsi on conserverait les informations renseignées.

quelle est la différence avec 2e code ??

merci !!!!!
 

patricktoulon

XLDnaute Barbatruc
re
bonjour
en fait tu t'ennuie a creer un dossier en copiant les dossier type dans les dossier correspondant sous le nom de x

tu a 3 modèles de fichiers dans les types
alors créé un dossier dans le dossier correspondant a la colonne désignation sous le nom x
et copie a l’intérieur tes modèles de fichier
et en plus tes Model de fichiers sont identiques dans tout des dossiers type
et meme pire tes deux fichiers docx sont vides dans tout les types
LOL
 

job75

XLDnaute Barbatruc
Par contre, ces dossiers et fichiers créés vont être remplis et lorsque que j'inscris des informations dedans et que j'active la macro, les nouveaux dossiers apparaissent mais tout le contenu des autres s'efface.
C'est normal puisque ce sont les dossiers TYPE qui sont renommés A B C etc et copiés, comme vous l'avez demandé.

Ce sont les contenus des dossiers TYPE qu'il faut modifier et non pas ceux des dossiers A B C etc.
quelle est la différence avec 2e code ??
Vous avez des yeux pour voir.

Salut patricktoulon.
 

APPRENTI:)

XLDnaute Nouveau

ReBonjour et merci à toi Job75,

C'est exact, ce sont les dossier type qui sont renommé A B C.
Je pensai que la macro pourrait fonctionner seulement pour les nouveaux noms. Pour créer le dossier type pour chaque personne ou projet entrant.
 

APPRENTI:)

XLDnaute Nouveau
j'ai vidé les dossiers de leurs données mais ils contiennent des outils, des informations et des statistiques qui se modifient au fil de l'avancement des différents projets.

ils est importants que ces informations soient conservés et qu'il n'y ai que les nouveaux nom qui bénéficient des dossiers types
 

Discussions similaires

Réponses
27
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…