Adapatation fileSystemObject

  • Initiateur de la discussion Initiateur de la discussion vinz602
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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:
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 ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
806
Retour