Excel VBA - Ajustement d'une macro

Bonjour, la macro ci-dessous sert à regrouper les données des différents fichier Excel comportant une feuille "Donnée", dans la feuille "Tableau".

Cependant, j'ai un problème. En effet, à chaque fois qu'une donnée est prise en compte, elle remplit une ligne et renvoie à la ligne suivante pour la prochaine donnée. Mais lorsque la macro change de fichier, elle recommence à inscrire les données à partir de la deuxième ligne parce qu'elle redémarre avec L = 2.

Ce qui fait que cette macro fonctionne pour le moment avec un fichier "Donnée" mais j'aimerais qu'elle fonctionne avec plusieurs.

Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+a
'
Dim CD As Workbook 'Variable CD (Classeur Destination)
Dim CA As String 'Variable CA (Chemin d'Accès)
Dim FD As Worksheet 'Variable FD (Feuille Destination)
Dim F As String 'Variable F (Fichier)
Dim CS As Workbook 'Variable CS (Classeur Source)
Dim FS As Worksheet 'Variable FS (Feuille Source)
Dim I As Byte 'Variable I (Lignes)
Dim J As Byte 'Variable J (Colonnes)
Dim DL As Byte 'Variable DL (Dernière Ligne)
Dim L As Integer 'Variable L (Lignes)

Application.ScreenUpdating = False 'Masque les rafraîchissements d'écran
Set CD = ThisWorkbook 'Définit le Classeur Destination
CA = ThisWorkbook.Path & "\" 'Définit le Chemin d'Accès
Set FD = CD.Worksheets("Tableau") 'Définit la Feuille Destination
F = Dir(CA & "*.xls*") 'Premier Fichier du dossier
Do While F <> "" 'Exécute tant qu'il existe des Fichiers
    If F <> CD.Name Then 'Condition : si le Fichier n'est pas le Classeur Destination ou le Fichier TrésorerieMantesVerte
        Set CS = Workbooks.Open(CA & F) 'Définit le Classeur Source
        Set FS = CS.Worksheets("Donnée") 'Définit la Feuille Source
  DL = FS.Range("C" & Rows.Count).End(xlUp).Row
  L = 2
  For J = 5 To 11
    For I = 3 To DL
      If FS.Cells(I, J) <> 0 Then
        FD.Cells(L, 1) = FS.Cells(2, J)
        FD.Cells(L, 2) = FS.Cells(I, 3)
        FD.Cells(L, 3) = FS.Cells(I, J)
        L = L + 1
      End If
    Next I
  Next J
        CS.Close False 'Ferme le Classeur Source sans enregistrer
    End If 'Fin de la condition
    F = Dir 'Fichier suivant
Loop 'Boucle
Application.ScreenUpdating = True 'Affiche les rafraîchissements d'écran
End Sub
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+a
'
Dim CD As Workbook 'Variable CD (Classeur Destination)
Dim CA As String 'Variable CA (Chemin d'Accès)
Dim FD As Worksheet 'Variable FD (Feuille Destination)
Dim F As String 'Variable F (Fichier)
Dim CS As Workbook 'Variable CS (Classeur Source)
Dim FS As Worksheet 'Variable FS (Feuille Source)
Dim I As Byte 'Variable I (Lignes)
Dim J As Byte 'Variable J (Colonnes)
Dim DL As Byte 'Variable DL (Dernière Ligne)
Dim L As Integer 'Variable L (Lignes)

Application.ScreenUpdating = False 'Masque les rafraîchissements d'écran
Set CD = ThisWorkbook 'Définit le Classeur Destination
CA = ThisWorkbook.Path & "\" 'Définit le Chemin d'Accès
Set FD = CD.Worksheets("Tableau") 'Définit la Feuille Destination
F = Dir(CA & "*.xls*") 'Premier Fichier du dossier
Do While F <> "" 'Exécute tant qu'il existe des Fichiers
    If F <> CD.Name Then 'Condition : si le Fichier n'est pas le Classeur Destination ou le Fichier TrésorerieMantesVerte
        Set CS = Workbooks.Open(CA & F) 'Définit le Classeur Source
        Set FS = CS.Worksheets("Donnée") 'Définit la Feuille Source
  DL = FS.Range("C" & Rows.Count).End(xlUp).Row
  L = 2
  For J = 5 To 11
    For I = 3 To DL
      If FS.Cells(I, J) <> 0 Then
        FD.Cells(L, 1) = FS.Cells(2, J)
        FD.Cells(L, 2) = FS.Cells(I, 3)
        FD.Cells(L, 3) = FS.Cells(I, J)
        L = L + 1
      End If
    Next I
  Next J
        CS.Close False 'Ferme le Classeur Source sans enregistrer
    End If 'Fin de la condition
    F = Dir 'Fichier suivant
Loop 'Boucle
Application.ScreenUpdating = True 'Affiche les rafraîchissements d'écran
End Sub
8tableau.xlsm (21.16 Ko)
7donnee.xlsx (9.38 Ko)

Bonjour,

déplace le

  L = 2

avant

Do While F <> "" 

Merci bien

Rechercher des sujets similaires à "vba ajustement macro"