Copie de plusieurs fichiers en VBA

Sur plusieurs forums, j'ai trouvé comment copier un fichier à partir d'une macro avec le code suivant :

Sub CopieFichier()

Dim FichierOriginal As String
Dim FichierCopie As String

FichierOriginal = "Source"
FichierCopie = "Destination"

FileCopy FichierOriginal, FichierCopie

End Sub

Ayant déjà pas mal de tests, j'en ai conclu (dites-moi si je me trompe) qu'on ne pouvait copier qu'un seul fichier à la fois. Du coup, j'ai un problème. Je dois réaliser une macro capable de copier plusieurs fichiers .xlsm avec un titre différent pour chaque fichier. Au départ, j'ai donc utilisé le code précédent en ajoutant l'extension *.xlsm, d'où :

Sub CopieFichier()

Dim FichierOriginal As String
Dim FichierCopie As String

FichierOriginal = "...\*.xlsm"
FichierCopie = "...\*.xlsm"

FileCopy FichierOriginal, FichierCopie

End Sub

Mais Excel m'indique qu'il y a une erreur de débogage dans ce cas-là. J'en ai donc conclu qu'on ne pouvait pas copier plusieurs fichiers en une seule fois.

S'il est possible de copier plusieurs fichiers en une seule fois, pouvez-vous m'orienter ? Peut-être existe-t-il une autre fonction VBA que je ne connais pas ?

Merci d'avance de votre aide

Il est possible de mettre dans un tableau, une Listbox ou une combo (exemples) le nom de tous les fichiers à sauvegarder et de le faire à l'aide d'une boucle qui appelle un à un les fichiers en question. Tu ne peux pas utiliser une étoile pour cela. En revanche, tu peux te servir de l'étoile pour lire, par exemple, tous les fichiers .xlsm d'un dossier.

For i = 1 to 3
    fichierOriginal = tablo(i)
    FileCopy fichierOriginal, fichierCopie
next i

ou

For i = 1 to 3
    FileCopy tablo(i), fichierCopie
next i

Votre méthode me paraît efficace pour faire ce que je veux. Mais je ne sais pas comment attribuer chaque case du tableau à un de mes fichiers. Faut-il utiliser un tableau dynamique ? De mon côté, j'ai écrit le code me permettant de boucler sur mes fichiers, le voici :

Sub BoucleFichiers()
    Dim Path As String
    Dim File As String
    Dim i As Integer

    'Définit le répertoire contenant les fichiers
    Path = "..."

    'Boucle sur tous les fichiers xlsm du répertoire
    File = Dir(Path & "*.xlsm")
    'Boucle sur tous les types de fichiers
    'Fichier = Dir(Path & "*.*")

    For i = 1 To 9
        FichierOriginal = File(i)
        FileCopy FichierOriginal, FichierCopie
    Next i

End Sub

Si vous pouviez m'orienter un peu plus s'il vous plaît, merci d'avance

Voici un exemple à partir d'un tableau :

Sub BoucleFichiers()
    Dim fichierOriginal As String, fichierCopie As String
    Dim cheminOriginal As String, cheminCopie As String
    Dim file As String, compt As Long, i As Integer
    Dim table() As String

    cheminOriginal = "..."
    cheminCopie = "..." ' Ce dossier doit exister, sinon il faudra le créer, ce qu'on ne fera pas ici

    ' Boucle
    file = Dir$(cheminOriginal & "\*.xlsm")
    Do While file <> ""
        ReDim Preserve table(compt)
        table(compt) = file
        file = Dir$
        compt = compt + 1
    Loop

    For i = 1 To UBound(table)
        fichierOriginal = cheminOriginal & "\" & table(i)
        fichierCopie = cheminCopie & "\" & table(i)
        FileCopy fichierOriginal, fichierCopie
    Next i
End Sub

Très bien, merci pour ton aide, je vais regarder de mon côté.

Rechercher des sujets similaires à "copie fichiers vba"