Adapatation fileSystemObject

vinz602

XLDnaute Junior
Bonjour à tous le monde

je souhaites déplacer des dossiers selon les chemins "source et destination" renseigné dans une colonne de mon fichier excel

je suis sur ce script mais comment mettre la variable du chemin "source (colonne B) et destination (colonne C)" et de créer une boucle sur chaque ligne avec OK en colonne G

Qui peux m'aider à résoudre ma problématique

VB:
Sub deplacement

Dim fs As New Scripting.FileSystemObject


fs.CreateFolder "e:\data\excel"


fs.CopyFolder "c:\data\excel", "e:\data\excel"


fs.DeleteFolder "c:\data\excel"


Set fs = Nothing

end Sub
 

Dranreb

XLDnaute Barbatruc
Comme ça par exemple :
VB:
Sub Déplacement()
   Dim FS As New Scripting.FileSystemObject, TDon(), L As Long
   TDon = Intersect(ActiveSheet.[B2:G1000000], ActiveSheet.UsedRange).Value
   On Error Resume Next
   For L = 1 To UBound(TDon, 1)
      If TDon(L, 6) = "OK" Then
         Err.Clear: FS.CopyFolder TDon(L, 1), TDon(L, 2)
         If Err = 0 Then FS.DeleteFolder TDon(L, 1)
         End If
      Next L
   End Sub
 

vinz602

XLDnaute Junior
Re

j'ai modifié les colonnes vu que mon fichier à changer un peu :)
par contre il y a une erreur : Erreur de compilation : type défini par l'utilisateur non défini
le sub Déplacement est surligné en jaune.
Avez vous une idée de l'erreur?

par contre faut il rajouter une ligne pour créer le dossier dans la destination?
est ce que ce serait : "FS.CreateFolder TDon(L, 12)" avant le copyfolder ?


VB:
Sub Déplacement()

   Dim FS As New Scripting.FileSystemObject, TDon(), L As Long

   TDon = Intersect(ActiveSheet.[A2:L1000000], ActiveSheet.UsedRange).Value

   On Error Resume Next

   For L = 1 To UBound(TDon, 1)

      If TDon(L, 7) = "OK" Then

         Err.Clear: FS.CopyFolder TDon(L, 11), TDon(L, 12)

         If Err = 0 Then FS.DeleteFolder TDon(L, 11)

         End If

      Next L

   End Sub
 

Dranreb

XLDnaute Barbatruc
La référence Microsoft Scripting Runtime n'est peut être plus cochée.
Je ne suis pas fondé à croire qu'il soit nécessaire de créer le dossier destinataire.
Par contre on devrait encore pouvoir simpifier en utilisant plutôt la méthode MoveFolder du FileSystemObject. Plus besoin du DeleteFolder alors.
 
Dernière édition:

vinz602

XLDnaute Junior
La référence Microsoft Scripting Runtime n'est peut être plus cochée.
Je ne suis pas fondé à croire qu'il soit nécessaire de créer le dossier destinataire.
Par contre on devrait encore pouvoir simpifier en utilisant plutôt la méthode MoveFolder du FileSystemObject. Plus besoin du DeleteFolder alors.
Le movefolder il faudrait mettre le même code en remplaçant par :
....
If TDon(L, 7) = "OK" Then

Err.Clear: FS.MoveFolder TDon(L, 11), TDon(L, 12)

End If.....

Est ce ça ?
 

Discussions similaires

Statistiques des forums

Discussions
312 527
Messages
2 089 355
Membres
104 136
dernier inscrit
redzzo