Macro très lente

Lameche15
Messages postés
156
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
15 septembre 2022
- 15 sept. 2021 à 07:40
Lameche15
Messages postés
156
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
15 septembre 2022
- 16 sept. 2021 à 12:09
Bonjour,

J'ai créé un planning annuel dont l'une de mes macros est très lente. (Changement de mois d'affichage)
Comment puis-je vous envoyer le fichier si cela intéresse qqn de me le regarder et voir si une piste d'amélioration est possible?

Cordialement
--

4 réponses

cs_Le Pivert
Messages postés
7822
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
16 septembre 2022
133
16 sept. 2021 à 10:55
Bonjour,

voir cela pour mesurer le temps d'exécution d'une macro:

https://excel-malin.com/faq/vba-faq/comment-mesurer-la-vitesse-des-macros-vba/

voir ceci pour diminuer le temps d'exécution d'une macro

https://docs.microsoft.com/fr-fr/office/vba/api/excel.application.screenupdating

1
vb95
Messages postés
3056
Date d'inscription
samedi 11 janvier 2014
Statut
Modérateur
Dernière intervention
22 septembre 2022
158
15 sept. 2021 à 15:40
Bonjour
L'envoi de fichier n'est pas spécialement conseillé sur Codes-Sources.
En expliquant ce que fait la macro et en montrant le code de celle-ci ( voir https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code pour montrer du code ) ceci devrait être solutionnable .
En mettant le plus de détails sur le code en question ( variables utilisées, explication sur les boucles internes, etc ... ) tu mettras toutes les chances de ton côté .
0
Lameche15
Messages postés
156
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
15 septembre 2022

Modifié le 16 sept. 2021 à 19:36
La macro suspecte est lancée par une liste déroulante dans la feuille excel.
On choisit le mois et ainsi la macro affiche le planning du mois sélectionné en masquant toutes les colonnes non concernées.
Le code est le suivant:

Private Sub ComboBox1_Change()
Dim Col As Integer
Dim mois, moisref As String

moisref = ComboBox1.Value
    Application.ScreenUpdating = False
    Cells.EntireColumn.Hidden = False
    If ComboBox1.Value <> "Tous" Then
        For Col = 4 To Cells(8, Columns.Count).End(xlToLeft).Column Step 1
        
        jourdeb = Format(Cells(8, Col).Value, "dd/mm/yyyy")
                mois = Cells(8, Col).Value
        mois = MonthName(Month("" & mois))
        'jourdebmois
        'jourfinmois
 '*******************************************************************
      mois = Application.Match(ComboBox1.Value, Sheets("Ferié").Range("D4:D15"), 0)

     jourdebmois = Format(DateSerial(Range("A3"), mois, 1), "dd/mm/yyyy")

     jourfinmois = Format(DateSerial(Range("A3"), mois + 1, 1) + 3, "dd/mm/yyyy")
        
        'MsgBox "du " & jourdebmois & " au " & jourfinmois
        
 '**********************************************************************
        'MsgBox "" & mois
            'If mois <> "" & ComboBox1.Value Then Cells(8, Col).Resize(, 1).EntireColumn.Hidden = True
            If Int(CDate(jourdeb)) < Int(CDate(jourdebmois)) Then
            Cells(8, Col).Resize(, 1).EntireColumn.Hidden = True
            End If
            
            If Int(CDate(jourdeb)) > Int(CDate(jourfinmois)) Then
            Cells(8, Col).Resize(, 1).EntireColumn.Hidden = True
            End If
            
        Next Col
    End If
    
  Call TextBox1_Change
  
End Sub


Pour info, j'utilise cette même macro dans un autre planning contenant moins de ligne (mais je ne vois pas où est l'impact!!?) et le changement est instantané.

MErci de vous pencher sur mon problème
0
Lameche15
Messages postés
156
Date d'inscription
mardi 9 septembre 2008
Statut
Membre
Dernière intervention
15 septembre 2022

16 sept. 2021 à 12:09
Pour info, j'utilise cette même macro dans un autre planning contenant moins de ligne (mais je ne vois pas où est l'impact!!?) et le changement est instantané.

En écrivant cela, j'ai eu l'idée de tester en supprimant tous les onglets de planning hebdomadaire et effectivement la macro tourne normalement.
En fait mon fichier devient trop lourd car chaque semaine je prends une photo de mon planning annuel (où sont gérées les absences) pour la coller dans le planning hebdomadaire correspondant. De cette manière si des changements sont portés dans le planning annuel ils sont automatiquement reportés dans le planning hebdo.
Je n'ai trouvé que ce moyen!!


--
0