popeyem
Habitué
Bonjour à tous
voici un nouveau "probleme" de vitesse d'execution de ma macro.
Synopsis: j'ai un classeur (1 seule feuille: ma macro!) qui boucle sur les fichiers xl du dossier pour effectuer du copier coller sous condition.
Sur ma feuille macro j'ai 2 boutons; 1Listbox; 4 checkbox. La macro marche mais elle est assez lente. (1 des causes vient du fait que les fichiers mettent du temps à s'ouvrir). Une bonne âme saura-t-elle déceler les améliorations de mon code à apporter ?
[cpp]Private Sub CommandButton2_Click()
Dim pays_source As Workbook, wb_targetPIE As ...
Dim ws_PIE As Worksheet, ws_OMB As Worksheet, ...
Dim compteur As Long, row_target As Integer
Dim Chemin As String, pays_a_copier As String
Chemin = ActiveWorkbook.Path
pays_a_copier = Dir(Chemin & "\" & "* 3 YP by CBU.xls")
Application.ScreenUpdating = False
''\\ GBU PIE
If CheckBox1 = True Then
If MsgBox("Vous êtes sur le point de charger les données des pays selectionnés sur CONSO PIE. Continuer?", vbYesNo) <> vbYes Then
Exit Sub
End If
Set wb_targetPIE = Workbooks.Open(Chemin & "\" & "CONSO PIE.xls")
Set ws_targetPIE = wb_targetPIE.Worksheets("LC")
For compteur = 0 To Me.ListBox1.ListCount - 1
row_target = ws_targetPIE.Range("A65536").End(xlUp).Row + 2 'aller ligne vide
If Me.ListBox1.Selected(compteur) Then
Set pays_source = Workbooks.Open(Chemin & "\" & pays_a_copier)
Set ws_PIE = pays_source.Worksheets("PIE")
If Application.WorksheetFunction.Sum(ws_PIE.Range("L37,AI37,BF37,CC37")) > 0 Then
ws_targetPIE.Rows(row_target & ":" & row_target + 39).Value = ws_PIE.Rows("11:50").Value
End If
pays_source.Close
End If
pays_a_copier = Dir()
Next
End If[/cpp]
Je n'ai mis qu'une check Box, les 3 autres etant identiques. Je sais y a bcp de If, j'ai trouvé que ça.
Merci bien pour vos conseils!
voici un nouveau "probleme" de vitesse d'execution de ma macro.
Synopsis: j'ai un classeur (1 seule feuille: ma macro!) qui boucle sur les fichiers xl du dossier pour effectuer du copier coller sous condition.
Sur ma feuille macro j'ai 2 boutons; 1Listbox; 4 checkbox. La macro marche mais elle est assez lente. (1 des causes vient du fait que les fichiers mettent du temps à s'ouvrir). Une bonne âme saura-t-elle déceler les améliorations de mon code à apporter ?
[cpp]Private Sub CommandButton2_Click()
Dim pays_source As Workbook, wb_targetPIE As ...
Dim ws_PIE As Worksheet, ws_OMB As Worksheet, ...
Dim compteur As Long, row_target As Integer
Dim Chemin As String, pays_a_copier As String
Chemin = ActiveWorkbook.Path
pays_a_copier = Dir(Chemin & "\" & "* 3 YP by CBU.xls")
Application.ScreenUpdating = False
''\\ GBU PIE
If CheckBox1 = True Then
If MsgBox("Vous êtes sur le point de charger les données des pays selectionnés sur CONSO PIE. Continuer?", vbYesNo) <> vbYes Then
Exit Sub
End If
Set wb_targetPIE = Workbooks.Open(Chemin & "\" & "CONSO PIE.xls")
Set ws_targetPIE = wb_targetPIE.Worksheets("LC")
For compteur = 0 To Me.ListBox1.ListCount - 1
row_target = ws_targetPIE.Range("A65536").End(xlUp).Row + 2 'aller ligne vide
If Me.ListBox1.Selected(compteur) Then
Set pays_source = Workbooks.Open(Chemin & "\" & pays_a_copier)
Set ws_PIE = pays_source.Worksheets("PIE")
If Application.WorksheetFunction.Sum(ws_PIE.Range("L37,AI37,BF37,CC37")) > 0 Then
ws_targetPIE.Rows(row_target & ":" & row_target + 39).Value = ws_PIE.Rows("11:50").Value
End If
pays_source.Close
End If
pays_a_copier = Dir()
Next
End If[/cpp]
Je n'ai mis qu'une check Box, les 3 autres etant identiques. Je sais y a bcp de If, j'ai trouvé que ça.
Merci bien pour vos conseils!