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 SubAyant 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 SubMais 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 iVotre 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 SubSi 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 SubTrès bien, merci pour ton aide, je vais regarder de mon côté.