Copier des fichiers à partir d’une liste

Fred J.

XLDnaute Nouveau
Bonjour,

Je travaille sous Windows Xp SP2 et Office 2003.

A l’aide d’une macro, je cherche à copier des fichiers de différents disques durs vers un autre. Pour cela, j’ai une feuille Excel (Feuil1) avec :
-En colonne A tous les fichiers à copier avec leurs chemin (ex: "C:\Documents and Settings\Bureau\Toto.txt" dans la cellule A1).​
-Une zone de texte (TextBox) ou dans celle-ci j’indique le chemin de destination (ex : E:\Archives\)​
-Une case à cocher (CheckBox). Lorsque celle-ci est active, cochée, et s’il y a un doublon de fichier lors de la copie, il faut écraser le fichier du répertoire de destination sinon je passe au fichier suivant.​
-Un bouton de commande (CommandButton), lors d’un appui sur celui-ci je réalise la copie, la macro.​

Niveau débutant en VBA.

Merci par avance
 

Pierrot93

XLDnaute Barbatruc
Re : Copier des fichiers à partir d’une liste

Bonjour Fred

Si j'ai bien compris, regarde le code ci-dessous, suppose un "textbox", un "checkbox" et un "CommandButton" de la barre d'outils "Boîte à outils contrôles" présents sur la feuille. Ce code est à placer dans le module de la feuille concernée (click droit dans l'onglet => visualiser le code et tu colles).

Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim x As String, c As Range
For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
    x = TextBox1.Value & Split(c.Value, "\")(UBound(Split(c.Value, "\")))
    If Dir(x) <> "" Then
        If CheckBox1.Value = True Then FileCopy c.Value, x
    Else
        FileCopy c.Value, x
    End If
Next c
End Sub

Bonne journée
@+
 

Fred J.

XLDnaute Nouveau
Re : Copier des fichiers à partir d’une liste

Bonjour & merci

En effet Pierrot tu as bien compris c'est absolument ça que je voulais. Si je peux me permettre, il me faudrait encore un coup de pouce j'ai 3 petites options à ajouter, si possible:
-Lorsque je rentre dans la "TextBox" le dossier de destination et que celui n'existe pas, je veux que ce dossier se crée automatiquement​
-Un bouton de commande pour mettre en pause la copie​
-Un bouton de commande pour annuler la copie, ceci n'efface pas les fichiers déjà copier.​

Encore merci!
 

Pierrot93

XLDnaute Barbatruc
Re : Copier des fichiers à partir d’une liste

Re

pour la création du dossier si il n'existe pas modifies comme suit :

Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim x As String, c As Range
If Dir(TextBox1.Value, vbDirectory) = "" Then MkDir TextBox1.Value
For Each c In Range("A1:A" & Range("A65536").End(xlUp).Row)
    DoEvents 'Arrête momentanément l'exécution afin que le système d'exploitation puisse traiter d'autres événements
             'ici pour ton bouton pause
    x = TextBox1.Value & "\" & Split(c.Value, "\")(UBound(Split(c.Value, "\")))
    If Dir(x) <> "" Then
        If CheckBox1.Value = True Then FileCopy c.Value, x
    Else
        FileCopy c.Value, x
    End If
Next c
End Sub

par contre attention, le chemin dans la "textbox" ne doit pas se terminer par un "\".

Pour mettre en pause, essaye le code ci-dessous, à associer à un 2ème bouton, à tester...

Code:
Private Sub CommandButton2_Click()
    SendKeys "{F10}"
End Sub

Pour le 3ème bouton pas si simple.... faudrait stocker toutes les actions dans un tableau virtuel... et ensuite être capable de les renvoyer en les inversant les actions. Pas de bouton "annuler" dans vba comme dans Excel....

bonne soirée.
 

Discussions similaires

Réponses
8
Affichages
2 K

Statistiques des forums

Discussions
312 679
Messages
2 090 858
Membres
104 677
dernier inscrit
soufiane12