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

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 ?
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 ?
 
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
 
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 ?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour