Demande d'optimisation d'un code VBA

Fermé
papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021 - 21 juin 2021 à 14:34
yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 - 22 juin 2021 à 12:35
Bonjour tout le monde,
qui pourrait m'aider à réduire le temps d'exécution de cette macro svp ?
Ca prend trop de temps pour s'exécuter.


Sub TurnOffStuff()
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayStatusBar = False
ActiveSheet.DisplayPageBreaks = False
End Sub



Sub TurnOnStuff()
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayStatusBar = True
ActiveSheet.DisplayPageBreaks = True
End Sub



Sub somprod()
Dim i As Double
Dim plage1, plage2, plage3, plage4 As Range
Worksheets("LR ASSURVIE 2021").Activate
Call TurnOffStuff
i = 4
Set plage1 = Sheets("SINISTRES assurvie").Range("AN2:AN300000")
Set plage2 = Sheets("SINISTRES assurvie").Range("AO2:A0300000")
Set plage3 = Sheets("SINISTRES assurvie").Range("AP2:AP300000")
Set plage4 = Sheets("SINISTRES assurvie").Range("Y2:Y300000")
Do While Cells(i, 2) <> ""
Cells(i, 17).Value = Application.SumIfs(plage4, plage1, Cells(i, 4), plage2, 1, plage3, 2021)
Loop
Call TurnOnStuff
End Sub


Merci cordialement !
A voir également:

2 réponses

yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 Ambassadeur 1 554
21 juin 2021 à 14:46
bonjour,
peux-tu donner suite, ou marquer comme résolues, les trois autres discussions que tu as ouvertes dans ce forum?
0
papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021
21 juin 2021 à 14:54
D'accord ce sera fai
0
yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 1 554 > papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021
22 juin 2021 à 12:35
quand?
0
yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 Ambassadeur 1 554
21 juin 2021 à 14:51
peux-tu donner quelques informations?
combien de lignes de données as-tu?
combien de temps cela prend-t-il?
dans quel contexte fais-tu cela?
dois-tu exécuter cela plusieurs fois?
0
papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021
21 juin 2021 à 14:57
Le fichier "SINISTRES assurvie" contient 300000 lignes
Le fichier dans lequel se fait les calculs contient 390 lignes
Cela ne vient pas jusqu'à présent
L'objectif est de calculer la somme de la plage Y avec les paramètres
0
yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 1 554 > papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021
21 juin 2021 à 15:08
tu as donc 390 valeurs pour i?

il est certainement préférable de faire une boucle sur les 300000 lignes. pour chaque ligne, trouver la ligne correspondante, et ajouter la valeur à la somme.

il est dans doute utile de d'abord trier les deux tableaux.
0
yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024 1 554 > yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024
Modifié le 21 juin 2021 à 15:21
il faut sans doute éliminer d'abord toutes les lignes qui ne répondent pas à ce critère:
plage2, 1, plage3, 2021
.
combien en reste-t-il?
0
papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021 > yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024
21 juin 2021 à 16:35
Je comprends pas svp
0
papish_4732 Messages postés 28 Date d'inscription lundi 7 juin 2021 Statut Membre Dernière intervention 22 juin 2021 > yg_be Messages postés 23350 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 novembre 2024
21 juin 2021 à 16:45
Ces lignes servent à un autre calcul dans une autre plage de cellules
0