Copier/coller un dossier
Bonjour,
Je me confronte à un petit problème VBA:
Je souhaite copier un dossier contenant des sous-dossier et des fichiers dans un autre répertoire. Après plusieurs recherches sur internet, je me retrouve avec deux codes:
Dim FSO
Dim sfol As String, dfol As String
sfol = "C:\mesdocuments"
dfol = "C:\Users\Public"
Set FSO = CreateObject("Scripting.FileSystemObject")
FSO.CopyFolder sfol, dfolCelui la ne marche pas du tout et le deuxième ci dessous copie les fichiers plutôt que le dossier complet...Si vous voyez des erreurs dans mon code je suis preneur.
Dim FSO As Object
Dim FromPath As String
Dim ToPath As String
FromPath = "C:\mesdocuments" '<< Change
ToPath = "C:\Users\Public" '<< Change
If Right(FromPath, 1) = "\" Then
FromPath = Left(FromPath, Len(FromPath) - 1)' End If
If Right(ToPath, 1) = "\" Then
ToPath = Left(ToPath, Len(ToPath) - 1)
End If
Set FSO = CreateObject("scripting.filesystemobject")
FSO.CopyFolder FromPath, ToPathMerci d'avance pour votre aide.
EDIT: En mettant la reference Microsoft Scripting Runtime les deux programmes se lancent mais copient les fichiers plutôt que le dossier
Bonjour
ci joint un code qui fonctionne chez moi :
Sub copie_dossier()
Dim oFSO As Scripting.FileSystemObject
Dim source$, dest$
source = "C:\Users\PC-Fred-W7\Downloads\test"
dest = "C:\Users\PC-Fred-W7\Desktop\nouvelemplacement"
Set oFSO = New Scripting.FileSystemObject
oFSO.CopyFolder source, dest, True
End Subne pas oublie de mettre la référence Microsoft scripting
fred
pour info ce code copie tous les fichiers contenu dans le dossier "test" ainsi que ses sous dossiers
fred
Bonjour fred2406,
Effectivement le code fonctionne mais il copie l'ensemble des fichiers présent dans le dossier et pas le dossier en lui même.
Par exemple si j'ai un arborescence de type
Documents→images→image1.png ; image2.png ; image3.png....
Je souhaite déplacer le dossier images avec ce qu'il y a dans le dossier, et malheureusement avec ton code et le mien, ce sont juste les fichiers à l’intérieur du dossier qui sont copiés.
a23peter43 a écrit :Je souhaite déplacer le dossier images ....
re tu souhaites déplacer ou copier ?? car c'est pas la même chose....
effectivement l’instruction copyfolder copie tous les fichiers à l’intérieur du dossier indiquer comme source... il suffit donc dans le chemin de destination d'avoir un dossier qui porte le même nom que le dossier source
dans l'exemple que j'ai fourni
le contenu du dossier test est copié dans le dossier nouvelemplacement
maintenant si tu veux qu'il existe test aussi dans le nouvel emplacement soit tu creer à la main et tu fais
dest = "C:\Users\PC-Fred-W7\Desktop\nouvelemplacement\test"soit tu vérifie qu'il existe par code, et si il existe pas tu le créé
tu sais faire ?
Fred
C'est bien copier et non pas déplacer autant pour moi ^^
C'est dommage qu'il n'existe pas de fonction pour copié directement le fichier mais du coup je vais créer un dossier et ensuite le compléter avec l'instruction que tu m'as donné. Je sais faire c'est avec la fonction MkDir je crois bien.
Je te remercie pour tes informations et pour ton aide.
voici avec une création dynamique du nom du dossier source dans le dossier de destination
Sub copie_dossier()
Dim oFSO As Scripting.FileSystemObject
Dim source$, dest$, dos$
source = "C:\Users\PC-Fred-W7\Downloads\test"
dest = "C:\Users\PC-Fred-W7\Desktop\nouvelemplacement"
dos = StrReverse(Split(StrReverse(source), "\")(0))
dest = dest & "\" & dos
Set oFSO = New Scripting.FileSystemObject
If Not oFSO.FolderExists(dest) Then MkDir (dest)
oFSO.CopyFolder source, dest, True
End Subfred