[VBA] Transfert de feuilles vers un autre classeur

cycyy

XLDnaute Nouveau
Bonjour à tous,

Je rencontre un problème pour copier/coller des onglets depuis différents classeurs vers un classeur "tiers" (tous ouverts dans la même application), je m'explique :
J'ouvre un certain nombre de classeurs (n-1 classeurs) dont il me faut récupérer les données, et donc copier chaque onglet vers mon classeur "tiers" (qui est mon classeur n, toujours ouvert en dernier). J'utilise le code suivant

Code:
Option Explicit
Sub transfert()

Dim MyArray() As String
Dim i As Integer, X As Byte
Dim j As Integer
Dim k As Integer
Dim nb As Integer
Dim n As Integer

Application.ScreenUpdating = False
Application.DisplayAlerts = False

n = Workbooks.Count
nb = Workbooks(n).Sheets.Count

For i = 1 To n - 1 'boucle jusqu'à l'avant dernier classeur, le dernier étant le classeur de destination des données

    Workbooks(i).Activate
    k = Workbooks(i).Worksheets.Count

        For j = 1 To k 'copie des onglets du classeur i
            ReDim Preserve MyArray(X)
            MyArray(X) = Sheets(j).Name
            X = X + 1
        Next j
        
Workbooks(i).Worksheets(MyArray).Copy before:=Workbooks(n).Sheets("Sheet1")

Next i

End Sub

L'execution de la macro se déroule parfaitement lors de la première boucle "i=1", les onglets du premier classeur sont collés dans le dernier classeur ouvert. Cependant pour i=2, une erreur se produit lors du collage des onglets (dernière ligne de la boucle i): "runtime 9 - subscript out of range".

Je ne comprends pas ce qui cloche, auriez-vous s'il vous plaît une idée du problème ?

Bonne journée
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 082
Messages
2 085 171
Membres
102 805
dernier inscrit
emes