XL 2019 Améliorer voire accélérer une Macro

pat66

XLDnaute Impliqué
bonjour le forum,

mes compétences étant très limitées, auriez vous la gentillesse de m'aider à améliorer cette macro que j'ai écrite mais qui a tendance à beuger en tout cas elle met du temps à s'exécuter. un grand merci pour votre aide, je suis convaincu qu'un expert va trouver pleins d'erreurs

VB:
Private Sub Worksheet_Change(ByVal Target As Range)  ' pour le bouton OCF la promo de la page Planing tréso (feuil10)
Application.ScreenUpdating = False
Application.EnableEvents = False

If Not Intersect([P35], Target) Is Nothing Then
    With [P36]
        .ClearContents
    End With
End If

If Worksheets("feuil1").Range("G153") = "oui" Then
Sheets("feuil2").Range("CP18,CP19,CP20,CP21,CP22,CP23").FormulaLocal = "=-W$312*2%" ' ou 0,02
Sheets("feuil2").Range("CP24,CP25,CP26").FormulaLocal = "=-W$312*2%"    ' ou 0,02
Sheets("feuil2").Range("CP27,CP28,CP29").FormulaLocal = "=-W$312*1%"    ' ou 0,01
Sheets("feuil3").Range("CP18,CP19,CP20,CP21,CP22,CP23").FormulaLocal = "=-W$312*2%"  ' ou 0,02
Sheets("feuil3").Range("CP24,CP25,CP26").FormulaLocal = "=-W$312*2%"   ' ou 0,02
Sheets("feuil3").Range("CP27,CP28,CP29").FormulaLocal = "=-W$312*1%" ' ou 0,01
Sheets("feuil4").Range("CP18,CP19,CP20,CP21,CP22,CP23").FormulaLocal = "=-W$312*2%"  ' ou 0,02
Sheets("feuil4").Range("CP24,CP25,CP26").FormulaLocal = "=-W$312*2%"   ' ou 0,02
Sheets("feuil4").Range("CP27,CP28,CP29").FormulaLocal = "=-W$312*1%" ' ou 0,01

Worksheets("feuil5").Shapes("Rectangle : coins arrondis 93").Fill.ForeColor.RGB = RGB(255, 192, 0)  
Worksheets("feuil5").Shapes("Rectangle : coins arrondis 93").TextFrame.Characters.Font.Color = RGB(0, 32, 96)
Worksheets("feuil5").Shapes("Rectangle : coins arrondis 93").Visible = True
Worksheets("feuil5").Shapes("Rectangle : coins arrondis 94").Visible = True
Worksheets("feuil5").Shapes("Rectangle : coins arrondis 94").Fill.ForeColor.RGB = RGB(32, 51, 91)   'Visible = True  
Worksheets("feuil5").Shapes("Rectangle : coins arrondis 94").TextFrame.Characters.Font.Color = RGB(255, 192, 0)

Worksheets("feuil6").Range("F43").FormulaLocal = "= 18"
Worksheets("feuil6").Shapes("Groupe 4").Visible = False
Worksheets("feuil6").Shapes("Groupe 21").Visible = False
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True

Else

Application.ScreenUpdating = False
Application.EnableEvents = False
Sheets("feuil2").Range("CP18,CP19,CP20,CP21,CP22,CP23").FormulaLocal = "=-W$312*1,75%" ' ou 0,0175
Sheets("feuil2").Range("CP24,CP25,CP26").FormulaLocal = "=-W$312*1,50%"   ' ou 0,0150
Sheets("feuil2").Range("CP27,CP28,CP29").FormulaLocal = "=-W$312*0,833%"   ' ou 0,00833
Sheets("feuil3").Range("CP18,CP19,CP20,CP21,CP22,CP23").FormulaLocal = "=-W$312*1,75%" ' ou 0,0175
Sheets("feuil3").Range("CP24,CP25,CP26").FormulaLocal = "=-W$312*1,50%"   ' ou 0,0150
Sheets("feuil3").Range("CP27,CP28,CP29").FormulaLocal = "=-W$312*0,833%"  ' ou 0,00833
Sheets("feuil4").Range("CP18,CP19,CP20,CP21,CP22,CP23").FormulaLocal = "=-W$312*1,75%" ' ou 0,0175
Sheets("feuil4").Range("CP24,CP25,CP26").FormulaLocal = "=-W$312*1,50%"   ' ou 0,0150
Sheets("feuil4").Range("CP27,CP28,CP29").FormulaLocal = "=-W$312*0,833%"  ' ou 0,00833

Worksheets("feuil5").Shapes("Rectangle : coins arrondis 94").DrawingObject.Interior.Color = RGB(255, 192, 0) 
Worksheets("feuil5").Shapes("Rectangle : coins arrondis 94").TextFrame.Characters.Font.Color = RGB(0, 32, 96)
Worksheets("feuil5").Shapes("Rectangle : coins arrondis 93").Fill.ForeColor.RGB = RGB(32, 51, 91)   'Visible = True 
Worksheets("feuil5").Shapes("Rectangle : coins arrondis 93").Fill.BackColor.RGB = RGB(128, 128, 128)  'Visible = True
Worksheets("feuil5").Shapes("Rectangle : coins arrondis 93").TextFrame.Characters.Font.Color = RGB(255, 192, 0)

Worksheets("feuil6").Range("F43").FormulaLocal = "= 15"
Worksheets("feuil6").Shapes("Groupe 4").Visible = False
Worksheets("feuil6").Shapes("Groupe 21").Visible = False
End If
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
End Sub
 
Solution
Bonjour,

La vraie question est : pourquoi les formules ne sont-elles pas écrites "en dur" dans les feuilles ?
Autrement dit, pourquoi réécrire les formules à chaque fois qu'on modifie le contenu de n'importe quelle cellule de la feuille ?

patricktoulon

XLDnaute Barbatruc
re
Bonjour
difficile dans ce contexte d'améliorer quoi que ce soit

ce que je peux dire
j'ai toujours eu du mal à comprendre pourquoi certains utilisateurs envoyait des formules dans les cellules par l'event change et c'est ce qui est pour moi absurde puisque que l'event change est sensé etre fait pour ça
autant envoyer le résultat du calcul au lieu de la formule(il y aura les calculs formule en moins )

en terme d’écriture de code : bon on pourrait faire des bloc with ,mais dans l'ensemble ça changerait pas grand chose

c'est si long que ça quand tu déclenche ça ?
 

pat66

XLDnaute Impliqué
bonjour patricktoulon,

non pas très long, mais on dirait que Application.ScreenUpdating = False n'a aucun effet sur la macro
Sinon, oui je pourrais envisager d'envoyer plutôt le résultat c'est une bonne piste et ca m'éviterais certainement de voir le rafraichissement de l'écran

merci
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

La vraie question est : pourquoi les formules ne sont-elles pas écrites "en dur" dans les feuilles ?
Autrement dit, pourquoi réécrire les formules à chaque fois qu'on modifie le contenu de n'importe quelle cellule de la feuille ?
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 250
Membres
103 165
dernier inscrit
thithithi78