Copie de fichiers dans un repertoire qui viens d'etre créer

coxsurf

XLDnaute Nouveau
bonjour,
j'ai une liste de reference
exemple:
liste1
liste2
liste3
d'apres cette liste grace a une macro que j'ai trouvé sur ce forum
je crée des repertoires qui portent le meme nom dans c:\essai
c:\essai\liste1
c:\essai\liste2
c:\essai\liste3
le code pour la 1er partie
Sub nouveau_dossier()
Code:
Dim Cell As Range, Chemin As String
Chemin = "C:\essai\"
On Error Resume Next

For Each Cell In Range("A2:A" & Range("A65536").End(xlUp).Row)
'remplace les a par la colonne consernée
If Cell <> "" Then MkDir Chemin & Cell
ChDir Chemin & Cell.Value

Next
End Sub

et dans ces repertoires ci dessus j'aimerais que la macro me copie des repertoires et des fichiers type qui sont dans c:\type
sachant que je rajoute des lignes regulierement dans mon fichier excel
donc il faut que les repertoires type ne soit copiés que avec les nouveaux repertoires crées
si quelqu'un peut me filer un coup de main
 

coxsurf

XLDnaute Nouveau
Re : Copie de fichiers dans un repertoire qui viens d'etre créer

pour le test j'ai crée une nuvelle feuille avec des chiffre de 1 à 10 dans la colonne A
j'ai lancé la macro
ca marche
ensuite j'ai rajouté en dessous 11 12
et j'ai relancé la macro
et c'est la que ca a planté
je suis en excel 2007
 

bouley

XLDnaute Nouveau
Re : Copie de fichiers dans un repertoire qui viens d'etre créer

bonjour tototiti,
tu as raison mais c'est une de mes habitudes !

je vous propose un code qui n'utilise de le FileSystemObject

Code:
Sub test()
Dim FS As FileSystemObject
Set FS = New FileSystemObject
Dim Cell As Range, Chemin As String
Set FS = CreateObject("Scripting.FileSystemObject")
Chemin = "C:\essai\"


For Each Cell In Range("A2:A" & Range("A65536").End(xlUp).Row)
    If Cell <> "" Then
        If Not FS.FolderExists("chemin" & Cell) Then
            FS.CreateFolder ("chemin" & Cell)
        End If
      FS.CopyFolder "C:\type", Chemin & Cell.Value
    End If

Next
End Sub

@+
 

bouley

XLDnaute Nouveau
Re : Copie de fichiers dans un repertoire qui viens d'etre créer

pour tititoto ( suite ....)

Mon habitude de passser par le référencement vient du fait que l'on accède à la liste des propriétés du fileSystemObject aprés que l'on ai écrit le point :
FS.------>liste des propriétés.

c'est quand même pratique et une sacrée aide à l'écriture du code NON ?

@+
 

tototiti2008

XLDnaute Barbatruc
Re : Copie de fichiers dans un repertoire qui viens d'etre créer

tout à fait, mais si ça a ses avantages (que tu viens de citer), ça peut avoir des inconvénients. par exemple, des références qui sautent sur un projet lorsqu'il est ouvert sur un autre poste, ou des trucs du genre. j'ai vu ça fréquement.
 

bouley

XLDnaute Nouveau
Re : Copie de fichiers dans un repertoire qui viens d'etre créer

TITITOTO
tout à fait d'accord avec toi !

alors, dans le cadre une utilisation intensive du FSO, utiliser le référencement pour le developpement et le create() pour le deploiement me semble une bonne façon de faire !

@+
 

tototiti2008

XLDnaute Barbatruc
Re : Copie de fichiers dans un repertoire qui viens d'etre créer

trés juste, si on prend le temps de reprendre son code avant le déploiement (pas toujours vrai) ;)

c'est trés intéressant, mais j'ai peur que ça n'aide pas beaucoup coxsurf, tout ça.
ton code est parfait mais je ne vois pas pourquoi un CreateFolder marcherait mieux qu'un MkDir lorsque le nom du dossier n'est pas valide.
La question est donc : pourquoi essaye-t-il de créer un dossier si la celule est vide ?
 

coxsurf

XLDnaute Nouveau
Re : Copie de fichiers dans un repertoire qui viens d'etre créer

Bouley
non j'avais pas fais
maintenant c'est fait
ca marche

sauf qu'il me crée un dossier avec le bon nom
et un avec le meme nom mais avec marqué "chemin" devant:confused:
exemple repertoire
liste1
creé et remplit
et cheminliste1
crée mais vide
alors qu'il n'y a pas de cheminliste1 dans mon tableau
 

bouley

XLDnaute Nouveau
Re : Copie de fichiers dans un repertoire qui viens d'etre créer

oops ! ! !
correction !

Code:
Sub test()
Dim FS As FileSystemObject
Set FS = New FileSystemObject
Dim Cell As Range, Chemin As String
Set FS = CreateObject("Scripting.FileSystemObject")
Chemin = "C:\essai\"


For Each Cell In Range("A2:A" & Range("A65536").End(xlUp).Row)
    If Cell <> "" Then
        If Not FS.FolderExists(Chemin & Cell) Then
            FS.CreateFolder (Chemin & Cell)
        End If
      FS.CopyFolder "C:\type", Chemin & Cell.Value
    End If

Next
End Sub

scuse !
 

Discussions similaires

Statistiques des forums

Discussions
312 323
Messages
2 087 290
Membres
103 509
dernier inscrit
mcn