VBA - Accélérer une procédure assez lente

Bonsoir,

Par l'intermédiaire d'une macro de macros, j'ai mis en place 6 à 7 codes VBA à la suite les uns des autres et lorsque je déclenche la procédure complète, ça prend de 10 à 30 secondes - selon le PC sur lequel je travaille - pour que tout soit fini.

J'ai alors essayé de placer "Application.ScreenUpdating = False" tout au début de la procédure, ainsi que "Application.ScreenUpdating = True" tout à la fin, mais ça ne change apparemment rien.

Pas plus que "Application.Calculation = xlCalculationManual" et "Application.Calculation = xlCalculationAutomatic".

Avez-vous une idée des autres possibilités que j'ai afin d'accélérer ce déroulement ?

Aves mes bonnes salutations.

Bonsoir,

Peut être as-tu des macros événementielles qui s'exécute plusieurs fois à l'arrière plan.

Sans voir ton fichier ou tes codes ce n'est pas facile de te donner une bonne solution.

Amicalement

Dan

Dan,

Voici mon fichier, que j'ai dû zipper car il était trop volumineux :

https://www.excel-pratique.com/~files/doc/aaa_QUELLENSTEUER.zip

Tout au début, j'ai cette "Sub Macro_de_macros()" qui regroupe plusieurs codes.

Désolé, il y a beaucoup de commentaires inutiles.

Bonne soirée

Re,

remplace la macro Sub Importer_RepListeQuellensteuer() par celle ci-après

Sub Importer_RepListeQuellensteuer()
Application.ScreenUpdating = False
        Workbooks.Open Filename:="C:\Users\LACY\Documents\Yves\AG - PK Post\aaa_RepListeQuellensteuer_BASE.xls"
        Sheets("RepListeQuellensteuer").Move Before:=Workbooks("aaa_QUELLENSTEUER.xls").Sheets(1)
        Range("A:A,B:B,F:F").Delete Shift:=xlToLeft
        Range("I1") = "LEISTUNGS- ENDE"
        Range("J1") = "BEMERKUNG"
        Range("G1") = "BRUTTO- EINKUENFTE"
End Sub

Cette macro Sub BordsGris_Cadres(), essaye avec celle ci-dessous

Sub BordsGris_Cadres()
' Change la couleur et les cadres de la ligne 10
    Sheets("RepListeQuellensteuer").Select
    With Range("A10:J10")
    With .Interior
        .ColorIndex = 15
        .Pattern = xlSolid
    End With
    .RowHeight = 28.5
    .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlTop
        .WrapText = True
    .BorderAround ColorIndex:=xlAutomatic, LineStyle:=xlContinuous, Weight:=xlThin
    With .Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
End with
 End sub 

Je vois aussi une macro FUNCTION, là est probablement le problème. Elle s'éxécute constamment à chaque changement sur ta feuille.

Il faudrait suspendre le calcul par l'instruction Application.Calculation = xlCalculationManual puis mettre une instruction Calculate en fin de macro

Amicalement

Dan

Dan,

J’ai maintenant eu le temps de mettre en place et de tester tes trois propositions.

Sur un ordinateur bien précis, la procédure qui durait environ 30 secondes auparavant a été réduite à plus ou moins 20 secondes. C’est déjà pas mal.

Mais j’imaginais - tel que je l’avais lu dans un ouvrage sur le sujet - que l’on pouvait gagner bien plus de temps. As-tu alors l’impression que j’ai fait quelque chose de faux, que c’est toujours assez long comme déroulement ? Ou est-ce tout à fait normal que certaines procédures durent si longtemps ?

Au plaisir de te relire (ou qui que ce soit d’autre).

A supprimer

Ficelle déjà résolu

Mytå

Rechercher des sujets similaires à "vba accelerer procedure assez lente"