[VB] Comment copier plusieurs fichiers dans un dossier

Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010 - 18 juin 2010 à 00:46
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010 - 19 juin 2010 à 11:31
Bonjour,
Dans mon programme, j'ai une CheckedListBox qui affiche une liste de tout les fichiers (*.mp3 par exemple) d'un dossier.
Mon problème : je n'arrive pas à trouver une solution pour permettre à mon programme de copier le ou les fichier(s) sélectionné(s) (*.mp3 par exemple) de la CheckedListBox dans un autre dossier. Je souhaiterais que l'action de copier se déclenche lorsque l'on appuie sur un bouton.
Je programme sous visual basic 2008.
Merci beaucoup de votre aide qui me sera grandement utile.

10 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
18 juin 2010 à 12:44
Salut
Commence par taper "copier fichier" dans la recherche de code en .Net et tu auras des exemples ressemblant

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
18 juin 2010 à 14:57
Bonjour,
Vous trouverez la solution ici:
http://plasserre.developpez.com/cours/vb-net/?page=ui-winforms3#LVIII-H-2

en la modifiant pour la copie
 My.Computer.FileSystem.CopyFile("chemin dossier source" & "" & CheckedListBox1.CheckedItems(i).ToString, ("chemin dossier destination" & "" & CheckedListBox1.CheckedItems(i).ToString)


Je vous laisse un peu de travail personnel
Il suffit de chercher un peu comme le dit si bien dit Jack
@+
0
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010
18 juin 2010 à 15:56
Ok merci de votre aide, juste une question : le (i) représente les Items sélectionnés ?
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
18 juin 2010 à 16:49
Oui c'est déclaré comme ceci
Dim i As Integer
C'est une boucle dans l'exemple de:
http://plasserre.developpez.com/cours/vb-net/?page=ui-winforms3#LVIII-H-2
il est déclaré en x ,moi je préfère mettre i, c'est un choix personnel. J'ai fait le programme de copie, mais il faudra faire attention, si il y a un fichier portant le même nom dans le dossier de destination, il y a un bug.Dans ma CheckedListBox il n'y a que les noms des fichiers, c'est pour cela qu'il faut mettre le chemin du dossier, sinon il faut mettre le chemin complet.
@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010
18 juin 2010 à 19:02
Ok merci beaucoup
0
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010
18 juin 2010 à 19:09
J'ai tester votre méthode mais il y a un bug :
"Le format du chemin d'accès donné n'est pas pris en charge."
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
18 juin 2010 à 21:30
J'ai fait le programme et cela fonctionne.
Tout d'abord il faut qu'il n'y est que les noms des fichiers avec leur extension dans la CheckedListBox. Ensuite un label avec le chemin du dossier source.Après vous mettez un bouton pour créer un dossier de destination avec un label avec le chemin de destination.
Avec ce code dans un bouton:
 If CheckedListBox1.CheckedItems.Count <> 0 Then
            'S'il y a des éléments cochés une boucle balaye les éléments cochés 
            '(collection CheckedItems) et affiche le numéro de l'élément DANS LA LISTE toutes lignes.
            Dim i As Integer

            For i = 0 To CheckedListBox1.CheckedItems.Count - 1
                My.Computer.FileSystem.CopyFile(Lblsource.Text & "" & CheckedListBox1.CheckedItems(i).ToString, Lblcible.Text & "" & CheckedListBox1.CheckedItems(i).ToString)
            Next i
        End If

@+ Le Pivert
0
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010
18 juin 2010 à 23:09
J'ai suivi à la lettre votre méthode et toujours cet erreur :
"Le format du chemin d'accès donné n'est pas pris en charge."
Mais cela vient peut-être de ma CheckedListBox ? Car elle affiche le chemin d'accès des fichiers (C\users\...\fichier.mp3)
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
19 juin 2010 à 08:30
Comme je vous l'ai expliqué, il ne faut que les noms des fichiers avec leur extension sinon cela ne fonctionne pas.
J'utilise une FilelistBox pour ouvrir les dossiers
Si vous ne l'avez pas allez dans Outils, choisir des élements dans la boite à outils et cocher FilelistBox. Ensuite mettez la dans votre Form

Il vous faudra 3 boutons
cmdopen_dossier, cmdcible, cmdcopy
3 label
lblsource, Lblcible, lblcount_1

Voici le code
Option Explicit On
Imports System.IO
Public Class Form1
    Dim i As Integer
    Private Sub cmdopen_dossier_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdopen_dossier.Click
        Dim a As New FolderBrowserDialog
        If a.ShowDialog = Windows.Forms.DialogResult.OK Then
            lblsource.Text = "" & a.SelectedPath
            FileListBox1.Pattern = "*.*"
            FileListBox1.Path = lblsource.Text
        End If
        'on affiche les données de la FileListBox dans la CheckedListBox1
        For i = 0 To FileListBox1.Items.Count - 1
            CheckedListBox1.Items.Add(FileListBox1.Items(i))
        Next i
        lblcount_1.Text = CheckedListBox1.Items.Count 'on compte les fichiers
    End Sub
    Private Sub cmdcible_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcible.Click
        Dim Ofd As New System.Windows.Forms.FolderBrowserDialog
        Ofd.ShowDialog()
        Lblcible.Text = Ofd.SelectedPath
        If Lblcible.Text = "" Then
            MessageBox.Show("Opération annulée par l'utilisateur", "Ouverture", MessageBoxButtons.OK, MessageBoxIcon.Information)
            Exit Sub
        End If
    End Sub
    Private Sub cmdcopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcopy.Click
        If lblsource.Text = Lblcible.Text Then 'si même chemin
            MessageBox.Show("Les répertoires entrés ne sont pas valides", "Copie impossible", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End If
        If lblsource.Text "" Or Lblcible.Text "" Then 'si vide
            MessageBox.Show("Les répertoires entrés ne sont pas valides", "Copie impossible", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
        End If
        If CheckedListBox1.CheckedItems.Count <> 0 Then
            'S'il y a des éléments cochés une boucle balaye les éléments cochés 
            '(collection CheckedItems) et affiche le numéro de l'élément DANS LA LISTE toutes lignes.
            Dim i As Integer
            For i = 0 To CheckedListBox1.CheckedItems.Count - 1
                My.Computer.FileSystem.CopyFile(lblsource.Text & "" & CheckedListBox1.CheckedItems(i).ToString, Lblcible.Text & "" & CheckedListBox1.CheckedItems(i).ToString, FileIO.UIOption.AllDialogs)
                'FileIO.UIOption.AllDialogs ouvre une boite de dialogue vous indiquant si le fichier existe déjà et si vous voulez le remplacer
            Next i
        End If
        MessageBox.Show("Opération terminée, vous trouverez votre dossier à cet emplacement: " & Lblcible.Text, "Copier", MessageBoxButtons.OK, MessageBoxIcon.Information)

    End Sub
End Class
0
Giggs56 Messages postés 13 Date d'inscription mardi 26 janvier 2010 Statut Membre Dernière intervention 3 août 2010
19 juin 2010 à 11:31
Ok ça fonctionne, merci beaucoup LePivert !
0
Rejoignez-nous