Boucle For qui ne marche pas

Bonjour,

je viens d'écrire le code ci-dessous. Il y a 3 boucles imbriquées. Quand j'exécute la macro, VBA me renvoit ce message: " Erreur de compilation: Next sans For" alors qu'il me semble bien que mon Next J renvoit à ma boucle For j = 13 To LRow.

Pouvez-vous m'aider car je suis bloqué?

Merci d'avance!

 Cette procédure va copier-coller tous les reports de fonds dans les répertoires des différents portefeuilles auxquels ils appartiennent
Private Sub StoreReports(WS As Worksheet, L_PDF_Row As Long, LRow As Long)

' Déclaration des variables
  Dim WB_File_Pf As Workbook
  Dim WB_File_Pf_WS_2 As Worksheet
  Dim WB_File_Pf_WS_2_LRow As Long
  Dim i, j, k, l As Long
  Dim Funds_Nb As Long
  Dim Fund_Name As String
  Dim Report_Path() As String
  Dim Report_Name As String
  Dim Pf_Folder_Name As String
  Dim fso As Object, Src$, Dest$

' Programmation

  Application.DisplayAlerts = False

' Stockage du nom du premier report dans la variable Report_Name
  For i = 13 To L_PDF_Row
    Report_Path = Split(WS.Cells(i, 2), "\")
    Report_Name = Report_Path(UBound(Report_Path))
    Report_Name = Left(Report_Name, Len(Report_Name) - 4)

'   Ouverture du 2ème onglet du fichier Excel du portefeuille
    For j = 13 To LRow
      Set WB_File_Pf = Workbooks.Open(WS.Cells(j, 3))
      Set WB_File_Pf_WS_2 = WB_File_Pf.Worksheets(2)
      WB_File_Pf_WS_2_LRow = Last_Row(WB_File_Pf_WS_2, 1, 1)

'     On compte le nombre de fonds que possède le portefeuille
      Funds_Nb = WB_File_Pf_WS_2_LRow - 6

'     On stocke le nom du répertoire dans <<All Reports>> correspondant au fichier Excel du portefeuille que l'on vient d'ouvrir
      WS.Activate
      Pf_Folder_Name = WS.Cells(j, 6)

'     Si le nom du report se trouve dans la liste de fonds du portefeuille
'     Alors on copie-colle le report dans le sous-répertoire du portefeuille qui se trouve dans le répertoire <<All Reports>>
      WB_File_Pf_WS_2.Activate
      l = 0
      k = 6
      While k <= WB_File_Pf_WS_2_LRow - 1
        Fund_Name = WB_File_Pf_WS_2.Cells(k, 1)
        If Report_Name = Fund_Name Then
          WS.Activate
          Set fso = CreateObject("Scripting.FileSystemObject")
          Src = WS.Cells(i, 2)
          Dest = WS.Cells(10, 6) & Pf_Folder_Name
          fso.CopyFile Src, Dest
          l = l + 1 ' On compte le nombre de reports qui sont copier-collés dans le répertoire du portefeuilles
        Else
          k = k + 1
          WB_File_Pf_WS_2.Activate
        End If
      Wend
      WB_File_Pf.Close

'     On affiche le nombre de reports qui ont été copier-collés dans le répertoire du portefeuilles
      WS.Activate
      WS.Cells(j, 7) = l

'     On affiche le nombre de fonds que possède le portefeuille
      WS.Cells(j, 5) = Funds_Nb

'     Si ces 2 nombres sont différents on colorie le nombre des reports copier-collés en rouge
'     S'ils sont égaux, on le colorie en vert
      If l <> Funds_Nb Then
      WS.Cells(j, 7).Font.Color = RGB(255, 0, 0)

      If l = Funds_Nb Then
      WS.Cells(j, 7).Font.Color = RGB(0, 255, 0)

    Next j

  Next i

  Application.DisplayAlerts = True

End Sub

Bonjour,

En fait c'est un message générique ça veut juste dire que ton truc est imbuvable : Le compilateur n'y retrouve pas ses petit !

For sans Next

ou

If sans End if

ou boucles

For

if

Next

end if mal imbriquées.

A+

Ah ok!!!! Merci!

Bon je vais essayer de simplifier alors...

Rechercher des sujets similaires à "boucle qui marche pas"