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 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
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

vb95 Messages postés 3480 Date d'inscription samedi 11 janvier 2014 Statut Non membre Dernière intervention 10 juillet 2024 169
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é .
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
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!!


--
Rejoignez-nous