Macro très lente

Bonjour,

Je joins mon fichier excel. Les formules et le peu de code sont terminés, j'ai un bouton pour changer des valeurs/calculs par année mais c'est très lent entre chaque changement, une idée de comment l'accélérer? Environ 16 à 20 secondes actuellement.

Je ne m'y connais pas trop en VBA...

(J'ai du supprimer pas mal de choses pour envoyer le fichier. Le dernier onglet descend jusqu'en 2030 normalement et il y a des graphiques en plus pour la visualisation des données. Enlever tout ça n'a pas modifié la vitesse d'exécution)

Merci d'avance,

Bastien

15tesyt.xlsm (0.99 Mo)

Bonjour Bastien88

Tu peux désactiver le calcul automatique le temps d'inscription des jours

Sub generer_calendrier()
  Application.Calculation = xlCalculationManual
  Application.ScreenUpdating = False

  annee = SpinButton_annee.Value
  'Suppression
  Range("A3:A380").ClearContents

  An = SpinButton_annee.Value
  L = 2
  For Mois = 1 To 12
    For J = 1 To Day(DateSerial(An, Mois + 1, 1) - 1)
      L = L + 1
      Range("A" & L + 8).Value = DateSerial(An, Mois, J)
    Next
  Next
  '
  Application.ScreenUpdating = treu
  Application.Calculation = xlCalculationAutomatic
End Sub

Ca permet d'aller nettement plus vite

@+

Bonjour,

Avec toutes les formules présentes dans le classeur, pas étonnant...

Passe en calcul manuel au début, puis en auto à la fin :

    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
    End With

et en fin :

Application.Calculation = xlCalculationAutomatic

Peut-être?

Oupsss, j'aurais dû, moi aussi, passer en "Manuel"...

Bonjour Bruno

Bonjour Bastien88

Tu peux désactiver le calcul automatique le temps d'inscription des jours

Sub generer_calendrier()
  Application.Calculation = xlCalculationManual
  Application.ScreenUpdating = False

  annee = SpinButton_annee.Value
  'Suppression
  Range("A3:A380").ClearContents

  An = SpinButton_annee.Value
  L = 2
  For Mois = 1 To 12
    For J = 1 To Day(DateSerial(An, Mois + 1, 1) - 1)
      L = L + 1
      Range("A" & L + 8).Value = DateSerial(An, Mois, J)
    Next
  Next
  '
  Application.ScreenUpdating = treu
  Application.Calculation = xlCalculationAutomatic
End Sub

Ca permet d'aller nettement plus vite

@+

C'est parfait ! Merci beaucoup!

Je comprenais pas ce qui prenait autant de temps à faire.

Bonne journée !

Rechercher des sujets similaires à "macro tres lente"