Boucle For qui ne marche pas
G
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 SubBonjour,
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+
G
Ah ok!!!! Merci!
Bon je vais essayer de simplifier alors...