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, dfol

Celui 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, ToPath

Merci 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 Sub

ne 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 Sub

fred

Rechercher des sujets similaires à "copier coller dossier"